dede网站建站教程,在淘宝做网站和网络公司做网站区别,首码项目网发布平台,伊春网站建设公司文章目录一、推模式架构图二、原理简述2.1. 组件版本关系2.2. 控制台推送规则三、Sentinel控制台改造3.1. 下载源码3.2. 修改pom3.3. 重要文件复制3.4. 注册地址修改3.5. 请求实例需改3.6. 菜单新增四、编译 启动4.1. 先启动nacos4.2. 编译打包4.3. 创建微服务 启动4.1. 先启动nacos4.2. 编译打包4.3. 创建微服务 启动4.4. 刷新sentinel4.5. 登录nacos4.6. sentinel 规则删除4.7. nacos规则查看4.8. 企业案例规则扩展一、推模式架构图 图片引用自 https://github.com/alibaba/Sentinel/wiki/在生产环境中使用-Sentinel 二、原理简述
2.1. 组件版本关系
Spring Cloud Alibaba VersionSentinel VersionNacos VersionRocketMQ VersionDubbo VersionSeata Version2.2.6.RELEASE1.8.11.4.24.4.02.7.81.3.02021.1 or 2.2.5.RELEASE or 2.1.4.RELEASE or 2.0.4.RELEASE1.8.01.4.14.4.02.7.81.3.0
Spring Cloud VersionSpring Cloud Alibaba VersionSpring Boot VersionNacos VersionjdkSpring Cloud Hoxton.SR92.2.6.RELEASE2.3.2.RELEASE1.4.21.8.202
2.2. 控制台推送规则
将规则推送到Nacos或其他远程配置中心 Sentinel客户端链接Nacos获取规则配置并监听Nacos配置变化如发生变化就更新本地缓存从而让本地缓存总是和Nacos一致 控制台监听Nacos配置变化如发生变化就更新本地缓存从而让控制台本地缓存总是和Nacos一致
三、Sentinel控制台改造 控制台改造主要是为规则实现 DynamicRuleProvider从Nacos上读取配置 DynamicRulePublisher将规则推送到Nacos上 3.1. 下载源码
这里使用1.8版本演示 https://github.com/alibaba/Sentinel/tags
3.2. 修改pom 将 !-- for Nacos rule publisher sample --dependencygroupIdcom.alibaba.csp/groupIdartifactIdsentinel-datasource-nacos/artifactIdscopetest/scope/dependency改为 !-- for Nacos rule publisher sample --dependencygroupIdcom.alibaba.csp/groupIdartifactIdsentinel-datasource-nacos/artifactId/dependency3.3. 重要文件复制 由于sentinel持久化默认不支持持久化但是官方关于sentinel提供了nacos、zookeeper、apollo这3种方式但是需要自己集成。 找到 sentinel-dashboard/src/test/java/com/alibaba/csp/sentinel/dashboard/rule/nacos目录将整个目录拷贝到 sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/rule/nacos如图 3.4. 注册地址修改 3.5. 请求实例需改
修改sentinel页面端保存规则请求的url控制层 修改后的配置 AutowiredQualifier(flowRuleNacosProvider)private DynamicRuleProviderListFlowRuleEntity ruleProvider;AutowiredQualifier(flowRuleNacosPublisher)private DynamicRulePublisherListFlowRuleEntity rulePublisher;3.6. 菜单新增
修改 sentinel-dashboard/src/main/webapp/resources/app/scripts/directives/sidebar/sidebar.html找到 修改后 齐活儿啦终于把流控规则改造成推模式持久化啦
四、编译 启动
4.1. 先启动nacos
https://nacos.io/zh-cn/docs/quick-start.html 这里一windows环境演示
startup.cmd -m standalone里面的配置先忽略
4.2. 编译打包
执行 mvn clean package -DskipTests 在项目的 target 目录找到sentinel-dashboard.jar 执行 java -jar sentinel-dashboard.jar 启动控制台。
登录 4.3. 创建微服务 启动
创建微服务模块 添加依赖 dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-sentinel/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-actuator/artifactId/dependencydependencyManagementdependencies!--spring-cloud-alibaba 版本控制--dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-alibaba-dependencies/artifactIdversion2.2.6.RELEASE/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagement配置文件
server:port: 9000
spring:cloud:nacos:discovery:service: product-servserver-addr: localhost:8848sentinel:transport:dashboard: localhost:8080filter:enabled: false
management:endpoints:web:exposure:include: *
创建测试方法
package com.gblfy.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;RestController
public class ProductController {//http://localhost:9000/product/ productIdGetMapping(/product/{productId})public String getProductName(PathVariable Integer productId) {return IPhone 12;}
}
启动应用
请求url http://localhost:9000/product/1 4.4. 刷新sentinel 4.5. 登录nacos 4.6. sentinel 规则删除 4.7. nacos规则查看 规则也随之删除了
4.8. 企业案例规则扩展
以上只是将流控规则扩展好了,其他需要其他模块还需要根据官网文档自行扩展
附上 企业案例使用Nacos持久化规则改造sentinel-dashboard