Sentinel

月伴飞鱼 2024-11-15 13:15:23
框架相关
支付宝打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者!

Sentinel是面向分布式服务架构的高可用流量控制组件。

主要以流量为切入点,从流量控制、熔断降级、系统自适应保护等多个维度来帮助用户保障微服务的稳定性。

官网:https://sentinelguard.io/

熔断降级

由于调用关系的复杂性,如果调用链路中的某个资源出现了不稳定,最终会导致请求发生堆积。

SentinelHystrix 的原则是一致的:

当调用链路中某个资源出现不稳定,例如,表现为 timeout,异常比例升高的时候,则对这个资源的调用进行限制,并让请求快速失败。

  • 避免影响到其它的资源,最终产生雪崩的效果。

在限制的手段上,SentinelHystrix 采取了完全不一样的方法。

Hystrix 通过 线程池 的方式,来对依赖进行了隔离。

  • 这样做的好处是资源和资源之间做到了最彻底的隔离。

缺点是除了增加了线程切换的成本,还需要预先给各个资源做线程池大小的分配。

Sentinel 对这个问题采取了两种手段:

通过并发线程数进行限制:

  • 当线程数在特定资源上堆积到一定的数量之后,对该资源的新请求就会被拒绝。
  • 堆积的线程完成任务后才开始继续接收请求。

通过响应时间对资源进行降级:

  • 除了对并发线程数进行控制以外,Sentinel 还可以通过响应时间来快速降级不稳定的资源。
  • 当依赖的资源出现响应时间过长后,所有对该资源的访问都会被直接拒绝,直到过了指定的时间窗口之后才重新恢复。

单机限流

限流受到机器数量的影响

负载不均衡

RPC框架做的负载均衡是有同机房优先策略的,这就导致不同机器的流量可能会很不均衡。

集群限流

集群限流和单机限流最大的区别就是单机模式直接在本地生成,但是集群为了做全局调度,需要有一个统一的Token发放机制。

支付宝打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者!