文档详情

MetaQ 分布式消息服务中间件.pdf

发布:2021-07-28约1.05万字共11页下载文档
文本预览下载声明
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 的存储结构
显示全部
相似文档