1、今日任务
- RocketMQ 是如何集群化部署承载高并发请求的?
- RocketMQ 是如何存储海量海量信息的,如何实现分布式存储的?
- RocketMQ 是如果 Master 节点挂掉了怎么办?岂不是会丢失一部分数据
- RocketMQ 是如何知道要发送到哪些 Broker 上去的?
2、MQ 如何集群化 部署承载高并发请求?
一台高配置的机器,部署了 RocketMQ 之后,可以支持 10 万+并发的访问,
答案: RocketMQ 可以集群化部署,可以部署再多台机器上面,每台机器可以承载 10 万+的高并发请求,那么 RocketMQ 集群就可以承载几十万+并发请求。
3、RocketMQ 如何存储海量消息的?
RocketMQ 收到消息之后,不会里面就让消费者进行消费,而是先将消息存储到自己的本地磁盘中,等需要消费的时候再进行处理。
答案:每台机器上部署的 RocketMQ 进程称之为 Broker,每个 Broker 会收到不同的消息,然后每个 Broker 就会将收到的消息存储到自己的本地磁盘中。
RocketMQ 存储海量消息机制的关键是可以实现分布式存储,将海量消息均衡的分布在 RocketMQ 集群的各台机器,这样每台机器可以存储部分消息数据,多台机器既可以存储海量消息。
4、RocketMQ是如何保证高可用的?如果Broker宕机了怎么办?岂不是部分消息数据会丢失。
Rocket进程简称为Broker,一个RocketMQ有多个Broker,每个Broker存储部分消息数据,如果Broker宕机了,岂不是会丢失部分的数据。
答案:RocketMQ实现高可用机制的关键是 Broker主从机制和多副本策略。Broker有两种角色,Master 和 Slave,一个Broker最少有一个Master节点,一个Slave节点。 Master Node收到消息之后,会将消息同步给Slave节点,只有Master Node收到了消息,并且成功将消息同步给了Slave节点,这条消息才算是真正的发送成功了。
如果Master节点宕机了,Slave节点有一份冗余消息数据,不会导致数据丢失,并且还能继续对外提供服务,保证MQ的高可用。
5、数据路由:怎么知道要访问那些Broker
答案: RocketMQ集群有一个NameServer集群,独立部署再其他机器上,Broker启动的时候,会向NameServer进行注册,NameServer包含了所有Broker节点的元数据信息。
如果要发送数据到Broker,会先找NameServer,从中获取Broker信息,然后再想Broker发送消息数据。