RocketMQ详解(1)——RocketMQ简介与环境搭建

RocketMQ详解(1)——RocketMQ简介与环境搭建

一. RocketMQ简介

  1. RocketMQ是一款分布式的、队列模型的消息中间件,由Alibaba研发,借鉴参考了JMS规范的MQ实现,更参考了优秀的开源消息中间件Kafka,并且结合Alibaba实际的业务需求,在天猫双十一场景实现了业务削峰、分布式事务等功能的优秀框架。目前(截止2018.9.5)开源稳定版本为4.2.0,最新版本为4.4.0。
  2. Github地址:https://github.com/apache/rocketmq
  3. 其代码结构清晰优秀,底层采用Netty框架进行NIO通信。
  4. 内部使用轻量级的NameServer进行服务发现和动态路由,提高了服务性能,并且支持消息失败重试机制。
  5. 天然地支持集群模式、消费者负载均衡广播消费等特性、水平扩展能力很强、吞吐量大。
  6. 采用零拷贝的原理、顺序写盘,支持亿级消息堆积能力。
  7. 提供丰富的消息机制,如顺序消息、事务消息、延迟消息等。

二. RocketMQ的优势

  1. 能够严格保证消息顺序。
  2. 提供丰富的消息拉取模式。
  3. 高效的订阅者水平扩展能力。
  4. 实时消息订阅机制。
  5. 亿级消息堆积能力。
  6. 事务消息,支持分布式事务。

三. 选择RocketMQ的理由

  1. 天生支持集群模式,无单点故障问题,任意一点高可用,并支持水平扩展。
  2. 海量消息的堆积能力,并且消息堆积后,写入低延迟。
  3. 支持上万数量的队列。
  4. 支持消息失败重试机制。
  5. 消息可查询。
  6. 开源社区活跃。
  7. 经历多次双十一考验,成熟度较高。

四. 环境搭建

  1. RocketMQ 4.x版本之后,环境的搭建方式与以前有了较大的不同,具体的方式可以参考官网:http://rocketmq.apache.org/docs/quick-start/,里面有详细的介绍。环境需要JDK1.8以上和Maven3.2以上版本。这里介绍本人在搭建环境时遇到的坑:

    1. 启动NameServer或Broker时报错:There is insufficient memory for the Java Runtime Environment to continue

      原因是RocketMQ在启动NameServer或Broker时,或分配较大的内存,如果生产机内存较小,则无法正常启动。解决方式很简单,直接修改配置即可。找到runserver.sh和runbroker.sh启动脚本,将虚拟机内存参数改为:

      JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn125m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

      重新启动即可

猜你喜欢

转载自blog.csdn.net/weixin_34452850/article/details/82431475