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
本文介绍了如何下载并运行Sentinel控制台,集成Sentinel到微服务中进行流量控制,以及如何在Feign客户端中启用Sentinel进行服务间调用保护,并提供了配置示例和降级策略的编写方法。同时,讲解了如何设置授权规则来识别请求来源,并在网关层添加自定义请求头以实现这一功能。


被折叠的 条评论
为什么被折叠?



