一、Sentinel是什么
Sentinel 是面向分布式服务架构的流量控制组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。
Sentinel包含两个部分,资源和规则
- 资源:
只要通过 Sentinel API 定义的代码,就是资源
。能够被 Sentinel 保护起来。大部分情况下,可以使用方法签名,URL,甚至服务名称作为资源名来标示资源。 - 规则:
围绕资源的实时状态设定的规则,可以包括流量控制规则、熔断降级规则以及系统保护规则
。所有规则可以动态实时调整。
二、Sentinel的主要特性
看官网上的一张图
- 黄色:控制台的配置;
- 绿色:sentinel可以实现的功能;
- 蓝色:代表可以和哪些框架做融合;
- 紫色:适配的注册中心有哪几个;
从上图概括一下Sentinel和Hystrix一样,为了保护微服务,实现服务降级、服务熔断、服务限流。
- 服务降级:类似于服务挂掉之后,显示服务器忙,请稍后再试,不让客户端等待并立刻返回一个友好提示,类似于fallback。如程序运行异常、超时、服务熔断触发服务降级、线程池/信号量打满也会导致降级
- 服务熔断:类比保险丝达到最大请求访问后,直接拒绝访问,拉闸限电,然后调用服务降级的方法并返回友好提示,就是保险丝
- 服务限流:高并发操作,严禁流量一起过来拥挤,大家排队,一秒钟N个,有序进行
三、sentinel、Hystrix、resilience4j的简单对比
resilience4j是官方推荐代替Hystrix方案,不过从下图提供的功能来看,Sentinel更加完善