匠心零度 转载请注明原创出处,谢谢!
RocketMQ网络部署图
NameServer:在系统中是做命名服务,更新和发现 broker服务。
Broker-Master:broker 消息主机服务器。
Broker-Slave: broker 消息从机服务器。
Producer: 消息生产者。
Consumer: 消息消费者。
说明:rocketmq系列都将会以rocketmq-4.1.0-incubating进行介绍。
在阅读源码时做了一定的注释,公众号【匠心零度】回复:rocketmq,可获得基于rocketmq4.1.0加详细中文代码注释 。欢迎大家 star、fork !
厮大说过消息中间件的本质消息中间件大道至简:一发一存一消费,今天主要来讨论下存,一发一存一消费中存是最复杂的,通过上面的网络部署图我们可以看出来,相对于nameserver来说broker是客户端,相对于producer、consumer来说broker是服务端,(相对于slave来说master是服务端(先启动master再启动slave的),但是由于tcp是网络部署图是master到slave表示的是数据流向,后续分析这块使用的不是netty而是原生的NIO)
broker的复杂超乎你的相信
你是否还记得我们在搭建
RocketMQ集群环境
的时候,基本修改了一个很长的配置文件,就是broker的配置文件,producer、consumer的配置相对少很多。
这块内容后续都会进行分析(第一次看见的时候特别崇拜,这些变量是怎么抽取出来的呢?我相信不是一次就抽取了,为了灵活那么就是做成可配置的了,而且很多不填也没关系,都是有默认值的,调皮。)
RocketMQ是如何可以做到那么牛逼!!!很多门道都在broker这块了,而且需要考虑各种各样的异常,broker挂了?消费慢了?重启了?等等。
是按照什么格式存储了producer发送的那些字段,为什么需要存储这些字段呢?
broker的复杂超乎你的相信(里面对netty,对多线程,nio,零拷贝,juc相关等运用的出神入化,相信通过后续学习你会把这些知识都串起来,而不仅仅是学习了broker的存储,而是学习了一门牛逼的武功心法(慢慢体会,等待任督二脉的打通,哈哈哈哈哈哈哈))
任何技能都需要耐下心来慢慢学习体会,感悟!!!,期待大家一起进步……未完待续!!!
我是匠心零度,欢迎关注。
领取专属 10元无门槛券
私享最新 技术干货