初识Sentinel-流量治理组件
# 初识Sentinel-流量治理组件
# Sentinel是什么
随着微服务的流行,服务和服务之间的稳定性变得越来越重要。在分布式系统里,许多服务之间通过远程调用实现信息交互,调用时不可避免会出现调用失败,比如超时、异常等原因导致调用失败,如何保证在一个服务出问题的情况下,不会导致整体服务失败,避免级联故障(服务雪崩),如何提高分布式系统的弹性——是分布式系统中的一个核心问题。
而Sentinel的出现就是为了解决上述问题,它是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。
它是阿里巴巴开源的,专门用于服务容量规划
,动态流量控制
,系统自适应保护
的库。Spring Cloud 并没有直接依赖 Sentinel,但是 Spring Cloud 提供了一些简单的适配器,可以方便的让 Spring Cloud 的服务与 Sentinel 进行集成。其实类似的组件还有Hystrix,不过可惜的是Netflix已经宣布对Hystrix停止更新。
Sentinel-官网 (opens new window)
官网中对它的介绍是这样的:面向分布式、多语言异构化服务架构的流量治理组件
# 快速上手
# 使用Sentinel实现接口限流
Sentinel 的使用可以分为两个部分:
- 核心库(Java 客户端):不依赖任何框架/库,能够运行于 Java 8 及以上的版本的运行时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持(见 主流框架适配 (opens new window))。
- 控制台(Dashboard):Dashboard 主要负责管理推送规则、监控、管理机器信息等。
# 实现控制台
您可以从 release 页面 (opens new window) 下载最新版本的控制台 jar 包。
您也可以从最新版本的源码自行构建 Sentinel 控制台:
- 下载 控制台 (opens new window) 工程
- 使用以下命令将代码打包成一个 fat jar:
mvn clean package
注意:启动 Sentinel 控制台需要 JDK 版本为 1.8 及以上版本。
# 启动
使用如下命令启动控制台:
java -Dserver.port=8090 -Dcsp.sentinel.dashboard.server=localhost:8090 -jar sentinel-dashboard.jar
其中 -Dserver.port=8090
用于指定 Sentinel 控制台端口为 8090
。当然它的默认端口为8080
,成功启动后访问http://localhost:8090
,即可看到如下界面:
注意:只有1.6.0及以上版本,才有这个简单的登录页面。默认用户名和密码都是
sentinel
。对于用户登录的相关配置可以在启动命令中增加下面的参数来进行配置,或者参考 鉴权模块文档 (opens new window) 跟启动配置项文档 (opens new window)配置用户名、密码跟更多设置:
-Dsentinel.dashboard.auth.username=sentinel
: 用于指定控制台的登录用户名为 sentinel;-Dsentinel.dashboard.auth.password=123456
: 用于指定控制台的登录密码为 123456;如果省略这两个参数,默认用户和密码均为 sentinel-Dserver.servlet.session.timeout=7200
: 用于指定 Spring Boot 服务端 session 的过期时间,如 7200 表示 7200 秒;60m 表示 60 分钟,默认为 30 分钟;