1.为什么是RocketMQ
为什么是 RocketMQ,而不是 ActiveMQ/RabbitMQ/Kafka 呢?这不是技能选型,昆山软件开发,我只是想找一个业界较量好的、开源的 MQ 系统,进修一下 MQ 的事情道理。所以首选 Java 的(固然语言对我来说不是问题,然照旧有点进修本钱的),这就只剩下 RocketMQ 和 ActiveMQ 了,这两个那就必定 选RocketMQ 了,究竟人家是这么吹牛逼的: “万亿级数据洪峰下的漫衍式动静引擎”。
2.项目布局
苏州软件定制开拓 码气势气魄 test" title="300" src="http://www.importnew.com/https:/fdx321.github.io/images/%E3%80%90RocketMQ%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E3%80%911-%E6%80%BB%E4%BD%93%E6%9E%B6%E6%9E%84_1.png" />
3.我的重点存眷
这么多模块,我并不是每一个都一行行代码的去读,像 distribution、test、tools 这些我就或许扫了一眼。那么哪些是我重点存眷的呢?主要是 broker、client、common、namesrv、store、remoting,这几个是焦点模块,值恰当真研读,其它模块不要它们也能跑起来。
4.RocketMQ逻辑陈设布局
苏州软件定制开拓 码气势气魄 test" title="" src="http://www.importnew.com/https:/fdx321.github.io/images/%E3%80%90RocketMQ%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E3%80%911-%E6%80%BB%E4%BD%93%E6%9E%B6%E6%9E%84_2.png" />
这是 RocketMQ 的逻辑陈设布局(参考《RocketMQ道理简介 v3.1.1》),包罗 producer/broker/namesrv/consumer 四大部门。namesrv 起到注册中心的浸染,陈设的时候会用到 rocketmq-namesrv/rocketmq-common/rocketmq-remoting 三个模块的代码;broker 陈设的时候会用到 rocketmq-broker/rocketmq-store/rocketmq-common/rocketmq-remoting 四个模块的代码;producer 和 consumer 会用到 rocketmq-client/rocketmq-common/rocketmq-remoting 三个模块的代码,这里固然将它们分隔画了,但实际上一个应用往往既是producer又是consumer。
Consumer 和 Broker 之间其实还可以加一个 filtersrv,用来做消费端的动静过滤。
这内里尚有几个观念:
Producer Group、Consumer Group 和 Topic 之间并没有强制的某种干系,一个 Producer Group 可以发多个 Topic 的动静,一个 Consumer Group 也可以消费多个 Topic 的动静。一个Consumer Group 可以消费来自多个 Producer Group的动静,一个 Producer Group 的动静也可以被多个 Consumer Group 消费。
Reference