RocketMQ学习(一)

RocketMQ学习(一)

在这里插入图片描述
RocketMQ包含4个模块,Name Server(注册中心)、Broker(服务)、Producer(生产者)、Customer(消费者)

Name Server:注册中心,支持Broker的动态注册和发现,保存着Broker和Topic之间的关系。
Name Server集群:Name Server一般采用集群部署,但不同的Name Server之间不会互相通信,每个Name Server都保存着所有的数据。

按我的理解,一台Name Server就是一个服务注册中心,里面保存着Broker的信息,保存着Topic信息,Producer和Customer可以从Name Server里获取到需要的信息,从而实现消息的写入和读取。
Name Server的集群部署是为了防止单台Name Server挂掉后,导致整个MQ无法使用。

Broker:服务,用于存储消息。Broker启动后,会向Name Server集群中的每一台Name Server注册自己,并保持长链接,当自身新增加了Topic和Queue后,会把信息同步到Name Server中。
Broker集群:Broker采用的是主备模式,即一台Master Broker负责读写操作,一台或对台Slave Broker负责备份Master Broker里的信息。当Producer往Master Broker里写入信息时,Master Broker会把信息同步到Slave Broker里。Customer消费掉Master Broker里的信息后,会返回一个消息的被消费掉的信息,Master Broker也会把这个信息同步到Slave Broker里。这样一来,当Master Broker挂掉后,Slave Broker就能接手Master Broker的工作,从而保证服务的正常运行。

按我的理解,Broker就是一个容器,我们的业务系统通过Producer往里面存入消息,Customer从里面读取消息消费。
Broker集群主要是为了防止因为宕机或其他因素导致消息丢失和服务,其次是降低服务器的压力,避免因为业务越来越庞大,导致响应时间延长。

疑问:Broker、Topic、Queue之间的关系,是如何控制,又是如何分配的?

Producer:生产者。Producer负责生产消息,上线后,首先跟Name Server集群中的一台保持长链接,然后从里面获取到需要发送的Topic是哪台Broker里的,然后跟对应的Broker建立长链接,把消息发送到Broker里。
Producer Group:生产者组,即数个发送相同Topic的生产者,组合起来就是一个生产者组。

按我的理解,之所以要有生产者组,应该是因为短时间内发送大量消息,如果只有一台生产者,可能会导致消息堆积起来发不出来,造成堵塞,所以多增加几台,分散消息。

疑问1:我们发送的是同一个topic的消息,假如这个消息的是同一个接口产生的,我们要怎么实现让不同生产者去发送它?
疑问2:是否能有两个发送同一个Topic的消息的生产者组,如果能的话,那么是如何实现分组的?

Consumer:消费者。Consumer负责消费消息,跟Producer一样,从Name Server中获取Topic存放的信息,然后跟Broker建立长链接,最后从Broker里读取到消息进行消费。
Consumer Group:消费者组,即数个消费相同Topic的消费者,组合起来就是一个消费者组。

按我的理解,消费者组的作用就是提高消费效率,防止存放在Broker中的消息因为消费效率低下而越来越多。

疑问1:是否能有两个消费同一个Topic的消息的消费者组,如果能的话,那么是如何实现分组的?

暂时先到这,刚开始学,记录下,如果有大佬们看到了,欢迎指出我理解不到位或者理解错误的地方,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值