消息队列上云挑战与方案:腾讯云的 Apache Pulsar( 四 )


消息队列上云挑战与方案:腾讯云的 Apache Pulsar
文章图片

文章图片
无论是同城跨机房还是三中心的高可用 , 对写入都有限制——限制每条消息必须要跨机房/地域写入 , Ack成功才算成功 。
此外 , 我们实现了自动无感知切换模式 。如果找不到相应的备份地域 , 自动通过模式切换进行降级 , 使用户可以在单个区域里面继续写入、生产、消费 , 实现无感知切换 。
Pulsar具备跨机架、跨区域感知的能力 , 云上的运营端配合Broker中bookkeeperClientRackawarePolicyEnabled、bookkeeperClientRegionawarePolicyEnabled、bookkeeperClientSecondaryIsolationGroups等参数 , 就能实现上述能力 。
除了实现Broker的高可用 , 我们也实现了跨机房/地域ZooKeeper的高可用 。为了能够快速恢复集群 , 每一个数据中心的ZooKeeper都有Observer 。Observer不参与投票和选举 。当集群节点数不足时 , Observer可快速切换为对应的Follower , 参与选举 , 保证ZooKeeper集群的高可用 。
另外 , 我们弱化了对ZooKeeper的依赖 。即使一段时间内ZooKeeper不可用 , Broker还可以继续对外提供服务 , 弱化上层业务对切换的感知 。
由于地域之间网络延迟 , 保证强一致性跨地域容灾 , 会让上层业务使用消息队列的延迟上升 , 因此需要业务方根据自身的实际情况 , 权衡选择具体的异地多活方式 。
5未来寄语
相对于其他传统消息队列 , ApachePulsar借助存储与计算分离的云原生架构 , 以及支撑平滑迁移、承载海量分区、跨区域数据复制等原生功能特性 , 成为解决原有消息队列上云挑战的最佳解决方案之一 , 目前不断吸引众多国内外企业落地并聚集了众多活跃开发者 。但当前ApachePulsar距离最终的Serverless化、无规格化、无限流量等愿景目标还有一段路要走 , 这也正是ApachePulsar社区众多贡献者的价值所在 , 期待大家能够参与进来 。我们会继续积极和社区合作 , 一起完善ApachePulsar生态 。
云原生是正在发生的重要技术事实 , 云原生落地之路也刚刚开始 , 期待通过丰富的场景和实践 , 持续推动云原生前进 。希望上述我们在消息队列方向的探索与实践能够带给有着类似需求的同行一些参考 。
在腾讯云上 , 我们基于ApachePulsar推出了TDMQ消息队列 , 除了上述改动 , 还有其他新特性 。2021年 , TDMQ会提供更多的新特性 , 支持HTTP、AMQP等多种协议 , 方便使用其他消息队列的用户无缝迁移到腾讯云上 。同时 , 我们还会有更多增强能力 , 如Function、金融级SLA承诺、全球消息同步、ServerlessTopic、弹性用量等等 。