
跨集群数据镜像
|
175
央数据中心。镜像进程会读取每一个区域数据中心的数据,并将它们重新生成到中心集
群。如果多个数据中心出现了重名的主题,则可以将这些数据写到中心集群的一个同名主
题上,或者写到多个单独的主题上。
10.2.3
双活架构
当有两个或多个数据中心需要共享部分或全部数据,并且每个数据中心都可以生成和读取
数据时,可以使用双活架构,如图
10-3
所示。
所有应
用程序
所有应
用程序
西海岸用户 中南部用户
旧金山
Kafka
集群
休斯敦
Kafka
集群
图 10-3:双活架构模型
这种架构的主要好处在于,它可以为就近用户提供速度更快的服务,具有性能方面的优
势,而且不会因为数据可用性问题(在星型架构中就有这种问题)做出功能方面的牺牲。
还有一个好处是冗余和弹性。因为每个数据中心都具备完整的功能,所以一旦一个数据中
心发生故障,则可以把用户重定向到另一个数据中心。这种故障转移只涉及网络重定向,
是一种最简单也最透明的故障转移方案。
这种架构的主要问题在于,如何在多个数据中心进行异步读写时避免冲突。比如,在镜像
数据时如何确保同一条消息不会被无止境地来回镜像?更重要的是,保证跨数据中心的数
据一致性会变得更加困难。以下是可能遇到的问题。
•
如果用户向一个数据中心发送数据,并从另一个数据中心读取数据,那么在用户读取数
据之前,他发送的数据有可能还没有被镜像到那个数据中心。对用户来说,这就好比把
一本书加到购物车里,但是当他点开购物车时,书不在里面。因此,在使用这种架构时,
开发人员经常会将用户“黏”在同一个数据中心里,确保用户在大多数情况下使用的是 ...