MetaQ 分布式消息服务中间件.pdf
文本预览下载声明
MetaQ 分布式消息服务中间件
MetaQ 的特性
核⼼功能
MetaQ 是⼀款分布式消息服务中间件, 它采⽤了发布-订阅模型. 发布者发发布消息到MetaQ, MetaQ储
存发布者发送过来的消息, 订阅者订阅了MetaQ的消息之后, 通过pull的⽅式消费MetaQ的消息. 消费者主
动从MetaQ拉数据, 解析成消息并消费.
核⼼架构
● Broker 集群
Broker 集群采⽤了主从模式从⽽达到⾼可⽤的⽬的. Consumer 通过负载均衡连接Broker集群中的某
⼀个节点
进⾏数据读取. ⽽ Producer 只能连接 Master Broker 写⼊数据.
○ Master
Master ⻆⾊的 Broker ⽀持读和写. Master Broker 在被 producer 写⼊新数据后, 会通过⼴播
的⽅式让
它的所有 slave broker 更新数据.
○ Slave
Slave ⻆⾊的 Broker 仅⽀持写.
● NameServer 集群
NameServer 在这⾥的作⽤类似于服务注册中⼼, 通过集群和负载均衡的⽅法达到了注册中⼼⾼可⽤的
⽬的.
每⼀个 Broker 都会与 NameServer 集群中的所有节点建⽴⻓链接, 定期注册所有topic到
NameServer.
Producer 和 Consumer 会与 NameServer 集群中的某⼀台服务器建⽴⻓链接, 定期从 NameServer
读取topic的路由信息, 并于提供topic服务的 master broker 建⽴⻓链接.
1
Consumer 同理, 但 consumer 会同时与 master broker 和 slave broker 建⽴⻓链接. Consumer
既可以从 Master Broker 订阅消息, 也可以从 Slave Broker 订阅消息.
● Client 集群
○ Producer 集群
负责发布消息给 Broker
○ Consumer 集群
负责从 Broker 接收消息 (采⽤pull⽅法)
核⼼模式
● 单 master ⽆ slave 模式
⾮常低的可⽤性, 易发⽣单点故障导致整个环境不可⽤
● 单 master 多 slave 模式
低可⽤性, 因为MetaQ 不⽀持⾃动或热切换 Master Broker, Master Broker 宕机后将只⽀持读操作.
● 多 master ⽆ slave 模式
低可⽤性, 单个 master 宕机后, 该 master 上的所有 topic 将⽆法继续写⼊或读取
● 多 master 多 slave
⾼可⽤性, 单个 master 宕机后, consumer 仍然可以从其 slave 消费数据.
○ 移步复制
数据写⼊ master broker 之后直接返回 success, 提⾼性能, 但可能出现 slave 丢失数据但
情况
○ 同步双写
主备 broker 都将数据持久化之后, 才会返回 success. 性能较⽐前者略低, 但保证了数据的⼀致
性.
消息持久化
不同于notify, MetaQ 在接收消息之后, ⼀定会将消息持久化在本地硬盘的⽂件⾥. 所以服务器持久化的性
能会直接影响 MetaQ 的性能.
消息过滤
MetaQ⽀持两种消息过滤⽅式:
● 服务器端过滤
减少⽆⽤数据在⽹络上的传输, 但是服务器端负担增加.
● 客户端过滤
增加⽆⽤数据在⽹络上的传输, 客户端需要接收⼤量数据, 增加了应⽤的负担.
消息顺序
发送端将需要保证顺序的信息储存在同⼀个队列⾥, 并将队列发送给消费端. 消费端从队列⾥获取消息, 保
证了消息顺序的⼀致性.
发送端可以并⾏发送多组队列, 从⽽提⾼性能.
MetaQ 的存储结构
显示全部