一.阿里开源消息队列 RocketMQ4.x介绍和新概念讲解
Apache RocketMQ作为阿里开源的一款高性能、高吞吐量的分布式消息中间件
1.1 特点
支持Broker和Consumer端消息过滤
支持发布订阅模型,和点对点
支持拉pull和推push两种消息模式
单一队列百万消息、亿级消息堆积
支持单master节点,多master节点,多master多slave节点
任意一点都是高可用,水平拓展,Producer、Consumer、队列都可以分布式
消息失败重试机制、支持特定level的定时消息
新版本底层采用Netty
4.3.x支持分布式事务
适合金融类业务,高可用性跟踪和审计功能。
1.2 概念:
Producer:消息生产者
Producer Group:消息生产者组,发送同类消息的一个消息生产组
Consumer:消费者
Consumer Group:消费同类消息的多个实例
Tag:标签,子主题(二级分类)对topic的进一步细化,用于区分同一个主题下的不同业务的消息
Topic:主题, 如订单类消息,queue是消息的物理管理单位,而topic是逻辑管理单位。一个topic下可以有多个queue,
默认自动创建是4个,手动创建是8个
Message:消息,每个message必须指定一个topic
Broker:MQ程序,接收生产的消息,提供给消费者消费的程序
Name Server:给生产和消费者提供路由信息,提供轻量级的服务发现、路由、元数据信息,可以多个部署,互相独立(比zookeeper更轻量)
Offset: 偏移量,可以理解为消息进度
commit log: 消息存储会写在Commit log文件里面
二.阿里云Linux服务器部署JDK8实战
linux下使用wget下载jdk8:
进到目录/usr/local/software 配置环境变量
解压:tar -zxvf jdk-8u201-linux-x64.tar.gz
重命名:mv jdk1.8.0_201 jdk8
vim /etc/profile
加入
export JAVA_HOME=/usr/local/software/jdk8
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME PATH CLASSPATH
使用 source /etc/profile 让配置立刻生效
三.阿里云Linux服务器安装Maven实战
解压:tar -zxvf apache-maven-3.6.0-bin.tar.gz
重命名: mv apache-maven-3.6.0 maven
vim /etc/profile
export PATH=/usr/local/software/maven/bin:$PATH
立刻生效:source /etc/profile
四.阿里云服务器源码部署RocketMQ4.X(Linux系统)
官方下载最新源码包,阿里云Linux服务器部署,解决内存不够问题
文档地址
Liunx 解压安装 yum install unzip
常见问题:
NameServer内存不够怎么处理
找到 runserver.sh 修改 JAVA_OPT
报错问题如下
[root@iZwz94sw188z3yfl7lpmmsZ apache-rocketmq]# sh bin/mqnamesrv
Java HotSpot(TM) 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
Java HotSpot(TM) 64-Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release.
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000006ec800000, 2147483648, 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 2147483648 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /usr/local/software/rocketmq-all-4.4.0/distribution/target/apache-rocketmq/hs_err_pid8993.log
解决如下 编辑 bin/runserver.sh:
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
Broker内存不足
找到 runbroker.sh 修改 JAVA_OPT
JAVA_OPT="${JAVA_OPT} -server -Xms528m -Xmx528m -Xmn256m"```