nacos源码集群启动_Sentinel 实战集群限流环境搭建(详细图文描述)

Sentinel 系列教程,现已上传到 github 和 gitee 中:

  • GitHub:https://github.com/all4you/sentinel-tutorial

  • Gitee:https://gitee.com/all4you/sentinel-tutorial

3ca095a1a80eb5884ee7964385dd1c58.png

搭建集群限流环境

本文demo在:sentinel-tutorial/sentinel-practice/sentinel-cluster-flow-control 章节

下面我们来看一下如何快速使用集群流控功能。接入集群流控模块的步骤如下:

启动配置中心

要想使用集群流控功能,我们需要在应用端配置动态规则源,并通过 Sentinel 控制台实时进行推送。如下图所示:

777fccfcb17e63add7fc891a38a9029a.png

本次我们通过 Nacos 作为我们的规则源的配置中心,首先我们先下载 Nacos 然后在本地启动一个 Nacos 的服务,我是通过源码编译的 Nacos 服务:

## 解压源码

unzip nacos-master.zip

cd nacos-master

## 编译可执行文件

mvn -Prelease-nacos clean install -U

## 进入编译好的可执行文件中启动服务

cd distribution/target/nacos-server-0.8.0/nacos/bin

sh startup.sh -m standalone

f71b0d1e25c5eb0920bb4809c50350b1.png

如上图所示,启动成功后,我们可以访问 Nacos 的控制台来进行控制了:

99929fffcbdf8139a832058f66c247ab.png

PS:控制台默认的用户名,密码都是:nacos

启动服务端

这里我们以独立模式来运行 token server,即单独启动某台机器作为 token server,其它的机器为 token client。

引入服务端依赖

首先我们引入集群流控服务端所需的相关依赖:

       com.alibaba.csp

       sentinel-transport-simple-http

       1.4.1

       com.alibaba.csp

       sentinel-cluster-server-default

       1.4.1

       com.alibaba.csp

       sentinel-datasource-nacos

       1.4.1

       org.apache.logging.log4j

       log4j-slf4j-impl

       2.9.1

服务端配置

引入了依赖之后,就需要创建一个 ClusterTokenServer 的实例了,然后启动该实例。不过要启动 ClusterTokenServer 还需要先做一些配置,包括 namespace 和 ServerTransportConfig。

手动载入配置

手动载入 namespace 和 ServerTransportConfig 的配置到 ClusterServerConfigManager 中,如下列代码所示:

private static final int CLUSTER_SERVER_PORT = 11111;

private static final String APP_NAME = "appA";

// 加载namespace

ClusterServerConfigManager.loadServerNamespaceSet(Collections.singleton(APP_NAME));

// 加载ServerTransportConfig

ClusterServerConfigManager.loadGlobalTransportConfig(new ServerTransportConfig()

       .setIdleSeconds(600)

       .setPort(CLUSTER_SERVER_PORT));

载入了这些配置到 ClusterServerConfigManager 中之后,ClusterTokenServer 在启动的时候,就会去 ClusterServerConfigManager 获取启动所需的配置信息。

注册监听器(可选)

如果 ClusterTokenServer 启动之后想要更新一些设置,例如我想更换一个 namespace 或者我想更新 ServerTransportConfig,那该怎么办呢,这时我们可以通过为他们注册一个 SentinelProperty ,将配置信息保存到配置中心,当配置中心中的内容发生变更时,SentinelProperty 会通过 PropertyListener 来通知到 SentinelProperty 的注册方,此时就可以动态的更新配置信息了。

为 namespace 注册一个 SentinelProperty:

String namespaceSetDataId = "cluster-server-namespace-set";

// 初始化一个配置 namespace 的 Nacos 数据源

ReadableDataSource<String, Set<

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值