目录
百战程序员,全站22050+开发课程+文档 ,学习精选优质好课快人一步!观看视频 快捷键ALT+N

JAVA全系列 教程

3762个小节阅读:7088.9k

收藏
全部开发者教程

C语言快速入门

JAVA全系列 教程

面向对象的程序设计语言

Python全系列 教程

Python3.x版本,未来主流的版本

人工智能 教程

顺势而为,AI创新未来

大厂算法 教程

算法,程序员自我提升必经之路

C++ 教程

一门通用计算机编程语言

微服务 教程

目前业界流行的框架组合

web前端全系列 教程

通向WEB技术世界的钥匙

大数据全系列 教程

站在云端操控万千数据

AIGC全能工具班

A

A A

White Night

阅读(1.1k)
赞(0)

分布式流量防护_Sentinel组件二次开发

image-20220329174439773

在开始二次开发之前,我们需要将Sentinel 的代码下载到本地。你可以从GitHub 的Releases页面中找到1.8.3版本,在该版本下的Assets面板中下载 Source code源文件。下载地址https://github.com/alibaba/Sentinel/releases

image-20220315104857348

改造过程三个步骤

  1. 修改 Nacos 依赖项的应用范围,将其打入jar 包中;
  2. 后端程序对接 Nacos,将 Sentinel 限流规则同步到 Nacos;
  3. 开放单独的前端限流规则配置页面。

修改Nacos依赖项

首先,你需要打开 sentinel-dashboard 项⽬的 pom.xml 文件,找到其中的依赖项 sentinel-datasource-nacos,它是连接 Nacos Config 所依赖的必要组件。

后端程序对接Nacos

首先,你需要打开 sentinel-dashboard 项目下的 src/test/java目录。定位到 com.alibaba.csp.sentinel.dashboard.rule.nacos目录下。

image-20220325100150136

解释:

  • NacosConfig:初始化 Nacos Config 的连接;
  • NacosConfigUtil:约定了 Nacos 配置⽂件所属的 Group 和⽂件命名后缀等常量字段;
  • FlowRuleNacosProvider:从 Nacos Config 上获取限流规则;
  • FlowRuleNacosPublisher:将限流规则发布到 Nacos Config。

为了让这些类在 Sentinel 运行期可以发挥作用,你需要在 src/main/java 下创建同样的包路径,然后将这四个文件从 test 路径拷贝到 main 路径下。

实现Nacos数据同步

FlowControllerV2接入Nacos

image-20220315150317746

解释:

在代码中,我通过Qualifer标签将FlowRuleNacosProvider注入到了ruleProvier变量中,又采用同样的方式将FlowRuleNacosPublisher注入到了rulePublisher变量中。FlowRuleNacosProvider和 FlowRuleNacosPublisher就是上一步我们刚从 test目录 Copy到main目录下的两个类。

查看FlowRuleNacosPublisher源码

解析:

我们就完成了对后端程序的改造,将 Sentinel 限流规则同步到了 Nacos。接下来我 们需要对前端页面稍加修改,开放⼀个独立的页面,用来维护那些被同步到 Nacos 上的限流规则。

前端页面改造

首先,我们打开 sentinel-dashboard 模块下的 webapp 目录,该目录存放了 Sentinel 控制 台的前端页面资源。我们需要改造的文件是 sidebar.html,这个 html文件定义了控制台的左侧导航栏。

image-20220315151331251

新增内容

微服务改造

微服务端的改造非常常简单,我们不需要对代码做任何改动,只需要添加⼀个新的依赖项,并在配置文件中添加 sentinel datasource 连接信息就可以了。

我们在 application.yml 配置文件中找到 spring.cloud.sentinel 节点,在这个节点下添加⼀段Nacos 数据源的配置。

image-20220315151903432

重点强调

  • 我们在微服务端的 sentinal 数据源中配置的 namespace 和 groupID,⼀定要和 Sentinal Dashoboard 二次改造中的中的配置相同,否则将无法正常同步限流规则。
  • dataId 的文件命名规则,需要和 Sentinel 二次改造中的FlowRuleNacosPublisher 类保持⼀致。

验证限流规则同步效果

启动Sentinel-dashboard子项目,找主启动类启动Sentinel控制台。

image-20220315152211382

请求http://localhost:8080,你可以登录 Sentinel Dashboard 服务。这时你会看到左侧的导航栏多了⼀个“流控规则百战”的选项。你可以点击这个选项,并手动在当前页面右上方点击“新增流控 规则”,为 requestCoupon 添加⼀条“QPS=1 快速失败”的流控规则。

image-20220315152441325

最后,打开 Nacos Config 的配置列表页,你就可以看到⼀个 cloud-sentinel-payment- flow-rules 的配置文件被创建了出来。

image-20220315152627849

北京市昌平区回龙观镇南店村综合商业楼2楼226室

©2014-2023 百战卓越(北京)科技有限公司 All Rights Reserved.

京ICP备14032124号-2