如何有效的监控服务,是我们要考量的问题。使用Sentinel提供解决方案.减少我们的人力成本和物力成本
springAlibaba服务熔断
- 为何出现服务熔断
- 使用Sentinel提供解决方案
- Sentinel特征
- Fegin使用Sentinel
- 使用熔断器表盘进行监控
为何出现服务熔断
1.微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以通过 RPC 协议相互调用,在springcloud我们可以使用feign进行服务的调用。而为了保证服务的高可用,我们会把服务部署到集群上面,但是由于网络的原因或者自身出现的不可控的情况。会出现调用该服务出现阻塞
2.出现阻塞后,如果大量的请求涌入进来,而服务故障得不到及时处理,容器的西安城资源就会消耗完毕,导致服务瘫痪,因为服务之间在进行相互的调用,会产生对等依赖特性,也就会影响其它的服务.这就会造成我们所说的雪崩效应
3.如何解决:提出了熔断器模式.当到达一定的阈值的时候,进行一个特殊的处理。如同曾经证券市场推出来的熔断机制,虽然没有坚挺很久
使用Sentinel提供解决方案
1.服务和服务之间的稳定性变得越来越重要。 Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
2.Sentinel 组件,实现了熔断器模式,SpringCloud对这一组件进行了整合。在微服务架构中,一个请求需要调用多个服务是非常常见的,较底层的服务如果出现故障,会导致连锁故障。当对特定的服务的调用的不可用达到一个阀值熔断器将会被打开。熔断器打开后,为了避免连锁故障,通过 fallback 方法可以直接返回一个固定值。
Sentinel 的特征
- 丰富的应用场景:秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、实时熔断下游不可用应用等
- 完备的实时监控: Sentinel同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况
- Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与SpringCloud、Dubbo、gRPC 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入Sentinel。
- 完善的 SPI 扩展点:Sentinel提供简单易用、完善的SPI扩展点。您可以通过实现扩展点,快速的定制逻辑。例如定制规则管理、适配数据源等。
Fegin使用Sentinel
使用feign项目中引用Sentinel
pom.xml文件添加如下:
1 | <dependency> |
在全局配置文件添加
1 | #sentinel |
创建熔断类实现对应的service的接口
1 | package com.wwj.consumer.feign.fallback; |
在Feign中的Service中增加fallback指定类
1 |
|
测试结果
正常启动消费者和提供者
关闭提供者(模拟服务提供方崩溃)
使用熔断器表盘进行监控
表盘监控说明
Sentinel 控制台提供一个轻量级的控制台,它提供机器发现、单机资源实时监控、集群资源汇总,以及规则管理的功能。您只需要对应用进行简单的配置,就可以使用这些功能。
注意: 集群资源汇总仅支持 500 台以下的应用集群,有大概 1 - 2 秒的延时。
下载切换到对等的目录并打包
1 | # 下载源码 |
或者
切换到控制面板目录执行程序
1 |
|
在Feign客户端的application.yml 和 pom.xml
1 | spring: |
1 | <dependency> |
端口配置会在应用对应的机器上启动一个 Http Server,该 Server 会与 Sentinel 控制台做交互。比如 Sentinel 控制台添加了 1 个限流规则,会把规则数据 push 给这个 Http Server 接收,Http Server 再将规则注册到 Sentinel 中。
同理可以把监控添加给服务方或者消费方
可以看到利用哨兵对服务进行了监控,可设置QPS