RocketMQ教程(一):安装

2021年8月6日19:42:42
评论
196 2357字

使用场景

异步、削峰、解耦

同类比较

  • ActiveMQ一般都是老项目使用较多,新项目几乎都不会使用。
  • RabbitMQ 企业中使用的也挺多,功能也挺多。但是erlang语言不好调试。延迟极低,微秒级
  • RocketMQ 新兴的消息中间件,国内逐渐开始使用,并结合Spring Cloud Alibaba技术使用的越来越多。
  • Kafka 一般大数据使用的较多,吞吐量大,但是功能相对单一

基本构成

  • producer(生产者)、consumer(消费者)
    producer和consumer可看做是rocketmq的客户端,一般依附于业务应用程序。
  • brokerServer、nameServer
    其中brokerServer和nameServer是rocketmq的服务端,两者一起独立的对外提供服务

producer

consumer 负责消费producer发送的消息。consumer会从brokerServer获取消息,并传递给应用程序。

RocketMQ使用的消息原语是At Least Once(至少一次成功消费),如果一定时间内没有接收到consumer消息确认消费的响应结果,会将同一条消息再次投递给consumer。RocketMQ采用ack机制保证消息的消费成功,所以consumer可能会多次收到同一条消息,需要consumer的业务方做好幂等防护。

从使用者的角度来看,consumer分为两种方式来获取信息。一种是推模式(push consume),推模式看起来像是brokerServer将消息推给了consumer;另一种是拉模式(pull consume),拉模式看起来像是consumer主动的去brokerServer拉取消息(实际上,推模式是基于拉模式实现的)。

BrokerServer

BrokerServer负责消息的接收,存储和分发,是rocketmq最核心,最重量级的组成部分。为实现高可用和高吞吐,brokerServer通常采用集群部署,共同对外提供服务。Broker分主节点(master)和从节点(slave),主节点主要是面向生产者一般用于写操作,从节点主要是面向消费者用于读操作。一个主节点可以有多个从节点,Broker是通过name来分组的,每组中又通过id来区分主从的,id为0表示主节点,非0表示从节点。

NameServer

ameServer负责提供路由元数据。例如,brokerServer通常是集群部署的,其拓扑结构会经常的发生变化。如果每次集群中broker机器的上下线都需要通知所有的消费者、生产者,效率太低。

因此,rocketmq引入了nameServer作为brokerServer路由信息的维护者,broker的每次上下线都和nameServer通信,由nameServer来维护broker的路由信息,而producer和consumer通过访问nameServer获得对应broker的访问地址后,再向对应的broker发起请求。

nameServer解除了broker和客户端的耦合依赖关系,大大提高了效率。nameServer同样能以集群形式对外提供服务,集群内的nameServer服务器并不会互相通信,而是保持相互独立。如果将BrokerServer看做是一个微服务,那么NameServer就是注册中心,生产者发送消息需要从NameServer获取一个可用的BrokerServer,然后再往该BrokerServer中发送消息。

基本概念

Topic(主题)
Topic表示主题的意思,用于表示一类消息的分类名称或者说是一类消息对应的分类编码,生产者在发送消息时都必须指定一个Topic(分类),消费者通过指定分类来表示要具体消费那种消息。Topic就是消息的分类

Tag(标签)
如果说Topic用分类来表示,一般分类可能还会有具体的子类或者称为二级分类,那么Tag就是Topic的二级分类,或者理解为二级Topic。Tag用于对消息再次进行具体细致的分类。

Message(消息)
message消息是rocketmq中传递消息的主体,一般是个JSON字符串,生产者会将该JSON字符串发送到BrokerServer中,消费者会通过BrokerServer获取该JSON字符串来处理业务逻辑。

Message Queue(消息队列)
消息队列是消息的家,用来存储消息的地方。每个Topic默认都会分配4个Message Queue用于存储该Topic下的Message。

集群(Clustering)消费/广播(Broadcasting)消费
集群消费和广播消费是消费的两种方式:
集群消费:同一消费者组下的所有消费者共同瓜分消息,一个消息只能被一个消费者消费。
广播消费:同一消费者组下的所有消费者都能消费到每一条消息,人人有份,不用抢,就像村里的大喇叭一样,广播一响所有人都能听得见。

单机安装

http://rocketmq.apache.org/docs/quick-start/

然后按照官方的命令来即可

环境变量

vi ~/.bash_profile
export ROCKETMQ_HOME=/usr/local/rocketmq-all-4.8.0-bin-release
source ~/.bash_profile

修改两个sh文件broker和server,将jvm内存参数改小。
启动服务端:

# 启动nameser
nohup sh bin/mqnamesrv &

# 查看启动日志
tail -f ~/logs/rocketmqlogs/namesrv.log

#启动broker
nohup sh bin/mqbroker -n localhost:9876 &

tail -f ~/logs/rocketmqlogs/broker.log 

您可能感兴趣的文章

匿名

发表评论

匿名网友