RocketMQ ACL版本升级过程中的曲折经历(大厂线上环境大规模MQ升级开启ACL实战)

在这里插入图片描述

接下来逐步分析上述测试用例的目的。

2.1 客户端不开启ACL,服务端开启ACL

例如像我们公司的技术架构,涉及到数据的流转,重度依赖MQ,目前应用中存在太多的低版本的MQ客户端,例如4.1.0,如果服务端开启了ACL,如果能兼容低版本客户端,那这样升级起来就会显得非常容易,但经过测试:结果为不兼容。其实这个也好理解,服务端开启了ACL,客户端没有授权信息,是肯定不会让你通过的。

2.2 客户端开启ACL,服务端不开启ACL

经过测试,服务端如果不开启ACL的话,尽管客户端在消息发送、消息消费等场景下发送了授权信息,但服务端会忽略这些信息,并不会触发ACL校验

3、优雅升级与弊端


基于开源版本,通过上面的验证,其优雅升级思路:为各个客户端规划好用户名与密钥,并且对所有客户端进行改造,等待所有客户端都完成改造后,服务端再开启ACL。

通常在具体实践中,由于涉及所有客户端改造,可以分集群进行改造,由上到下推动该事项的执行,统一定好一个客户端改造的最后时间点,在该时间点后,服务端开启ACL,至此完成RocketMQ集群的授信访问。、

上述方案的缺点也是显而易见的,需要客户端先行改动,只有等所有客户端全部改造完成后,服务端才能开启ACL。

4、自定义ACL校验器


由于当时项目的升级的迫切性,基于官方版本这种升级方案显然无法满足我们当时的需求。回到文章开头部分说的紧迫诉求:当务之急是要限制生产环境任意一台机器对MQ集群的管理权限,即限制对MQ中topic、消费组的创建与删除,对Broker相关配置的修改。

为了解决上述问题,需要利用RocketMQ自定义的ACL校验机制,其策略概况如下:

  • 对于需要admin权限的操作,服务端必须开启校验。

  • 对于不需要admin权限的操作,例如消息的发送、消费,如果客户端没有上传校验信息,默认放行

基于上述这样的改造,暂时可以解决问题。

RocketMQ的acl校验器是基于SPI机制,可插拔,提供了org.apache.rocketmq.acl.AccessValidator接口,并且需要将具体实现类写入到broker/src/main/resources/META-INF.service /org.apache.rocketmq.acl. AccessValidat or文件中。

在这里插入图片描述

但需要注意的是,如果该文件中配置了多个校验器,会自动组装成链条。

在实际使用过程中,发现这种扩展机制从使用层面来看并不优好,校验器(策略)尽量参数化,即在broker中使用参数来指定。


好了,本文就介绍到这里了,一键三连(关注、点赞、留言)是对我最大的鼓励

掌握一到两门java主流中间件,是敲开BAT等大厂必备的技能,送给大家一个Java中间件学习路线,助力大家实现职场的蜕变。

Java进阶之梯,成长路线与学习资料,助力突破中间件领域

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

分享一套我整理的面试干货,这份文档结合了我多年的面试官经验,站在面试官的角度来告诉你,面试官提的那些问题他最想听到你给他的回答是什么,分享出来帮助那些对前途感到迷茫的朋友。

面试经验技巧篇
  • 经验技巧1 如何巧妙地回答面试官的问题
  • 经验技巧2 如何回答技术性的问题
  • 经验技巧3 如何回答非技术性问题
  • 经验技巧4 如何回答快速估算类问题
  • 经验技巧5 如何回答算法设计问题
  • 经验技巧6 如何回答系统设计题
  • 经验技巧7 如何解决求职中的时间冲突问题
  • 经验技巧8 如果面试问题曾经遇见过,是否要告知面试官
  • 经验技巧9 在被企业拒绝后是否可以再申请
  • 经验技巧10 如何应对自己不会回答的问题
  • 经验技巧11 如何应对面试官的“激将法”语言
  • 经验技巧12 如何处理与面试官持不同观点这个问题
  • 经验技巧13 什么是职场暗语

面试真题篇
  • 真题详解1 某知名互联网下载服务提供商软件工程师笔试题
  • 真题详解2 某知名社交平台软件工程师笔试题
  • 真题详解3 某知名安全软件服务提供商软件工程师笔试题
  • 真题详解4 某知名互联网金融企业软件工程师笔试题
  • 真题详解5 某知名搜索引擎提供商软件工程师笔试题
  • 真题详解6 某初创公司软件工程师笔试题
  • 真题详解7 某知名游戏软件开发公司软件工程师笔试题
  • 真题详解8 某知名电子商务公司软件工程师笔试题
  • 真题详解9 某顶级生活消费类网站软件工程师笔试题
  • 真题详解10 某知名门户网站软件工程师笔试题
  • 真题详解11 某知名互联网金融企业软件工程师笔试题
  • 真题详解12 国内某知名网络设备提供商软件工程师笔试题
  • 真题详解13 国内某顶级手机制造商软件工程师笔试题
  • 真题详解14 某顶级大数据综合服务提供商软件工程师笔试题
  • 真题详解15 某著名社交类上市公司软件工程师笔试题
  • 真题详解16 某知名互联网公司软件工程师笔试题
  • 真题详解17 某知名网络安全公司校园招聘技术类笔试题
  • 真题详解18 某知名互联网游戏公司校园招聘运维开发岗笔试题

资料整理不易,点个关注再走吧
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!
外链图片转存中…(img-WtKuFxzU-1711810631328)]

资料整理不易,点个关注再走吧
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值