RocketMq原理,这不会没有人不知道吧

mq是什么就是消息队列,也称为消息中间件,遵循fifo原则。

小项目不适合mq,对数据一致性有要求的场景不适合mq。

比如几十万数据,直接放到消息队列,搞个消费者慢慢一条条处理(消峰了?)

Rabbitmq和Rocketmq区别(面试)

Rabbitmq社区要活跃些,Rocketmq要低些

Rocket支持百万级,Rabbitmq是万级。

最重要,Rocketmq协议不标准(我感觉这一句话就够了,剩下的随便扯点,都感觉像是对的。)

kafka一般是大数据领域,elk日志收集,实时性要求高

redis如何消息队列,先进先出,用list数据类型,用发布订阅那个模式

技术选项建议:

业务场景简单,快速上线,redis

大数据场景:日志收集,实时性要求高

金融领域:不能接受消息丢失或重复,推荐rabbitmq和rokktmq

mq的协议(没啥用,没人问)

AMOP-rabbitmq

roketmq原理

要先搞清楚有哪些角色

nameserver:有点类似于微服务的注册中心,管理broker信息(类似于通讯录,看有哪些broker)

broker集群:多个节点,broker里面放topic和队列,找的话根据topic来找队列。topic名字可以一样,在两个节点存储。层级反正就是boker下有topic,topic下就是队列。broker可以主从集群,防止单点故障

broker反正就是集群的存在,还有主从集群,可以从主获取,也可以从从获取。brokerid=0就是主,brokerid=1就是从,说实话,叫我面试说这么详细是说不出来,后面有公式化答案。

简而言之:就是broker要和nameserver建立长连接,定时注册topic到nameserver(注册topic到那么server)

难道每个broker都有主备,这我也不是很清楚。

生产者:组的存在,多个生产者组集群。生产者和nameserver建立长连接,1.生产者指定topic名称,首先获取topic在哪些broker上。2.根据一定规则,从topic下的多个队列中选择其中一个队列来接受消息。3  拿到该队列所在broker节点信息。4.根据broker信息连接broker,将信息发送给指定队列。(我在想能不能一句话概括这么多的废话,我觉得是这样的,生产者根据topic名,获取broker中topic地址信息,然后发送消息到topic中,再然后把消息发给队列中,当然队列是多个的,要根据某种规则分配。)

消费者:1 和nameserver建立长连接。 2.根据topic获取broker信息 3监听这些节点上,对应topic的队列。(我觉得也是一句话,根据topic去broker找topic,监听topic下的队列获取信息)

消费者获取消息的方式:推送式,拉取式

原理的话:

启动nameserver,监听broker集群,生产者,消费者,等待他们连接。

启动broker:和nameserver建立长连接,发送心跳包,里面有它各个broker下的信息。

创建topic,创建topic,创建Topic时需要指定该Topic要存储在哪些Broker上

生产者生产:生产的时候根据topic,把消息发送到它的队列下面。(只是说出了主要,建立连接,获取信息,根据规则发到哪个队列)

消费者:消费的时候,根据topic找到topic下的队列,然后消费(说出了主要的,建立连接,获取信息,监听topic下队列。)

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RocketMq是一个纯Java、分布式队列模型的消息中间件,具有高可用、高可靠、高实时、低延迟的特点。其原理主要包括以下几个方面: 1. 生产者和消费者模型:RocketMq采用了生产者和消费者模型,生产者将消息发送到消息队列,消费者从消息队列接收并处理消息。这种模型能够实现解耦,提高系统的可扩展性和可靠性。 2. 消息存储:RocketMq将消息存储在磁盘上,以保证消息的可靠性和高可用性。消息存储采用了顺序写和随机读的方式,以提高存储和读取的效率。 3. 主从复制:RocketMq采用主从复制的方式来保证消息的高可用性。主节点负责接收消息并将其复制到从节点,从节点在主节点失效时接管服务,从而保证消息的可靠性和高可用性。 4. 消息索引:RocketMq通过消息索引来快速查找消息。索引记录了消息的存储位置等信息,使得消息的读取和查找更加高效。 5. 消息推拉模式:RocketMq支持消息的推拉模式,生产者可以选择将消息推送到消费者,也可以让消费者主动拉取消息。这样可以根据实际需求进行灵活的消息传输。 6. 高可用服务:RocketMq提供了多个Broker实例,通过集群方式来提供高可用的服务。当一个Broker实例失效时,其他实例可以接管服务,确保消息的可靠传输。 总结来说,RocketMq原理包括了生产者和消费者模型、消息存储、主从复制、消息索引、消息推拉模式和高可用服务等方面,通过这些机制来实现高可用、高可靠、高实时、低延迟的消息传输。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值