风暴俱乐部|Sentinel:分布式系统流量防卫兵( 二 )
链路:只记录指定链路上的流量 。 我写了两个测试接口test-a 和 test-b , 以及一个service方法common() , 代码如下:
@GetMapping("test-a")public String testa(){testService.common();return "test-a";}@GetMapping("test-b")public String testb(){testService.common();return "test-b";}@SentinelResource("common")public String common(){log.info("common.....");return "common";}
此时我们设置链路规则:
现在 , 我们请求/test-a请求 , 当超过阈值时就被限流了 , 但是/test-b不受影响 。
四、降级规则什么是降级?平均响应时间(秒级统计)超出阈值且在时间窗口内通过的请求大于某一值 , 就会触发降级(断路器打开) , 时间窗口结束 , 就会关闭降级 。 我们看一下sentinel控制台:
关于降级源码 , 因为篇幅太长的缘故 , 我把图贴出来 , 感兴趣的朋友可以去看看:
五、代码配置规则上面 , 我们都是在控制台配置规则 , 这儿我们用代码演示配置流控规则 , 只要编写这段代码就行啦 。 另外 , 其他规则配置方式可参考:如何使用#流量控制规则-flowrule
private void initFlowQpsRule() {List
到这儿呢 , 我们已经可以配置一些规则来保证我们的应用不被猪队友拖死了哈哈 , 但是大家肯定想知道Sentinel 是如何与控制台通信的 , 控制台是如何获取到微服务的监控信息?又是如何将配置规则发送到各个微服务的呢?
六、Sentinel与控制台通信原理Sentinel 是如何与控制台通信的 , 大家先看一幅图:
首先 , 微服务需要集成sentinel-transport-simple-http模块 , 每10秒发送一次心跳到Sentinel-Dashboard , 这样控制台就可以获取到微服务的监控信息了;同理 , 当控制台配置规则之后 , 又会将规则发送各个微服务 。 注册/心跳发送的源码大家可以到com.alibaba.csp.sentinel.transport.heartbeat中看一下:
public SimpleHttpHeartbeatSender() {List
通信api的源码 , 大家可以到com.alibaba.csp.sentinel.command.handler的实现类看一下 。
七、Feign整合Sentinel1、整合很简单 , 加配置即可
feign:sentinel:#为feign整合Sentinelenabled: true
2、修改代码 , 编写fallback处理类 , 并在原来的feignclient注解上添加fallback属性 , 如下面代码所示 , 这样 , 当内容中心在调用用户中心接口出现流控或者降级时 , 会默认返回一个“默认用户”的User 。
- M体育地带|青春风暴!意媒排出米兰U23首发阵容
- 国内赛事|最具眼光的俱乐部!IG.Y再次夺得夏季赛冠军 焕烽发文祝贺
- 维特尔维斯塔潘|青春风暴席卷F1意大利站领奖台 加斯利能跟随维特尔维斯塔潘的步伐吗?
- 青年|兰陵王:我打不过风暴龙王,凯:我勉强打得过。他:这不难很轻松
- 舌尖尝美食美味|7000万欧!曼城即将签约意甲铁卫,双方达个人协议只差俱乐部点头
- 【】为避免与心爱俱乐部对簿公堂 梅西宣布暂留巴萨一年
- 淘易家居|梅杰里签约北控,李洪庆却“拆东墙补西墙”,俱乐部引援自相矛盾
- 参考消息网|梅西宣布暂留巴萨一年,为避免与心爱俱乐部对簿公堂
- 巴萨俱乐部|又一个贝尔?33岁巨星同意与巴萨解约!提1要求:必须补偿4900万薪水
- 飞象新零售俱乐部第51期游学之走进直播基地,抓住蓝海商机