微服务保护 - Sentinel

1.概念:

一:sentinel 介绍

随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式服务架构的轻量级流量控制产品,主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助您保护服务的稳定性。

二:什么是服务雪崩?

在微服务中,服务之间电泳关系复杂,一个为服务往往依赖与多个其他微服务(服务调用其他服务),可想而知,如果一个服务出现问题,调用者拿不到数据,依赖服务的业务请求被阻塞,用户不会得到响应,则tomcat的这个线程不会释放,于是越来越多的用户请求到来,越来越多的线程会阻塞,服务器支持的线程和并发数有限,请求一直阻塞,会导致服务器资源耗尽,从而导致所有其它服务都不可用,那么当前服务也就不可用了。 依赖于当前服务的其它服务随着时间的推移,最终也都会变的不可用,形成级联失败,雪崩就发生了

1.常用的微服务保护方案【重点】

处理微服务雪崩问题,常见4中方案

1.微服务出错后的处理(3种)

        1.1 超时:设置请求的超时时间,一旦请求超时,就立即报错结束。可以快速失败,从而避免长时间占用资源

        1.2 隔离(舱壁模式):给每个业务设置一个线程池,不同业务之间的线程是隔离的。一旦某业务失败,不会影响其它业务

 这里也可以称之为舱壁模式,隔离,来源于船舱的设计 。船舱都会被隔板分离为多个独立空间,当船体破损时,只会导致部分空间进入,将故障控制在一定范围内,避免整个船体都被淹没。

        1.3 熔断降级:使用断路器技术统计异常请求的比例,一时超过指定的阈值,就拦截一切请求

                熔断:暂时切断对目标服务的一切访问,让目标服务有个缓冲时间

                降级:当不能正常调用目标服务时,就采用备用方案,这个过程就是降级

2. 预防微服务出错的方案:(1种)

         限流:根据服务的性能,限制业务访问的qps,避免服务因流量的突增而出现故障。

 三:微服务保护技术 Hystrix 和 Sentinel对比

在SpringCloud中支持多种服务保护技术:

  • NetFlix Hystrix

  • Alibaba Sentinel

  • Resilience4J

 早期比较流行的是Hystrix框架,但目前国内实用最广泛的还是阿里巴巴的Sentinel框架,这两个框架对比如下:

Sentinel Hystrix
隔离策略 信号量隔离 线程池隔离(默认)/信号量隔离
熔断降级策略 基于慢调用比例或异常比例 基于失败比率
实时指标实现 滑动窗口 滑动窗口(基于 RxJava)
规则配置 支持多种数据源 支持多种数据源
扩展性 多个扩展点 插件的形式
基于注解的支持 支持 支持
限流 基于 QPS,支持基于调用关系的限流 有限的支持
流量整形 支持慢启动、匀速排队模式 不支持
系统自适应保护 支持 不支持
控制台 开箱即用,可配置规则、查看秒级监控、机器发现等 不完善
常见框架的适配 Servlet、Spring Cloud、Dubbo、gRPC 等 Servlet、Spring Cloud Netflix

 隔离策略:

  • 线程池隔离:调用每个服务都有一个单独的线程池。所以调用这个服务出现问题,最多把这个专用的线程池耗干,不可能影响其它服务

  • 信号量隔离:不会创建新线程。 调用每个服务的时候,都要做一个计数+1;每个服务可以设置最多允许多个并发,达到并发阈值,就不允许再调用了

 熔断降级:

  • Hystrix基于失败比例:当短时间内,调用服务失败的比例达到阈值,就熔断。不能对慢调用进行熔断

  • Sentinel可以基于慢调用比例、也可以基于失败比例进行熔断

 限流:

  • Sentinel的限流功能非常强大

  • Hystrix的限流功能非常弱

 流量整形:

  • Sentinel可以进行流量整形,让所有请求按照时间匀速排队

  • Hystrix不支持流量整形

 控制台

  • Sentinel的控制台非常简单易用、非常强大

  • Hystrix控制台非常简陋

 Sentinel和Hystrix整体的对比:

  • Hystrix是一个简单的服务保护工具,Sentinel是一个强大的服务保护的框架

  • Hystrix相当于算盘,Sentinel相当于一台计算机

 四:Sentinel简介

官网地址:home | Sentinel

Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量控制、流量路由、熔断降级、系统自适应保护等多个维度来帮助用户保障微服务的稳定性

 QPS:Query per Second,每秒请求数

 

它具有以下特征:

  • 丰富的应用场景

    Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。

  • 完备的实时监控

    Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况。

  • 广泛的开源生态:

    Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel。

  • 完善的 SPI 扩展点:

    Sentinel 提供简单易用、完善的 SPI 扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理、适配动态数据源等。

五:安装Sentinel 

sentinel官方提供了UI控制台,方便我们对系统做限流设置,下载:

 没资料可以找我

 我是在linux中安装,也可以在本地安装,我的本地可能多个jdk

 java -jar sentinel-dashboard-1.8.1.jar 命令

 服务熔断与限流:Sentinel_轻松的小希的博客-CSDN博客

 此文章真好

猜你喜欢

转载自blog.csdn.net/weixin_50769390/article/details/128634210