2.2.4.Pulsar跨机房复制
2.2.5.Pulsar跨机房复制 如何配置
2.2.4.Pulsar跨机房复制
在大型的分布式系统中,都会涉及到跨多个数据中心的需求,通常会使用跨地域复制机制提供额外的冗余防止服务无法正常运作。Apache Pulsar 的跨地域多机房互备特性,是Pulsar企业级特性的重要组成部分,它在保证数据稳定可靠的同时,为用户提供了便捷的操作和管理。
Pulsar 自带的跨地域复制机制(Geo-Replication)可以提供一种全连接的异步复制.
在上图系统中,有三个数据中心:Cluster-A、 Cluster-B、 Cluster-C。用户创建的一个 Topic 主题 T1 设置了跨越三个数据中心做互备。在三个数据中心中,分别有三个生产者:P1、P2、P3,它们往主题 T1 中发布消息;有两个消费者:C1、C2,订阅了这个主题,接收主题中的消息。
当消息由本数据中心的生产者发布成功后,会立即复制到其他两个数据中心。消息复制完成后,消费者不仅可以收到本数据中心产生的消息,也可以收到从其他数据中心复制过来的消息。
它的工作机制是在 Broker 内部,为跨地域的数据复制启动了一组内嵌的额外生产者和消费者。当外部消息产生后,内嵌的消费者会读取消息;读取完成后,调用内嵌的生产者将消息立即发送到远端的数据中心。
跨地域复制需要设置"租户"在数据中心之间的访问权限。
在配置了跨地域复制后,每个发送进来的消息,首先被保存在本地集群中;然后异步地推送到远端的集群。如果本地集群和远端集群之间没有网络问题,消息会被立即推送给远端集群。这样端到端的发送延迟主要由集群之间网络的决定。
在图示中,无论生产者(Producer)P1、P2和P3在什么时候分别将消息发送给ClusterA、Cluster B和Cluster C中的主题T1,这些消息均会立刻复制到整个集群。一旦完成复制,消费者(Consumer) C1和C2即可从自己所在的集群消耗这些消息,并且保持消息在每个Producer内部的发送顺序。
因为消息已经从其他远端集群发送到本地集群的 Topic,所以每个集群内部都会保留这个 Topic 中产生的所有消息。对于每个 Consumer 来说, Consumer 的订阅(subscription,维护 Consumer 对 Topic 的消费和 ack 的位置)是针对本地集群的 Topic,相当于 Consumer 消费本地集群的消息。
2.2.5.Pulsar跨机房复制
如何配置呢
说明:此处操作,是模拟以及构建了三个pulsar数据中心的方案(cluster1, cluster2, cluster3)
- 第一步:首先创建一个租户,并给三个数据中心的权限
bin/pulsar-admin tenants create my-tenant --allowed-clusters cluster1, cluster2, cluster3
- 第二步: 创建namespace
bin/pulsar-admin namespaces create my-tenant/my-namespace
- 第三步: 设置namespace中topic在那些数据中心之间进行互备
bin/pulsar-admin namespaces set-clusters my-tenant/my-namespace --clusters cluster1, cluster2, cluster3
说明: 在未来, 如果新增了数据中心,或者关闭数据中心, 可以随时进行配置调整操作, 而且pulsar表示这样的操作并不会对流量有任何影响。
bin/pulsar-admin namespaces set-clusters my-tenant/my-namespace --clusters cluster1, cluster2, cluster3