微服务系统保障选择Hystrix还是Sentinel?

本文探讨了从Hystrix迁移到Sentinel的过程,分析了Hystrix在线程池隔离和信号量隔离机制下token传递的问题,并介绍了Sentinel在资源保护、限流和降级方面的优势。

Hystrix

在spring cloud系统中,随着业务量的增加,默认选用Hystrix作为系统的熔断降级方案。由于,系统中使用security jwt方式做权限认证,服务之间feign使用RequestTemplate在header中传递token。开启Hystrix后,由于默认的隔离机制是线程池,在调用下游服务时,会重新创建线程,RequestContextHolder通过ThreadLocal无法获取token。如何让token传递到下游服务呢?

  1. 可以使用hystrix信号量的机制进行服务的容错,该种方式超时控制会失效,如果下游服务超时或者崩溃,过多的请求访问都会阻塞,造成服务雪崩。一般都不推荐该种方式。
  2. 扩展Hystrix在创建新的线程时,把当前线程上下文存储的数据设置到新的线程。可以参考开启hystrix:feign.hystrix.enabled=true时, RequestContextHolder.getRequestAttributes()为空

以上两种方式都感觉不是很完美,于是,决定使用Sentinel进行替换。

Sentinel

Sentinel也能实现服务的熔断和降级。能够对并发线程数和超时时间进行控制,在功能上实现Hystrix一致的效果。

Sentinel对于资源的熔断和降级操作是通过定义拦截器,采用责任链的模式实现。Sentinel 的核心骨架,将不同的 Slot 按照顺序串在一起(责任链模式),从而将不同的功能(限流、降级、系统保护)组合在一起。slot c

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值