SCA Sentinel分布式系统的流量防卫兵

        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、甚至服务名称作为资源名来标示资源
        规则:围绕资源的实时状态设定的规则,可以包括流量控制规则、熔断降级规则以及系统保护规则。所有规则可以动态实时调整

猜你喜欢

转载自blog.csdn.net/weixin_68926017/article/details/131733484
SCA