sentinel简介

作者: Audience0 | 来源:发表于2019-07-13 11:05 被阅读0次

    sentinel是面向分布式服务框架的轻量级流量控制框架,主要以流量为切入点,从流量控制,熔断降级,系统负载保护等多个维度来维护系统的稳定性.

    sentinel历史
    2012年,sentinel诞生,主要功能为入口流量控制
    2013-2017年,sentinel在阿里集团内部使用.
    2018年开源.


    sentinel基本概念
    资源:
    资源是sentinel的关键概念,它可以是Java应用程序中的任何内容,例如由应用程序提供的服务,或由应用程序调用其他应用提供的服务,甚至可以是一段代码.
    规则:
    围绕资源的实时状态设定的规则,可以包括流量控制规则,熔断降级规则,以及系统保护规则,所有规则都可以动态实时调整.


    流量控制
    流量控制在网络传输中是一个常用的概念,它用于调整网络包的发送数据.

    sentinel流量控制设计理念
    流量控制有内下几个角度:
    1.资源的调用关系,例如资源的调用链路,资源和资源之间的关系
    2.运行指标,例如QPS,线程池,系统负载等
    3.控制的效果,例如直接限流,冷启动,排队


    熔断降级
    sentinel和hystrix的原则一致,当调用链路中某个资源出现不稳定,例如,timeout,异常比例升高的时候,则对这个资源的调用进行限制,并让请求快速失败,避免影响到其他资源.

    熔断降级设计理念
    在限制的手段上,sentinel和hystrix采取了完全不一样的方法.

    Hystrix通过线程池的方式,来对依赖(对应sentinel中的资源)进行隔离.这样做的好处是资源和资源之间做到了最彻底的隔离.缺点是除了增加了线程切换的成本,还需要预先给各个资源做线程池大小的分配.

    Sentinel有两种方式
    1.通过并发线程数进行限制
    Sentinel通过限制资源并发线程的数量,来减少不稳定资源对其他资源的影响.这样不但没有线程切换的损耗,也不需要预先分配线程池大小.当某个资源出现不稳定的情况下,例如相应时间变长,对资源的直接影响就是会造成线程数的逐步堆积.当线程数在特定资源上堆积到一定的数量之后,对该资源的新请求就会被拒绝.堆积的线程完成任务后才开始继续接受请求.
    2.通过响应时间对资源进行降级
    除了对并发线程数进行控制以外,sentinel还可以通过响应时间来快速降级不稳定的资源.当依赖的资源出现响应时间过长后,所有对资源的访问都会被直接拒绝,直接过了指定的时间之后才重新恢复.


    系统负载保护
    sentinel同时对系统的维度提供保护,防止雪崩.当系统负载较高的时候,如果还持续让请求进入,可能会导致系统崩溃,无法响应.在集群环境下,网络负载均衡会把本应这台机器承载的流量转发到其他机器上去.如果这个时候其它机器也处于一个边缘状态,这个增加的流量就会导致这台机器也崩溃,最后导致整个集群不可用.

    相关文章

      网友评论

        本文标题:sentinel简介

        本文链接:https://www.haomeiwen.com/subject/ehspkctx.html