apachekafka:镜像与复制

72qzrwbm  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(315)

Mirroring 正在kafka群集之间复制数据,而 Replication 用于复制kafka群集中的节点。
有什么特别的用途吗 Replication ,如果 Mirroring 是否已设置?

ru9i0ody

ru9i0ody1#

它们用于不同的用例。我们来澄清一下。
如文件所述,
在kafka中添加复制的目的是为了增强持久性和更高的可用性。我们要保证任何成功发布的消息都不会丢失并且可以被消费,即使在服务器出现故障时也是如此。此类故障可能由机器错误、程序错误或更常见的软件升级引起。我们有以下高级别目标:
在集群内部可能有网络分区(单个服务器出现故障等等),因此我们希望在节点之间提供复制。给定三个节点和一个集群的设置,如果server1失败,kafka可以选择两个副本。同一个集群意味着相同的响应时间(当然,这也取决于这些服务器的配置方式,但在正常情况下,它们不应该有太大差异)。
另一方面,镜像似乎非常有价值,例如,当您迁移一个数据中心时,或者当您有多个数据中心时(例如,美国的aws和爱尔兰的aws)。当然,这些只是几个用例。因此,您在这里所做的是为属于同一数据中心的应用程序提供一种更快更好的方式来访问数据—在某些上下文中,数据局部性就是一切。
如果在每个集群中都有一个节点,那么在发生故障的情况下,您可能有更高的响应时间,比如说,从爱尔兰的aws到美国的aws。
您可能会声称,为了实现数据局部性(集群1中的服务从集群1中的kafka读取),仍然需要将数据从一个集群复制到另一个集群。这是肯定的,但镜像带来的好处可能比直接从位于另一个数据中心的kafka读取(通过ssh隧道?)带来的好处更大,例如关闭单个连接、客户机连接/会话时间更长(取决于数据中心的位置),立法(有些数据可以在一个国家收集,而有些数据不应该收集)。
复制是更高可用性的基础。在数据位置很重要的上下文中,不应该使用镜像来处理高可用性。同时,在需要跨数据中心复制数据的情况下,不应该只使用复制(我甚至不知道如果没有镜像/ssh隧道,是否可以)。

相关问题