1 RocketMQ网络部署图
RocketMQ网络部署图如下图所示:
1.1 RocketMQ网络部署特点:
-
<李>命名服务器是一个几乎无状态节点,可集群部署,节点之间无任何信息同步。李>
<李>代理部署相对复杂,代理分为主人与奴隶,一个主可以对应多个奴隶,但是一个奴隶只能对应一个主人,主人与奴隶的对应关系通过指定相同的BrokerName,不同的BrokerId来定义,BrokerId为0表示,非0表示Slave.Master也可以部署多个。每个代理与命名服务器集群中的所有节点建立长连接,定时注册主题信息到所有命名服务器。李>
<李>生产商与命名服务器集群中的其中一个节点(随机选择)建立长连接,定期从名称服务器取主题路由信息,并向提供主题服务的主建立长连接,且定时向主人发送心跳.Producer完全无状态,可集群部署。李>
<李>消费者与命名服务器集群中的其中一个节点(随机选择)建立长连接,定期从名称服务器取主题路由信息,并向提供主题服务的主人,奴隶建立长连接,且定时向主人,奴隶发送心跳.Consumer既可以从主订阅消息,也可以从奴隶订阅消息,订阅规则由代理配置决定。李>
2命名服务器集群
命名服务器集群如下:
命名服务器集群 IP地址 NameServer-1 192.168.1.101 NameServer-2 是192.168.1.102分别启动
<代码类=" language-bash "> nohup sh mqnamesrv, tail - f - n 500美元ROCKETMQ_HOME/日志/rocketmqlogs/namesrv.log 代码>
3 RocketMQ配置文件
众所周知,RocketMQ有多种集群部署方式,它们的配置文件也是分开的,如下:
<代码类=" language-bash "> (root@rocketmq01 conf) # ls -rlt/usr/local/rocketmq/conf 总32 -rw-r - r - 949 2017年9月19日broker.conf根的根 drwxr-xr-x根60 2017年9月19日2 m-noslave 2根 drwxr-xr-x 2根118根2017年9月19日2 m-2s-sync drwxr-xr-x 2根118根2017年9月19日2 m-2s-async -rw-r - r - 1根根3720年4月21日07:56 logback_namesrv.xml -rw-r - r - 1根根3718年4月21日07:56 logback_filtersrv.xml -rw-r - r - 1根根15146年4月21日07:56 logback_broker.xml -rw-r - r - 1根根3789年4月21日07:56 logback_tools.xml 代码>
说明:
-
<李> 2 m-noslave:多主模式李>
<李> 2 m-2s-sync:多主多从模式,同步双写李>
<李> 2 m-2s-async:多主多从模式,异步复制李>
RocketMQ默认提供的配置文件都是最基本的,很多配置都是默认值,在生产环境中我们需要根据实际情况进行修改。样例配置如下:
<代码类=" language-bash "> #所属集群名字 brokerClusterName=rocketmq-cluster #代理名字,注意此处不同的配置文件填写的不一样 brokerName=达成| broker-b # 0表示,在0表示奴隶 brokerId=0 #命名服务器地址,分号分割 namesrvAddr=192.168.1.101:9876; 192.168.1.102:9876 #在发送消息时,自动创建服务器不存在的话题,默认创建的队列数 defaultTopicQueueNums=4 #是否允许代理自动创建主题,建议线下开启,线上关闭 autoCreateTopicEnable=true #是否允许代理自动创建订阅组,建议线下开启,线上关闭 autoCreateSubscriptionGroup=true #经纪人对外服务的监听端口 为=10911 #删除文件时间点,默认凌晨4点 deleteWhen=04 #文件保留时间,默认48小时 fileReservedTime=120 # commitLog每个文件的大小默认1 g mapedFileSizeCommitLog=1073741824 # ConsumeQueue每个文件默认存30 w条,根据业务情况调整 mapedFileSizeConsumeQueue=300000 # destroyMapedFileIntervalForcibly=120000 # redeleteHangedFileInterval=120000 #检测物理文件磁盘空间 diskMaxUsedSpaceRatio=88 #存储路径 storePathRootDir=/usr/地方/alibaba-rocketmq/商店 # commitLog存储路径 storePathCommitLog=/usr/地方/alibaba-rocketmq/存储/commitlog #消费队列存储路径存储路径 storePathConsumeQueue=/usr/地方/alibaba-rocketmq/存储/consumequeue #消息索引存储路径 storePathIndex=/usr/地方/alibaba-rocketmq/商店/索引 #检查点文件存储路径 storeCheckpoint=/usr/地方/alibaba-rocketmq/商店/检查站 #中止文件存储路径 abortFile=/usr/地方/alibaba-rocketmq/商店/中止 #限制的消息大小 maxMessageSize=65536 # flushCommitLogLeastPages=4 # flushConsumeQueueLeastPages=2 # flushCommitLogThoroughInterval=10000 # flushConsumeQueueThoroughInterval=60000 #经纪人的角色 #——ASYNC_MASTER异步复制的主人 #——SYNC_MASTER同步双写的主人 #——奴隶 brokerRole=ASYNC_MASTER #刷盘方式 #——ASYNC_FLUSH异步刷盘 #——SYNC_FLUSH同步刷盘 flushDiskType=ASYNC_FLUSH # checkTransactionMessageEnable=false #发消息线程池数量 # sendMessageThreadPoolNums=128 #拉消息线程池数量 # pullMessageThreadPoolNums=128RocketMQ集群部署方式总结