RocketMQ概念、环境搭建

雨点打透心脏的1/2处 2022-05-27 05:35 505阅读 0赞

一、概述
RocketMQ是一款分布式、队列模型的消息中间件,具有以下特点:

  • A、能够保证严格的消息顺序;
    B、提供丰富的消息拉取模式;
    C、高效的订阅者水平扩展能力;
    D、实时的消息订阅机制;
    E、亿级消息堆积能力;
    F、Metaq1.x和2.x,3.x下以后版本名,产品名称改为RocketMQ

    1. 选用理由:
    2. A、强调集群无单点,可扩展,任意一点高可用,水平可扩展;
    3. B、海量消息堆积能力,消息堆积后,写入低延迟;
    4. C、支持上万个队列;
    5. D、消息失败重试机制;
    6. E、消息可查询;
    7. F、开源社区活跃;
    8. G、成熟度(经过双十一考验);

    二、专业术语

    1. - Producer:消息生产者,负责生产消息,一般由业务系统负责产生消息;
    2. Consumer:消息消费者,负责消费消息,一般是后台系统负责异步消费;
    3. Push ConsumerConsumer的一种,应用通常向Consumer对象注册一个Listener接口,一旦受到消息,立刻回掉Listener接口方法;
    4. Pull ConsumerConsumer的一种,应用通常主动调用Consumer的拉消息方法从Broker拉消息,主动权应用控制;
    5. Producer Group:一类Producer的集合名称,这类Producer通常发送一类消息,且发送逻辑一致;
    6. Consumer Group:一类Consumer的集合名称,这类Consumer通常消费一类消息,且消费逻辑一致;
    7. Broker:消息中转角色,负责存储消息,转发消息,一般也成为Server,在JMS规范中称为Provider
    8. 广播消费:一条消息被多个Consumer消费,计时这些Consumer属于同一个Consumer Group,消息也会被Consumer Group中的每个Consumer都消费一次,广播消费中的Consumer Group概念可以认为在消息划分方面无意义。
    9. 集群消费:一个Consumer Group中的Consumer实例平均分摊消费消息。
    10. JMS规范中,JMS point-to-point model与之类似,但是RocketMQ的集群消费功能大等于PTP模型。因为ROcket MQ单个Consumer Group内的消费者类似于PTP,但是一个Topic/Queue可以被多个Consumer Group消费。
    11. 顺序消息:消费消息的顺序要同发送消息的顺序一致,在RocketMQ中,主要指的是局部顺序,即一类消息为满足顺序性,必须Producer单线程顺序发送,且发送到同一个队列,这样Consumer就可以按照Producer发送的顺序去消费消息。

三、RocketMQ环境搭建

  • 双/多master配置方式: 0、服务器环境:
    这里写图片描述
    1、命令:(每个master都要修改) vim /etc/hosts

    IP:192.168.100.24 ;NAME:rocketmq-nameserver1
    IP:192.168.100.24 ;NAME:rocketmq-master1
    IP:192.168.100.25 ;NAME:rocketmq-nameserver2

