ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

HM-SpringCloud微服务系列8.5【规则持久化】

2022-04-09 18:33:40  阅读:212  来源: 互联网

标签:配置 8.5 SpringCloud HM nacos 限流 规则 sentinel order


现在,sentinel的所有规则都是内存存储,重启后所有规则都会丢失。在生产环境下,我们必须确保这些规则的持久化,避免丢失。

1. 规则管理模式

规则是否能持久化,取决于规则管理模式,sentinel支持三种规则管理模式:
image

1.1 原始模式(默认)

原始模式:控制台配置的规则直接推送到Sentinel客户端,也就是我们的应用。然后保存在内存中,服务重启则丢失。
image

1.2 pull模式

pull模式:控制台将配置的规则推送到Sentinel客户端,而客户端会将配置规则保存在本地文件或数据库中。以后会定时去本地文件或数据库中查询,更新本地规则。
image

1.3 push模式(推荐)

push模式:控制台将配置规则推送到远程配置中心,例如Nacos。Sentinel客户端监听Nacos,获取配置变更的推送消息,完成本地配置更新。
image

1.4 小结

image

2. 实现push模式

image

2.1 步骤1

image
修改OrderService,让其监听Nacos中的sentinel规则配置。
在order-service中引入sentinel监听nacos的依赖:

<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-datasource-nacos</artifactId>
</dependency>

在order-service中的application.yml文件配置nacos地址及监听的配置信息:

spring:
  cloud:
    sentinel:
      datasource:
        flow:
          nacos:
            server-addr: localhost:8848 # nacos地址
            dataId: orderservice-flow-rules
            groupId: SENTINEL_GROUP
            rule-type: flow # 还可以是:degrade、authority、param-flow

image
image
重启order服务

例如以后需要在限流配置上+降级配置,可以如下配置(复制一份换名即可)
image

2.2 步骤2

image

2.3 步骤3

image
image

2.4 步骤4

image
image

PS:步骤2&3&4较为繁琐,在此不做演示,只用课程资料中老师修改完打包好的直接运行查看效果
image
先停掉之前开启的正常未修改的sentinel服务
image
启动方式跟官方一样:通过命令java -jar sentinel-dashboard.jar
注意:如果要修改nacos地址,需要添加参数:-D

nacos地址须与order服务中配置的一致,如果待开启包内原先配置的不是,则可以通过+命令-Dnacos.addr=localhost:8848进行修改
此处实际加不加都行,因为包内老师改的就是8848,以下命令仅做演示

image
浏览器访问nacos控制台
image
image
image
访问sentinel控制台发现的啥也木有
image
访问http://localhost:8088/order/101触发簇点链路
image
image
F12打开调试模式清空当前页面缓存
image
image
在此页面添加的流控规则会被持久化保存到nacos


测试一下吧
image
image
image
image
此时访问http://localhost:8088/order/101,发现已被限流
image

现在重启order服务,再次访问发现规则还在,还是被限流ok(此前没有持久化保存时,重启服务后会丢失规则,即限流失效)
image
image
image

标签:配置,8.5,SpringCloud,HM,nacos,限流,规则,sentinel,order
来源: https://www.cnblogs.com/yppah/p/16118719.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有