Appearance
RocketMQ集群架构 🚀
刚才的演示中,我们已经体验到了RocketMQ是如何工作的。这样,我们回头看RocketMQ的集群架构,就能够有更全面的理解了。
1、RocketMQ集群中的角色 🚀
一个完整的RocketMQ集群中,有如下几个角色
- Producer:消息的发送者;举例:发信者
- Consumer:消息接收者;举例:收信者
- Broker:暂存和传输消息;举例:邮局
- NameServer:管理Broker;举例:各个邮局的管理机构
- Topic:区分消息的种类;一个发送者可以发送消息给一个或者多个Topic;一个消息的接收者可以订阅一个或者多个Topic消息
我们之前的测试案例中,Topic是什么?topic='TopicTest'
现在你能看懂我们之前在 broker.conf 中添加的 autoCreateTopicEnable=true 这个属性的用处了吗?
- Message Queue:相当于是Topic的分区;用于并行发送和接收消息
在我们之前的测试案例中,一个queueId就代表了一个MessageQueue。有哪些queueId? 0,1,2,3四个MessageQueue,你都找到了吗?
2、RocketMQ集群搭建 🚀
为了方便阅读,RocketMQ集群以及RocketMQ配套的管理页面rocketmq-console的搭建写到了另外一个文档中。参见《RocketMQ集群搭建详解》
3、RocketMQ参考资料 🚀
还记得我们之前把RocketMQ的源代码也下载下来了吗?我们现在不需要去看源代码,但是在源码中有个docs目录,里面有非常有用的资料。例如,在他的docs/cn/architecture.md文档中,有对RocketMQ架构的更详细的介绍。这里面的内容就不再搬运了,我们直接看看把。
4、总结 🚀
到这里,我们可以完整的搭建RocketMQ,并进行简单的使用了。
首先,我们要对MQ的优缺点以及适用场景开始要有逐渐清晰的概念。成熟的MQ产品上手使用都很简单,所以,使用和面试的重点从来都不会是怎么编程,而是能结合项目场景完整落地,这才是考验程序员功力的地方。而这个功力的要点就在于对异步消息驱动场景的理解深度。这一部分的学习最好能够结合kafka、RabbitMQ和RocketMQ这几个产品一起进行横向对比。当然,没有基础的同学也不用着急,但是在以后的学习中要有这个意识。
然后,我们要对RocketMQ整体的产品架构以及应用生态有个大致的了解。商业版本的RocketMQ提供了购买即用的高可用特性,并且功能也比开源版本略有改进。而在RocketMQ的开源版本之外,围绕RocketMQ的扩展生态包括管理控制台,大都整合在了rocketmq-externals社区项目中。
关于 RocketMQ 的周边生态,其实跟 kafka 和 RabbitMQ 还是有差距的,但是 RocketMQ 相比这两个产品,不管是开发语言还是架构思维,对我们都更为友好,而且周边生态发展也有后发优势,所以对 RocketMQ 要抱着学习,改进的态度,从点到面横向拓宽技术视野。
最后,我们要对 RocketMQ 的整体架构有一个全面的了解。并且在后续的细节学习时,要保持对第一个问题的好奇心。