2、命令:service network restart
3、命令:tar -zxvf alibaba-rocketmq-3.4.2.6.tar.gz -C /usr/local/
4、创建软连接,命令:ln -s alibaba-rocketmq-3.4.2.6 rocketmq
5、创建存储路劲,命令:mkdir /usr/local/rocketmq/store
命令:mkdir /usr/local/rocketmq/store/commitlog
命令:mkdir /usr/local/rocketmq/store/consumequeue
命令:mkdir /usr/local/rocketmq/store/index
6、修改RocketMQ配置文件,命令:vim /usr/local/rocketmq/conf/2m-noslave/broker-a.properties
内容如下:

  1. #所属集群名字
  2. brokerClusterName=rocketmq-cluster
  3. #broker名字,注意此处不同的配置文件填写的不一样
  4. brokerName=broker-a
  5. #0表示Master,>0表示Slave
  6. brokerId=0
  7. #nameServer地址,分号分割
  8. namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
  9. #在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
  10. defaultTopicQueueNums=4
  11. #是否允许Broker自动创建Topic,建议线下开启,线上关闭
  12. autoCreateTopicEnable=true
  13. #是否允许Broker自动创建订阅组,建议线下开启,线上关闭
  14. autoCreateSubscritionGroup=true
  15. #Broker对外服务的监听端口
  16. listentPort=10911
  17. #删除文件时间点,默认凌晨4点
  18. deleteWhen=04
  19. #文件保留时间,默认48小时
  20. fileReservedTime=120
  21. #commitLog每个文件的大小默认1G
  22. mapedFileSizeCommitLog=1073741824
  23. #ConsumeQueue每个文件默认存30w条,根据业务情况调整
  24. ConsumeQueue=300000
  25. #destroyMapedFileIntervalFocibly=120000
  26. #redeleteHangedFileInterval=120000
  27. #检查物理文件磁盘空间
  28. diskMaxUsedSpaceRatio=88
  29. #存储路径
  30. storePathRootDir=/usr/local/rocketmq/store
  31. #commitLog存储路径
  32. storePathCommitLog=/usr/local/rocketmq/store/commitlog
  33. #消费队列存储路径存储路径
  34. storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue
  35. #消息索引存储路径
  36. storePathIndex=/usr/local/rocketmq/store/index
  37. #checkpoint文件存储路径
  38. storeCheckpoint=/usr/local/rocketmq/store/checkpoint
  39. #abort文件存储路径
  40. abortFile=/usr/local/rocketmq/store/abort
  41. #限制的消息大小
  42. maxMessageSize=65536
  43. #flushConsumeQueueLeastages=2
  44. #flushCommitLogThoroughInterval=10000
  45. #flushConsumeQueueThoroughInterval=60000
  46. #Broker的角色
  47. #-ASYNC_MASTER以不复制Master
  48. #-SYNC_mATER 同步双写Master
  49. brokerRole=ASYNC_MASTER
  50. #磁盘方式
  51. #-ASYNC_FLUSH异步刷盘
  52. #-SYNC_FLUSH同步刷盘 flushDiskType=ASYNC_FLUSH
  53. #checkTransactionMessageEnable=false
  54. #发消息线程数量
  55. #sendMessagethreadPoolNums=128
  56. #拉消息线程池数量

(重复上面内容修改操作)

vim /usr/local/rocketmq/conf/2m-noslave/broker-b.properties

7、修改日志配置文件【两台机器】,命令:mkdir -p /usr/local/rocketmq/logs
命令:cd/usr/local/rocketmq/conf && sed-i's#${usr.home}#/usr/local/rocketmq#g'*.xml

8、修改启动脚本参数【两台机器】
vim /usr/local/rocketmq/bin/runbroker.sh
修改内容:
JAVA_OPT=”${JAVA_OPT} -server -Xmx1g -Xmn512m -XX:PermSize=128m

vim /usr/local/rocketmq/bin/runserver.sh

修改内容:
JAVA_OPT=”${JAVA_OPT} -server -Xmx1g -Xmn512m -XX:PermSize=128m

9、启动 NameServer【两天机器】,命令:cd/usr/local/rocket/bin nohup sh mqnamesrv &

10、启动Broker Server A 【192.168.100.24】
命令:nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-a.properties >/dev/null 2>&1 &
命令:netstat -ntlp
命令:jps
命令:tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/broker.log
命令:tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/namesrv.log

11、启动BrokerServer B 【192.168.100.25】
命令:nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-b.properties >/dev/null 2>&1 &
命令:netstat -ntlp
命令:jps
命令:tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/broker.log
命令:tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/namesrv.log
12、解压Tomcat,命令:tar -zxvf apache-tomcat-7.029.tar.gz -C /usr/local
13、进入tomcat,命令:cd apache-tomcat-7.0.29/webapps/ ,上传rocketmq-console控制台war包
14、命令:mikdir /usr/local/rocketmq-console
15、解压rocketmq-console.war到rocketmq-console文件夹中,命令:unzip rocketmq-console.war -d rocketmq-console
16、进入rocketmq-console中的web-inf的class文件,命令:cd rocketmq-console/ ,命令:cd WEB-INF,命令:cd class/
17、修改配置文件,命令:vim config.properties
配置完成,可以启动
18、启动tomcat,命令:/usr/local/apache-tomcat-7.0.29/bin/startup.sh
19|、查看启动结果,命令:jps
20、查看tomcat日志,命令:tail -f -n 500 /usr/local/apache-tomcat-7.0.29/logs/catalina.out

发表评论

表情:
评论列表 (有 0 条评论,505人围观)

还没有评论,来说两句吧...

相关阅读