1.下载
下载官网 GitHub:https://github.com/alibaba/Sentinel
将其拷贝到一个你能记住的非中文目录,然后运行命令:
# 使用jdk8
java -jar sentinel-dashboard-1.8.1.jar
然后访问:localhost:8080即可看到控制台页面,默认的账户和密码都是sentinel
更多详情使用参考官方文档:https://github.com/alibaba/Sentinel/wiki
2.微服务整合Sentinel
- 引入sentinel依赖:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
- 配置控制台地址:
spring:
cloud:
sentinel:
transport:
dashboard: localhost:8080 # sentinel控制台地址
- 访问微服务的任意端点,触发sentinel监控
3.Feign整合Sentinel
SpringCloud中,微服务调用都是通过Feign来实现的,因此做客户端保护必须整合Feign和Sentinel。
- 修改OrderService的application.yml文件,开启Feign的Sentinel功能
feign:
sentinel:
enabled: true #开启Feign的Sentinel功能
- 给FeignClient编写失败后的降级逻辑
方式一:FallbackClass,无法对远程调用的异常做处理
方式二:FallbackFactory,可以对远程调用的异常做处理,我们选择这种
在feing-api项目中定义类,实现FallbackFactory:
在feing-api项目中的DefaultFeignConfiguration类中将UserClientFallbackFactory注册为一个Bean:
在feing-api项目中的UserClient接口中使用UserClientFallbackFactory:
4.授权规则
Sentinel是通过RequestOriginParser这个接口的parseOrigin来获取请求的来源的
例如,我们尝试从request中获取一个名为origin的请求头,作为origin的值:
我们还需要在gateway服务中,利用网关的过滤器添加名为gateway的origin头:
spring:
cloud:
gateway:
default-filters:
- AddRequestHeader=origin, gateway #添加名为origin的请求头,值为gateway