Sentinel官网:https://sentinelguard.io/zh-cn
Sentinel:Sentinel是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量控制、流量路由、熔断降级、系统自适应保护等多个维度来帮助用户
保障微服务的稳定性Sentinel与Hystrix对比
相同:Sentinel和Hystrix的原则是一致的:当检测到调用链路中某个资源出现不稳定的表现,例如请求响应时间长或异常比例升高的时候,则对这个资源的调用进行限制,让请求快速失败,避免影响到其它的资源而导致级联故障
不同:
1)限制方式区别:
Hystrix通过线程池隔离的方式,来对依赖(在Sentinel的概念中对应 资源)进行了隔离。这样做的好处是资源和资源之间做到了最彻底的隔离。缺点是除了增加了线程切换的成本(过多的线程池导致线程数目过多),还需要预先给各个资源做线程池大小的分配。
Sentinel:通过并发线程数进行限制,在源头上进行限制
通过响应时间对资源进行降级,当依赖的资源响应时间过长,所有对该资源的访问都会被拒绝,知道过了指定时间窗口之后才重新恢复
2)是否有控制台
Sentinel提供一个轻量级的开源控制台,它提供机器发现以及健康情况管理、监控(单机和集群),规则管理和推送的功能。另外,鉴权在在产环境中也必不可少。而Hystrix需要自己搭建监控平台dashboard。Hystrix没有提供UI界面进行服务熔断、服务降级等配置(使用的是@HystrixCommand注解来进行参数设置,会造成代码入侵)Sentinel的特性
丰富的应用场景:Sentinel承接了阿里巴巴近10年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。
完备的实时监控:Sentinel同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至500台以下规模的集群的汇总运行情况。
广泛的开源生态:Sentinel提供开箱即用的与其它开源框架/库的整合模块,例如与Spring Cloud、Dubbo的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入Sentinel。
完善的SPI扩展点:Sentinel提供简单易用、完善的SPI扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理、适配动态数据源等。
Sentinel的主要特性
Sentinel下载安装部署
1.下载网址: Releases · alibaba/Sentinel · GitHub,下载所需要的jar包
2.将该jar包放到一个非中文的目录下,输入以下命令
java -jar sentinel-dashboard-1.7.1.jar &
然后就可以看到该jar包被启动了,打开浏览器输入
http://localhost:8080/#/login
初始的用户名和密码都为sentinel,输入后点击登录即可进入该页面
3.在page项目下导入依赖<!-- Sentinel核心环境依赖 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency>
4.配置page的核心配置文件
sentinel: transport: dashboard: 127.0.0.1:8080 #配置Sentinel控制台端口 port: 8719
5.重启page项目,我们的Nacos注册中心也需要启动,不然page无法运行
随便访问一个接口
1
就可以在Sentinel的可视化端口看到刚刚接口的信息,并可以实时的进行限流降级等操作,不需要重启服务器,相当的方便
Sentinel基本概念
资源:它可以是Java应用程序中的任何内容,例如,由应用程序提供的服务,或由应用程序调用的其它应用提供的服务,甚至可以是一段代码。我们请求的API接口就是资源。只要通过Sentinel API定义的代码,就是资源,能够被Sentinel保护起来。大部分情况下,可以使方法法签名、URL、甚至服务名称作为资源名来标示资源
规则:围绕资源的实时状态设定的规则,可以包括流量控制规则、熔断降级规则以及系统保护规则。所有规则可以动态实时调整