快速体验 Sentinel 集群限流功能,只需简单几步

本文介绍了如何快速体验Sentinel集群限流功能,只需简单四步:引入依赖、开通AHAS获取启动参数、启动应用实例并配置启动参数、分配Token Server。Sentinel集群限流能限制资源在集群内的总QPS,解决流量不均问题,保障服务稳定性。
摘要由CSDN通过智能技术生成

640?wx_fmt=jpeg

✏️ Pic by Alibaba Tech on Facebook


集群限流可以限制某个资源调用在集群内的总 QPS,并且可以解决单机流量不均导致总的流控效果不佳的问题,是保障服务稳定性的利器。


640?wx_fmt=png


Sentinel 从 1.4.0 「传送门」版本开始提供集群流控特性,但使用 Sentinel 集群限流需要对一系列的动态数据源进行相关配置,并且需要对开源控制台进行一些改造,有一定的使用成本。为了大家更好地理解集群流控并快速地使用,我们提供了云上版本的 Sentinel 集群限流控制台示例。只需要简单的几步即可快速接入 AHAS Sentinel 集群限流控制台,无需手动配置动态数据源。

注:本控制台示例位于云上环境,需要使用阿里云账号登录。


第一步:引入依赖



我们只需要在 Maven 中引入以下依赖:

<dependency>
  <groupId>com.alibaba.csp</groupId>
  <artifactId>ahas-sentinel-client</artifactId>
  <version>1.1.0</version></dependency>

ahas-sentinel-client 中会包含 sentinel-core 以及集群限流等必要依赖(基于 Sentinel 1.4.1 版本),以及连接阿里云 AHAS Sentinel 控制台所需模块(鉴权、通信等)。同时 ahas-sentinel-client 实现了 push 模式的数据源并且会自动注册所有规则配置和集群配置数据源,在控制台推送即可实时生效:


640?wx_fmt=png


若之前接入了开源 Sentinel 控制台,则需要将相关的通信依赖(如 sentinel-transport-simple-http 或 sentinel-transport-netty-http替换成此依赖,否则将无法正确连接 AHAS Sentinel 控制台。若希望从 AHAS Sentinel 控制台切换到开源 Sentinel 控制台,只需要将依赖替换回来,修改一下启动参数即可。

注意:ahas-sentinel-client 1.1.x 仅兼容 Sentinel 1.4.1 及以上版本。



第二步:开通 AHAS,获取启动参数



引入依赖后,我们需要到 阿里云控制台 开通 AHAS 功能(免费)。可以根据开通 AHAS 文档 和 Sentinel 流控降级 Demo 快速入门 里面的指引进行开通。注意若应用运行在非阿里云 ECS 环境或本地,需要在左上角选择切换公网环境。


开通后我们可以点击左侧侧边栏的 流控降级,进入 Sentinel 控制台应用总览页面。在页面右上角,单击 应用接入,选择 Java SDK 接入页签,到 配置启动参数 页签拿到需要的 JVM 启动参数(详情请参考 SDK 接入文档),类似于:

-Dproject.name=AppName -Dahas.license=<License>

其中 project.name 代表应用名(会显示在控制台),ahas.license 代表自己的授权 license。

注意:若应用运行在非阿里云 ECS 环境或本地,需要在左上角切换到 公网 环境。

详细接入步骤可以参考 AHAS Sentinel 控制台文档


第三步:启动应用实例



接下来我们就可以在本地启动应用了,启动应用时需要加上拿到的启动参数。若要在本地体验集群限流功能,需要在本机启动多个应用实例,并额外添加 -Dcsp.sentinel.log.use.pid=true 参数(用于区分同个应用多个实例)。启动之后,我们就可以在对应应用的机器列表页面看到接入的机器了:


640?wx_fmt=png



第四步:分配 Token Server



集群限流中共有两种身份:

  • Token Client 即集群流控客户端:用于向所属 Token Server 通信请求 token。集群限流服务端会返回给客户端结果,决定是否限流。Sentinel 集群流控的通信底层采用 Netty 实现。

  • Token Server 即集群流控服务端:处理来自 Token Client 的请求,根据配置的集群规则判断是否应该发放 token(是否允许通过)。


本示例中 Token Server 模式为嵌入模式,即作为内置的 Token Server 与应用在同一进程中启动,无需单独部署:


640?wx_fmt=png


我们需要通过特定的 URL 来进入 AHAS 集群流控 Demo 页面(其中 appName 后面的参数替换成我们的应用名):

https://ahas.console.aliyun.com/#/SystemGuardClusterServerPage?appName=web-demo&regionId=public


然后我们就进入到了集群流控 Token Server 列表页面:


640?wx_fmt=png


我们可以点击右上角的 新增 Token Server 按钮来新增 Token Server 并执行分配。我们首先需要在新增 Token Server 对话框内选择一台 Token Server,并配置该 Token Server 的端口以及最大的 QPS 配额(用于限制资源使用,防止嵌入模式下影响应用本身)。接下来我们就在下面的选择框中为该 Token Server 分配 Token Client。


在上面图中的例子中,我们的应用共有两个实例,其中一个指定为 Token Server,另一个指定为 Token Client。选择完成后点击“保存”按钮保存分配。


640?wx_fmt=png


保存成功后,我们就能在 Token Server 列表页面看到刚刚分配的 Token Server 了:


640?wx_fmt=png


点击左侧的下拉按钮,可以看到该 Token Server 和所管理的 Token Client 的实时信息:


640?wx_fmt=png



第五步:配置规则,查看效果



接下来我们去流控规则页面给我们的应用配置流控规则。先对某个资源配置普通的流控规则,单机 QPS 阈值设置为 10:


640?wx_fmt=png


然后分别持续请求两台机器对应的资源,可以在监控页面看到总 QPS 为 20(每个单机 QPS 各为 10):


640?wx_fmt=png


接下来我们编辑刚才新建的规则,开启集群模式,阈值模式选择“总体阈值”,代表对该资源限制集群内的调用总量为 10。保存规则:


640?wx_fmt=png


等待一段时间,我们可以在监控页面看到资源的总 QPS 被限到了 10:


640?wx_fmt=png


有关 Sentinel 集群流控的更多特性和用法,可以参考 Sentinel 集群流控文档 以及之前的集群流控的文章。同时,我们也提供了嵌入模式下应用配置集群流控配置源的 Demo,可以参考:sentinel-demo-cluster-embedded。


本文作者:宿何,社区昵称sczyh30,阿里巴巴高可用架构组开发工程师,目前主要负责Sentinel 开源项目的开发和社区维护。


有关 Sentinel 的更多信息:


©每周一推

第一时间获得下期分享



640?wx_fmt=jpeg

Tips:

# 点下“好看”❤️

# 然后,公众号对话框内发送“卫衣”,试试手气??

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值