这是《spring Cloud 进阶》专栏的第五篇文章,这篇文章介绍一下阿里开源的流量防卫兵Sentinel,一款非常优秀的开源项目,经过近10年的双十一的考验,非常成熟的一款产品。往期文章如下:
阿里面试这样问:Nacos、Apollo、Config配置中心如何选型?这10个维度告诉你!
阿里面试败北:5种微服务注册中心如何选型?这几个维度告诉你!
文章目录如下:
2、什么是sentinel?sentinel顾名思义:卫兵;在Redis中叫做哨兵,用于监控主从切换,但是在微服务中叫做流量防卫兵。
Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
Sentinel 具有以下特征:
丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。
完备的实时监控:Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况。
广泛的开源生态:Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Apache Dubbo、gRPC、Quarkus 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel。同时 Sentinel 提供 Java/Go/C++ 等多语言的原生实现。
完善的 SPI 扩展机制:Sentinel 提供简单易用、完善的 SPI 扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理、适配动态数据源等。
Sentinel 的主要特性如下图:
Sentinel 分为两个部分:
核心库(Java 客户端)不依赖任何框架/库,能够运行于所有 Java 运行时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持。
控制台(Dashboard)基于 Spring Boot 开发,打包后可以直接运行,不需要额外的 Tomcat 等应用容器。
总之一句话:sentinel真牛逼,完爆Hystrix.........
3、sentinel和Hystrix有何区别?不多说了,总之一句话:Hystrix赶紧放弃,用sentinel......
具体区别如下图:
4、sentinel版本如何选择?由于陈某写的是Spring Cloud 进阶一个系列,使用的聚合项目,因此版本还是保持和之前文章一样,不清楚的可以看这篇:五十五张图告诉你微服务的灵魂摆渡者Nacos究竟有多强?
这里选择的spring-cloud-alibaba-dependencies的版本是2.2.1.RELEASE,因此sentinel版本选择1.7.1,大家可以根据自己的版本选择对应sentinel的版本,版本对应关系如下图:
注意:一定要按照官方推荐的版本适配,否则出现意想不到的BUG追悔莫及.........
5、Sentinel 控制台如何安装?sentinel和nacos一样,都有一个控制台,但是这里不用自己手动搭建一个微服务,官方已经搭建好了,只需要下载对应得jar包运行即可。下载地址:https://github.com/alibaba/Sentinel/tags
选择对应得版本下载即可,我这里选择1.7.1版本,下载的jar包如下图:
当然你可以通过源码构建:mvn clean package
注意:JDK版本必须>=1.8
此时我们只需要运行这个jar包即可,命令如下:
java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.7.1.jar上述参数含义如下:
-Dserver.port:指定启动的端口,默认8080
-Dproject.name:指定本服务的名称
-Dcsp.sentinel.dashboard.server:指定sentinel控制台的地址,用于将自己注册进入实现监控自己
启动成功之后,浏览器访问::8080,登录页面如下图:
默认的用户名和密码:sentinel/sentinel
登录成功之后页面如下:
可以看到目前只有一个服务sentinel-dashboard被监控了,这个服务就是自己。
注意:上述参数都是可选的,没必要可以不填。
那么问题来了:默认的用户名和密码在生产环境上肯定不能用,如何修改呢?