1.MQ如何集群化部署来支撑高并发访问?
RocketMQ单机可以支撑10万+的并发访问,集群部署可以让流量分散在多台机器上来支撑高并发。
2.MQ如果要存储海量消息应该怎么做?
MQ会收到大量的消息,并不是立马就会被所有的消费方获取过去消费的,所以一般MQ都得把消息在自己本地磁盘存储起来,然后等待消费方获取消息去处理。
本质上RocketMQ存储海量消息的机制就是分布式的存储。所谓分布式存储,就是把数据分散在多台机器上来存储,每台机器存储一部分消息,这样多台机器加起来就可以存储海量消息了
3.如何保证高可用,万一Broker宕机了怎么办?
Broker主从架构以及多副本策略,Master Broker收到消息之后会同步给Slave Broker,这样Slave Broker上就能有一模一样的一份副本数据。即使Master出现故障,还有Slave上有一份数据副本,可以保证数据不丢失,继续对外提供服务,保证了MQ的可靠性和高可用性。
4.数据路由:怎么知道访问哪个Broker?
RocketMQ为了解决这个问题,有一个NameServer的概念,他也是独立部署在几台机器上的,然后所有的Broker都会把自己注册到NameServer上去,对于系统而言,如果他要发送消息到Broker,会找NameServer去获取路由信息,就是集群里有哪些Broker等信息.如果系统要从Broker获取消息,也会找NameServer获取路由信息,去找到对应的Broker获取消息。
5.NameServer如何实现高可用?
NameServer支持部署多台机器的,起到高可用的效果,保证任何一台机器宕机,其他机器上的NameServer可以继续对外提供服务。
6.Broker是把自己的信息注册到哪个NameServer上去?
每个Broker启动都得向所有的NameServer进行注册也就是说,每个NameServer都会有一份集群中所有Broker的信息。
7.系统如何从NameServer获取Broker信息?
系统自己每隔一段时间,定时