前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RocketMQ源码学习:一、概述与部署启动

RocketMQ源码学习:一、概述与部署启动

作者头像
iiopsd
发布2022-12-23 08:54:31
2940
发布2022-12-23 08:54:31
举报
文章被收录于专栏:iiopsd技术专栏iiopsd技术专栏

背景

随着业务的快速发展,业务越来越复杂,服务之间相互调用形成复杂的控制关系、调用关系和数据传递关系。服务联系越多,耦合性越强。为了使服务高内聚低耦合,提高服务的高可用性,就需要对服务进行异步解耦。RocketMQ就是服务解耦的时候常用一种解决方案。

介绍

RocketMQ是阿里开源的一个优秀成熟的产品,我们可以使用RocketMQ作为服务间异步通信的中间件。随着业务的并发吞吐量上升,也可以使用RocketMQ削峰限流。RocketMQ架构简单、支持多种业务场景,有很强的扩展性,在很多大厂都有成功的使用案例,是一个成熟可靠的开源产品,广泛的应用于互联网、大数据和物联网等业务场景。

RocketMQ vs. ActiveMQ vs. Kafka

特性

ActiveMQ

Kafka

RocketMQ

单机吞吐量

万级

10万级,支撑高吞吐

10万级,高吞吐,一般配合大数据类的系统进行实时数据计算、日志采集等场景

topic数量对吞吐量的影响

-

topic可以达到几百/几千级别,吞吐量会有较小幅度的下降,这是RocketMQ的一大优势,在同等机器下可以支撑大量的topic

topic从几十到几百时,吞吐量会大幅度下降,在同等机器下,kafka尽量保证topic数量不要过多,如果要支撑大规模的topic,需要增加更多的机器资源

时效性

ms级

ms级

ms级

可用性

高,基于主从架构实现高可用

非常高,分布式架构

非常高,分布式一个数据多个副本,少数机器宕机,不会丢失数据,不会导致不可用

消息可靠性

有较低概率丢失数据

经过参数优化配置可以做到0丢失

经过参数优化配置可以做到0丢失

功能支持

MQ领域功能完善

MQ功能较为完善,基本分布式,扩展性好

功能较简单,主要支持简单的MQ功能,在大数据领域的实时计算以及日志采集被大规模使用

其他

起步早,并发场景经验少

社区活跃度高

阿里开发开源,社区活跃度高

实践

我们带着几个问题去动手实践,加深印象。

  • 注册
  • nameserver
  • topic、broker和queue之间的关系
  • 设计风格、架构设计理念

1、从github下载RocketMQ 压缩包,github地址:https://github.com/apache/rocketmq

2、解压压缩包到opt目录下

代码语言:javascript
复制
unzip rocketmq-all-4.9.4-bin-release.zip -d /opt

3、进入到解压目录下的bin文件夹

代码语言:javascript
复制
cd /opt/rocketmq-4.9.4/bin
[root@centos rocketmq-all-4.9.4-bin-release]# ls
cachedog.sh       dledger    mqadmin.cmd   mqbroker.numanode0  mqbroker.numanode3  mqshutdown      play.cmd   runbroker.cmd  runserver.sh  tools.cmd
cleancache.sh     export.sh  mqbroker      mqbroker.numanode1  mqnamesrv           mqshutdown.cmd  play.sh    runbroker.sh   setcache.sh   tools.sh
cleancache.v1.sh  mqadmin    mqbroker.cmd  mqbroker.numanode2  mqnamesrv.cmd       os.sh           README.md  runserver.cmd  startfsrv.sh
[root@centos bin]# 

4、在第一个服务器节点启动nameserver

代码语言:javascript
复制
[root@centos bin]# ./mqnamesrv
OpenJDK 64-Bit Server VM warning: Using the DefNew young collector with the CMS collector is deprecated and will likely be removed in a future release
OpenJDK 64-Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release.
The Name Server boot success. serializeType=JSON

5、在第一个服务器节点启动broker

代码语言:javascript
复制
[root@centos bin]# ./mqbroker -n localhost:9876
OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000005c0000000, 8589934592, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 8589934592 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /opt/rocketmq-all-4.9.4-bin-release/bin/hs_err_pid3228.log

启动的时候报错了,提示内存分配过大,因为本地虚拟机配置的是2G内存,进入runbroker.sh 修改配置,找到内存配置,改为1G

代码语言:javascript
复制
vim runbroker.sh

JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g"

保存配置后,重新启动broker,启动成功

THE END.

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-12-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 介绍
  • RocketMQ vs. ActiveMQ vs. Kafka
  • 实践
  • THE END.
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档