![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
服务降级,限流
普通网友
这个作者很懒,什么都没留下…
展开
-
服务熔断中间件对比 Hystrix 对比 Sentinel
第一篇回顾:Dubbo 的流量防卫兵 | Sentinel如何通过限流实现服务的高可用性 - 传送门第二篇回顾:RocketMQ 的保险丝| Sentinel 如何通过匀速请求和冷启动来保障服务的稳定性 - 传送门Sentinel 是阿里中间件团队研发的面向分布式服务架构的轻量级高可用流量控制组件,于今年7月正式开源。Sentinel 主要以流量为切入点,从流量控制、熔断降级、系统...原创 2019-12-20 11:54:32 · 779 阅读 · 0 评论 -
服务保障组件Rhino 简介
Rhino是一个服务保护平台, 提供故障模拟、降级演练、服务熔断、服务限流等功能。服务保护平台Rhino是由技术工程部基础架构团队研发并维护的一个服务保护平台, 提供故障模拟、降级演练、服务熔断、服务限流及sop预案等功能。Rhino一词来自于犀牛的英文,用它坚硬的独角捍卫着领土,如同Rhino组件保障着自己所在服务的稳定性Rhino 设计1.1管理端1、展示当前rh...原创 2019-09-07 11:30:11 · 1277 阅读 · 0 评论 -
服务保障组件 核心功能分析Clinet 包
annotation : 定义了一些常用功能注解, 包括缓存,降级,故障注入,限流,重试,线程池等cache:实现了缓存功能,包括基于本地内存实现(ConcurrentHashMap)和基于Squirrel实现circuit :熔断功能实现,核心子功能包括 降级,监听器, 熔断恢复,信号量,触发器等config : 配置相关的实现 (lion)dispatcher : Rhin...原创 2019-09-07 11:34:47 · 153 阅读 · 0 评论 -
服务保障组件 熔断实现01
核心接口CircuitBreaker,提供了核心方法的声明,如下1.enable : 判断该熔断器是否是可用的2.getStatus:获取熔断器状态3.allowRequest: 判断是否允许请求执行4.setSuccess: 标记执行成功的request5.setFailed : 标记失败的request6.complete:熔断执行完毕7.setCircui...原创 2019-09-07 11:49:34 · 201 阅读 · 0 评论 -
服务保障组件 熔断实现02
熔断器实现降级策略 ,调用degradeStrategy.degrade() 方法核心接口为DegradeStrategy核心实现为DefaultDegradeStrategy,调用各种降级策略的degrade方法执行再看熔断监听器触发器CircuitBreakerListenerTrigger如果熔断监听器列表不为空,就初始化熔断监听器上下文,然后循环熔断监听器,...原创 2019-09-07 15:45:37 · 142 阅读 · 0 评论 -
服务保障组件rhino 限流实现01
核心接口RequestLimiter,声明了一些接口方法工厂类做了一些初始化工作1.初始化单个限流器实例2.初始化一个限流器组3.初始化一个集群限流器组4.初始化一个多维度限流器featureRequestLimiter核心接口为requestLimiter先看下一个实现SingleRequestLimiter1.首先判断属性如果不是激活的,就直接返回...原创 2019-09-07 17:53:51 · 288 阅读 · 0 评论 -
服务保障组件rhino 限流实现02
再看下另外一个核心的限流实现 特征限流器FeatureRequestLimiter1.如果特征为空,或者属性不是激活的,直接返回true,代表尝试获取成功2.从属性properties中获取限流规则3.循环获取的限流规则列表,根据每个限流规则获取限流策略limitStrategy4.从属性中获取的限流规则limiterRule,判断和入参特征feature是否匹配5.如...原创 2019-09-07 23:39:06 · 211 阅读 · 0 评论 -
服务保障组件rhino 限流实现03
本文重点看一下限流器rateLimiter先看下具体的一个限流实现guavaRateLimiter1.首先获取超时时间,然后检查入参permits必须大于02.调用acquire判断能否获取,验证不超时...原创 2019-09-08 00:18:19 · 188 阅读 · 0 评论 -
服务保障组件 重试实现01
核心接口Retry实现DefaultRetry直接看doExecute方法1.判断重试属性retryProperties是否是active2.如果是active,开启cat的事务3.执行onOpen,也就是循环所有的retryListeners,打开监听器4.调用canRetry判断当前能否重试,调用properties的canRetry 5.先看下re...原创 2019-09-09 21:27:56 · 92 阅读 · 0 评论