1.微服务保护
微服务保护是确保微服务架构可靠、稳定和安全的策略与技术。
在可靠性上,限流是控制进入微服务的请求数量,防止流量过大导致服务崩溃。比如电商促销时对商品详情服务进行流量限制。熔断是当被调用的微服务故障过多或响应过慢时,暂停对它的调用,避免资源浪费和故障蔓延。
在稳定性方面,有负载均衡来分配请求,让各个微服务实例合理承担任务。
从安全角度看,通过认证和授权来控制对微服务的访问,只有合法用户和经过许可的操作才能访问微服务。
微服务保护的技术有很多,但目前国内比较常用的的是Sentinel
2.Sentinel介绍
Sentinel是阿里巴巴开源的一款服务保护框架,目前已经加入SpringCloudAlibaba中。
官方网站: home | Sentinel
Sentinel 的使用可以分为两个部分:
-
核心库(Jar包):不依赖任何框架/库,能够运行于 Java 8 及以上的版本的运行时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持。在项目中引入依赖即可实现服务限流、隔离、熔断等功能。
-
控制台(Dashboard):Dashboard 主要负责管理推送规则、监控、管理机器信息等。
3.搭建Sentinel控制台步骤
3.1. 下载jar包
下载地址:https://github.com/alibaba/Sentinel/releases
这里直接使用黑马商城资料中已提供好版本:
3.2. 运行
将jar包放在任意非中文、不包含特殊字符的文件夹目录下,重命名为sentinel-dashboard.jar
并且在该文件夹下创建一个text文本文档,然后把运行命令放入该文本中,最后将该文本的后缀名改为bat,这样一来就不用每次都在cmd中运行命令,只需要双击该文本文档运行即可
3.2.1 Sentinel运行命令
java -Dserver.port=8090 -Dcsp.sentinel.dashboard.server=localhost:8090 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar
点击文本文档运行
3.3 访问
访问http://localhost:8090页面,就可以看到sentinel的控制台了:
需要输入账号和密码,默认都是:sentinel
登录后,即可看到控制台,默认会监控sentinel-dashboard服务本身:
4. 微服务整合
在cart-service模块中整合Sentinel,连接到sentinel-dashboard控制台,步骤如下:
4.1 导入依赖
代码如下:
<!--sentinel-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
4.2 配置控制台
修改application.yaml文件,包括打开Sentinel的请求方式前缀,内容如下:
代码如下:
spring:
cloud:
sentinel:
transport:
dashboard: localhost:8090 # sentinel控制台地址
http-method-specify: true # 开启http方法级别限流
4.3 访问cart-service端点
重启服务,然后访问查询购物车接口,sentinel的客户端就会将服务访问的信息提交到sentinel-dashboar控制台。
然后就可以看到并展示出统计信息:
簇点链路,就是单机调用链路,是一次请求进入服务后经过的每一个被Sentinel监控的资源。
点击簇点链路菜单,就可以看到下面的页面:
说明我们将黑马商城中对应的操作请求方式都拿到了,这样也便于我们进行观察与测试
到这里,我们整个Sentinel就搭建完成了,并且同过微服务进行了一个整合,很好的用到了我们的项目中去!