阿里限流神器Sentinel夺命连环 17 问? (11)

修改ruleProvider、rulePublisher的依赖,修改后的代码如下:

@Autowired //使用nacos的依赖 @Qualifier("flowRuleNacosProvider") private DynamicRuleProvider<List<FlowRuleEntity>> ruleProvider; @Autowired //使用nacos的依赖 @Qualifier("flowRuleNacosPublisher") private DynamicRulePublisher<List<FlowRuleEntity>> rulePublisher;

5、注意nacos的相关配置

com.alibaba.csp.sentinel.dashboard.rule.nacos.NacosConfigUtil这个工具类中对应的是限流规则在nacos中的一些配置项,有groupId、dataId...对应的配置如下:

阿里限流神器Sentinel夺命连环 17 问?

需要两边统一,可以自己修改。

com.alibaba.csp.sentinel.dashboard.rule.nacos.NacosConfig这个类中有个方法如下图:

阿里限流神器Sentinel夺命连环 17 问?

默认指定的nacos地址是本地的,这个需要修改。

6、完成

以上步骤已经改造了sentinel控制台的流控规则,打包启动控制台代码,命令如下:

mvn clean install -DskipTests=true -pl sentinel-dashboard -am

启动后在控制台添加流控规则,可以看到也会同步推送到nacos,包括增删改。

其他规则修改也很简单,照葫芦画瓢,这里就不再详细说了,后面会单独出一篇文章详细说一下。

16、集群流控如何做?

首先一个简单的问题:为什么需要集群流控?单机流控不香吗?原因如下:

对于微服务要想保证高可用,必须是集群,假设有100个集群,那么想要设置流控规则,是不是每个微服务都要设置一遍?维护成本太高了

单体流控还会造成流量不均匀的问题,出现总流控阈值没有达到某些微服务已经被限流了,这个是非常糟糕的问题,因此实际生产中对于集群不推荐单体流控。

那么如何解决上述的问题呢?sentinel为我们提供了集群流控的规则。思想很简单就是提供一个专门的server来统计调用的总量,其他的实例都与server保持通信。

集群流控可以精确地控制整个集群的调用总量,结合单机限流兜底,可以更好地发挥流量控制的效果。

集群流控中共有两种身份:

Token Client:集群流控客户端,用于向所属 Token Server 通信请求 token。集群限流服务端会返回给客户端结果,决定是否限流。

Token Server:即集群流控服务端,处理来自 Token Client 的请求,根据配置的集群规则判断是否应该发放 token(是否允许通过)。

sentinel的集群限流有两种模式,分别如下:

独立模式(Alone):即作为独立的 token server 进程启动,独立部署,隔离性好,但是需要额外的部署操作。独立模式适合作为 Global Rate Limiter 给集群提供流控服务。

嵌入模式(Embedded):即作为内置的 token server 与服务在同一进程中启动。在此模式下,集群中各个实例都是对等的,token server 和 client 可以随时进行转变,因此无需单独部署,灵活性比较好。但是隔离性不佳,需要限制 token server 的总 QPS,防止影响应用本身。嵌入模式适合某个应用集群内部的流控。

下面就以嵌入模式为例介绍一下如何配置。

就以sentinel-openfeign-provider9009这个模块作为演示,直接启动三个集群,端口分别为9009、9011、9013,如下图:

阿里限流神器Sentinel夺命连环 17 问?

启动成功,在sentinel控制台将会看到有三个实例已经被监控了,如下图:

阿里限流神器Sentinel夺命连环 17 问?

此时只需要在控制台指定一个服务为token server,其他的为token client,集群流控->新增token server,操作如下图:

阿里限流神器Sentinel夺命连环 17 问?

选取一个作为服务端,另外两个作为客户端,此时就已经配置好了,如下图:

阿里限流神器Sentinel夺命连环 17 问?

此时就可以添加集群流控规则了,可以在sentinel控制台直接添加,也可以通过Nacos直接配置,下图是通过Nacos配置的,如下图:

阿里限流神器Sentinel夺命连环 17 问?

Nacos推送成功后将会在sentinel控制台看到这条流控规则的配置,如下图:

阿里限流神器Sentinel夺命连环 17 问?

OK,至此集群流控到这儿就介绍完了,配置好之后可以自己试一下效果,陈某就不再演示了。

官方文档:https://github.com/alibaba/Sentinel/wiki/集群流控

17、网关限流如何配置?

这一块内容在后续介绍到网关的时候会详细讲,这里就不再细说了,有想要了解的可以看官方文档。

官方文档:https://github.com/alibaba/Sentinel/wiki/网关限流

18、整合openFeign如何实现熔断降级?

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzzxyf.html