Skip to content

AHAS Sentinel 集群限流控制台示例

Eric Zhao edited this page Nov 26, 2021 · 14 revisions

注意:AHAS Sentinel 目前已全面支持 全自动托管的集群流控手动分配版本的集群流控功能已下线,本文不再作为参考


集群限流 是保障服务稳定性的利器,然而使用 Sentinel 集群限流需要对动态数据源进行相关配置,增加了使用成本。为了大家更好地理解集群流控的使用,我们提供了云上版本的 Sentinel 集群限流控制台示例。只需要简单的几步即可快速接入 AHAS Sentinel 集群限流控制台,无需手动配置动态数据源。

1. 引入依赖

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

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

ahas-sentinel-client 中会包含 sentinel-core 以及集群限流等必要依赖,以及连接 AHAS Sentinel 控制台所需模块(鉴权、通信、动态数据源等)。

若之前接入了开源 Sentinel 控制台,则需要将所有开源依赖去掉,替换成此依赖。若希望从 AHAS Sentinel 控制台切换到开源 Sentinel 控制台,只需要将依赖替换回来,修改一下启动参数即可。

2. 开通 AHAS,获取启动参数

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

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

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

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

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

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

3. 启动应用实例

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

image

4. 分配 Token Server

注:本示例中 Token Server 模式为嵌入模式。最新版本 AHAS Sentinel 已全面替代为全自动托管的 token server,无需手动分配管控与运维弹性。

我们需要通过特定的 URL 来进入 AHAS 集群流控 Demo 页面(链接已失效,请使用新版集群流控)。

image

我们可以点击右上角的 新增 Token Server 按钮来新增 Token Server 并执行分配:

image

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

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

image

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

image

5. 配置规则,查看效果

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

image

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

image

接下来我们编辑刚才新建的规则,打开集群模式,阈值模式选择“总体阈值”,保存规则:

image

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

image

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

Clone this wiki locally