
精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
锐英源精品开源,禁止转载和任何形式的非法内容使用,违者必究。本文仅进行了翻译,如果需要实际技术请联系锐英源。
消息中间件软件我以前听说过RabbitMQ,这几天看头条上科技文章又知道了阿里巴巴的RocketMQ,有一定兴趣,就想看下RabbitMQ的代码,国内gitee的一个分支下用迅雷下载后,还解压不了,可能这个分支的管理者没管理好, 不是官方分支,到github下才下载了源代码,源代码有3.4M,解压后发现文件不少。
首先是RocketMQ的开发语言,在我最初的想法里,会是C语言,但是看到是Java,也能想透,Java的企业级开发,经过了历史考验,性能肯定是没问题的,所以用Java开发大数据的中间件肯定也是没问题的。
RocketMQ学习要学它的模型思想和集群搭建过程,这些都是刚入行程序员比较欠缺的,模型思想的方向是抽象思维,集群搭建是架构思维。
模型思想用图表示比较直观,比如消息用信封形状来表示,一眼就可以看出是通知消息。模型图中箭头线代表数据流向,箭头线肯定有发送和接收方。
集群搭建首先要理解几类服务器的目的,理解目的后,自己画一些不同搭建形式的部署图就好理解了。说实在的,如果没做过平台开发,看里面的术语确实不好理解。首先是NameServer服务器,它提供调度的基本信息,但不参与调度,平台内的其它服务器都是自调度,谁上线谁下线,其它服务器自己处理。调度基本信息包含配置信息和状态信息。Broker服务器理解为中间服务器,谁的中间呢,提供者和消费者之间,因为提供者和消费者安排很复杂,所以Broker中间服务器要再细分,就有了Broker中间服务器群组概念,可以按地区,按功能,按业务来理解这类Broker中间群组,反正一个群组做一件事,和其它群组没关系。
RocketMQ的源代码主要在broker、namesrv、openmessaging和tools等其它目录下,代码也包来组织,比较好理解,不过暂时我看的不多。
BrokerController.java是中间服务器控制类,里面肯定有开启,关闭,状态刷新这类处理。
小平台和独立软件用不上RocketMQ,部署形式上有地市区域情况或省级情况,可以考虑,另外如果平台内服务器多,消息多,就要采用RocketMQ开发。