Mirroring在Kafka集群之间复制数据,而Replication用于在Kafka集群中复制节点。
如果Replication已经安装好了,是否有Mirroring的特定用途?
发布于 2016-04-15 08:02:41
它们用于不同的用例。让我们试着澄清一下。
正如文档中所描述的,
在Kafka中添加复制的目的是为了更强的耐久性和更高的可用性。我们希望确保任何成功发布的消息都不会丢失,甚至在服务器出现故障时也可以使用。这些故障可能是由机器错误、程序错误或更常见的软件升级引起的。我们有以下高层次的目标:
在集群内部可能有网络分区(单个服务器失败,等等),因此我们希望在节点之间提供复制。如果设置了三个节点和一个集群,如果server1失败,那么卡夫卡可以选择两个副本。相同的集群意味着相同的响应时间(当然,这也取决于这些服务器是如何配置的,但在正常情况下它们不应该有太大的不同)。
另一方面,镜像似乎非常有价值,例如,当您正在迁移一个数据中心时,或者当您有多个数据中心时(例如,美国的AWS和爱尔兰的AWS )。当然,这些只是几个用例。所以,这里您要做的是给属于同一个数据中心的应用程序一种更快更好的方式来访问数据--在某些上下文中的数据局部性就是一切。
如果您在每个集群中有一个节点,如果发生故障,您可能有更高的响应时间,例如,从位于爱尔兰的AWS到美国的AWS。
您可能会声称,为了实现数据局部性(集群中的服务从集群一中的kafka读取),仍然需要将数据从一个集群复制到另一个集群。这是绝对正确的,但镜像的好处可能比直接阅读(通过SSH隧道?)获得的好处要高。从位于另一个数据中心的Kafka (例如,单个连接向下,客户端连接/会话时间更长(取决于数据中心的位置),立法(一些数据可以在一个国家收集,而其他一些数据不应该收集)。
复制是高可用性的基础。在数据局部性很重要的上下文中,不应该使用镜像来处理高可用性。同时,您不应该只在需要跨数据中心复制数据的地方使用复制(我甚至不知道在没有镜像/ ssh隧道的情况下是否可以复制)。
https://stackoverflow.com/questions/36640822
复制相似问题