RocketMQ基本概念相对比较简单;基本就是【服务发现、磁盘存储、主从复制】 这三个概念;接下来我就用网络拓扑图给大家一一介绍。
image.png首先我们带着疑问来探讨下;我们Producer怎么去写消息、写到哪里 写到Broker ? 怎么写到Broker?我们Consumer根据什么来消费? 他们之间关系是怎么样的?
一、Name Server
Name Server就相当与一个注册中心、我们Broker先会把自己的信息先注册到Name Server中(包括IP 集群组)、而我们Producer、Consumer也会先去Name Server做服务发现、或者订阅【主题信息】、去写消息、或者消费消息。
二、Broker
Broker一般都是主从、或者一主多从、我们【主题消息】都是存储在Broker中、主从之间可以【异步复制】、也可【同步复制】数据;看业务要求来配置;性能也有差异。
比如写数据都是写 A Broker Master中;如果A Master挂了;就不能写;只能读A Slave节点。而新进来的消息则会写到;B组Broker Maser中。一旦A从消费完;就不会在A组消费了、就直接B组写、和消费。
二、Producer
首先会先去Name Node 做服务发现;Broker以及主题消息都存放在Name Server中;Producer先去Name Server找对应【主题消息】是属于那个Broker集群的;这样才能写对消息位置。
三、Consumer
Consumer首先要去Name Server订阅主题、要先清楚订阅的主题在Name Server中是属于那个Broker集群。这样才能消费对。
再则我们可以看看拓扑图的线;Consumer端可以消费A组Master Slave、也可以消费B组的Master Slave 就是为了保证高可用。
比如说A Master挂了;可以直接消费A Slave、虽然A组不能写只能读(只有Master才能写)、但能把主题消息写到B组的Master; 等A组的Slave消费完,直接可以消费B组的。而我们Broker可以无限扩展多个Broker来保证高可用。
网友评论