目录
1.在调用服务中自定义方法继承RequestOriginParser
前言:本文是maven工程下的微服务与sentinel进行整合,讲解Sentine在微服务保护中扮演的角色,能够帮助我们解决什么问题,怎么解决,以及将不同的解决方式进行比较分析出他们合适的应用场景;
在进行Sentinel安装之前我们先了解为什么需要sentinel这样的微服务保护机制:
雪崩问题:我们需要微服务保护的首要原因就是微服务的雪崩问题——微服务调用链路中的某个服务故障,引起整个链路中的所有微服务都不可用,这就是雪崩。
解决雪崩问题常见的四种:
- 超时处理:设定超时时间,请求超过一定时间没有响应就返回错误信息,不会无休止等待,这样就解决了因为某个服务调用另一个服务而进行无休止等待并且占用相关资源而无法得到释放,当大量处理累积就会导致服务器雪崩的问题。
- 舱壁模式:限定每个业务能使用的线程数,避免耗尽整个tomcat的资源,因此也叫线程隔离,设置服务的处理请求的线程数,到某个服务的线程数达到上限后,就会拒绝之后的访问请求,避免了因为某个服务(如服务C)的故障导致被调用者(如服务A)累计大量的处理请求,进而自身的其他服务无法正常进行导致的雪崩问题
- 熔断降级:由断路器统计业务执行的异常比例,如果超出阈值则会熔断该业务,拦截访问该业务的一切请求。和舱壁模式的处理相似。当某个服务节点故障时,或者响应结果异常时,发生异常的次数会被记录下来,当比例达到预设值,就会将所有访问此节点的请求进行拦截做出降级处理或者返回异常信息
- 流量控制:限制业务访问的QPS(一秒内处理访问请求的数量),避免服务因流量的突增(瞬间高并发流量)而导致服务程序的崩溃,引起的雪崩问题
那么什么又是sentinel呢?它的框架和技术又有哪些呢?
Sentinel
隔离策略
信号量隔离
熔断降级策略
基于慢调用比例或异常比例
实时指标实现
滑动窗口
规则配置
支持多种数据源
扩展性
多个扩展点
基于注解的支持
支持
限流
基于 QPS,支持基于调用关系的限流
流量整形
支持慢启动、匀速排队模式
系统自适应保护
支持
控制台
开箱即用,可配置规则、查看秒级监控、机器发现等
常见框架的适配
Servlet、Spring Cloud、Dubbo、gRPC 等
Sentinel是阿里巴巴开源的一款微服务流量控制组件。官网地址:https://sentinelguard.io/zh-cn/index.html
https://sentinelguard.io/zh-cn/index.html
Sentinel 具有以下特征:
- 丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。
- 完备的实时监控:Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况。
- 广泛的开源生态:Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud