Spring Cloud 微服务项目实战
姚秋辰(姚半仙)
PayPal 研发经理
15862 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 38 讲
结束语 (1讲)
Spring Cloud 微服务项目实战
15
15
1.0x
00:00/00:00
登录|注册

20 | Sentinel 实战:如何接入 Nacos 实现规则持久化?

你好,我是姚秋辰。
在前两节课里,我们已经知道了如何配置 Sentinel 的降级规则和流量整形规则。不过这套方案还有一个不完美的地方。因为我们配置的这些容错规则并没有被“保存”到某个存储介质中,所以,如果你重新启动 Sentinel 服务器或者重启应用程序,先前配置的所有规则就都消失不见了。那如何才能解决这个问题呢?
这节课,我将带你对 Sentinel 的源码做一下二次开发,我们将通过集成 Nacos Config 来实现一套持久化方案,把 Sentinel 中设置的限流规则保存到 Nacos 配置中心。这样一来,当应用服务或 Sentinel Dashboard 重新启动时,它们就可以自动把 Nacos 中的限流规则同步到本地,不管怎么重启服务都不会导致规则失效了。
在前两节课的实战环节,我们采取了一种“直连”的方式,将应用程序和 Sentinel 做了直接集成。在我们引入 Nacos Config 之后,现有的集成方式会发生些许的变化,我画了一幅图来帮你从架构层面理解新的对接方式。
从上面的图中,你会发现,Sentinel 控制台将限流规则同步到了 Nacos Config 服务器来实现持久化。同时,在应用程序中,我们配置了一个 Sentinel Datasource,从 Nacos Config 服务器获取具体配置信息。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了如何通过集成Nacos Config来实现Sentinel规则持久化的实战经验。作者首先指出了当前Sentinel配置规则的不足之处,即规则没有持久化保存,导致重启应用程序或Sentinel服务器时规则丢失。接着,作者详细介绍了如何对Sentinel源码进行二次开发,通过集成Nacos Config来实现规则持久化。在文章中,作者提到了对Sentinel组件的二次开发和微服务改造两个方面的内容。在对Sentinel组件的二次开发中,作者介绍了修改Nacos依赖项的应用范围、后端程序对接Nacos以及前端页面改造等具体步骤。通过这些改造,实现了将Sentinel限流规则同步到Nacos Config服务器,从而实现规则持久化。整个过程涉及到了对Sentinel源码的修改和Nacos Config的使用。最后,作者还提到了对微服务模块的改造,将微服务程序接入Nacos Config,获取Sentinel限流规则的内容。通过这些改造,可以实现规则的持久化保存和动态修改。整篇文章详细介绍了技术实现的步骤和方法,对于需要实现Sentinel规则持久化的开发人员具有一定的参考价值。文章还提到了验证限流规则同步效果的步骤和注意事项,以及对持久化改造的总结和思考题。整体来说,本文内容详实,对于想要深入了解Sentinel规则持久化实现的读者具有很高的参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Spring Cloud 微服务项目实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(16)

  • 最新
  • 精选
  • 逝影落枫
    为何对接数据源,不采用启动组件的方式,要改代码这么low的?如何做平滑升级?

    作者回复: 可能是官方想锻炼大家的动手能力,所以没提供组件化的方式。不过阿里云的产品倒是提供了,典型的用开源项目导流到自己的商用项目里,吃相有点难看

    2022-01-26
    20
  • 小飞同学
    为啥官方不提供可配置化的数据源,就像nacos那样?提供一个规则配置导出的工具也行,开源项目写的这么low不合适把(改dashborad后端代码-从test目录下复制文件,修改前端这么折腾),应该提一个issue

    作者回复: 因为官方想让大家用cloud版服务,开源出来的是官方鱼饵

    2022-02-16
    5
  • 牛年榴莲
    小团队技术选型基本可以放弃这个组件了

    作者回复: 小项目怎么快怎么来,用微服务好处不大,到时候规模上来了再小步快跑重构

    2022-04-18
    4
  • 来来
    老师,经过以上改造后,是不是也可以在nacos中直接修改coupon-customer-serv-flow-rules配置,达到限流的效果,而不要再经过Sentinel 控制台操作

    作者回复: 其实可以这么玩,不过保险起见还是用sentinel改比较好,复杂规则的配置内容蛮多的,直接改的话一不小心改错了容易出故障

    2022-01-26
    2
    2
  • 永恒之蓝
    有没有改造1.8.2版本成功的老哥,我改造sidebar.html无法生效,对angular不是很熟悉,这个前端代码是要编译并打包之后才生效是么?这个问题排查了很久还是没有找到解决问题办法。

    作者回复: 同学说的没错,改完后确实是需要编译之后打包才能生效。你可以先把我的源码download下来试着编译跑一遍,源码里都是验证过可以正常工作哒

    2023-07-19归属地:北京
    1
  • peter
    Q1:微服务为什么要从nacos获取sentinel的配置信息? A在前面的18、19篇中,微服务已经通过注解实现了与sentinel的绑定,并不需要获取流控规则(这句话如果错误,则为“已经能从sentinel获取流控规则”)。现在sentinel集成nacos后,为什么要从nacos获取规则配置信息? B 另外,sentinel没有与nacos集成时,微服务需要从sentinel获取规则配置信息吗?如需要,怎么获取的? Q2:sentinel规则可以保存到其他组件吗? Sentinel的规则,除了可以保存到nacos中外,还可以保存到其他组件吗?比如zookeeper,比如redis,比如RocketMQ。 Q3:最新的sentinel1.8.3编译失败? 我是从官网下载的最新1.8.3版本,导入idean2019,按照老师第20篇的步骤修改代码,然后编译,但编译失败了。 sentinel-adapter模块下的“sentinel-grpc-adapter”下面, src/test/FooServiceClient.java报告错误:Error:(18, 49) java: 程序包com.alibaba.csp.sentinel.adapter.grpc.gen不存在, 此文件中,导入grpc.gen失败,"gen"在idea中为红色字体。 import com.alibaba.csp.sentinel.adapter.grpc.gen.FooRequest; 官网下载的,应该是完整的,怎么会报错呢?该怎么解决?

    作者回复: Q1: 因为持久化层在nacos Q2: 可以支持其它数据源,但不是所有组件都能作为存储服务的,像rocketmq肯定不行 Q3: 这个包源码未改动过,感觉像是mvn没拉下来包的问题,换一个阿里元mvn镜像试试

    2022-01-27
    1
  • Keke
    为什么我的nacos里没有生成配置文件呢?但是重启项目后配置的规则都还在

    作者回复: 同学是说nacos config里没有找到sentinel创建的持久化规则吗?可以先看下启动项目的日志,里面会有拉取nacos config文件的列表,看下这个列表里有没有sentinel创建的规则文件名~

    2023-03-12归属地:山东
  • Believe
    很多plugins都下不下来,还存在很多依赖包都下不下来

    作者回复: plugins下载不下来应该是国内墙的原因,同学试下换阿里云的maven镜像试试

    2022-11-23归属地:贵州
    4
  • 郭井阳
    geekbang-flow 这个数据库key怎么对应的

    作者回复: 这个值就freestyle就好,只有一个sentinel源就随便起个酷炫的名字

    2022-06-14
  • 郭井阳
    datasource: # 数据源的key,可以自由命名 geekbang-flow: 这个值是怎么取值的

    作者回复: 这个值就freestyle就好,只有一个sentinel源就随便起个酷炫的名字

    2022-06-14
收起评论
显示
设置
留言
16
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部