Streams Replication Manager(SRM)是一种企业级复制解决方案,可实现容错、可扩展且健壮的跨集群Kafka主题复制。SRM提供了动态更改配置的功能,并使Topic属性在高性能的集群之间保持同步。SRM还提供了自定义扩展,可促进安装、管理和监视,从而使SRM成为针对任务关键型工作负载而构建的完整复制解决方案。Streams Replication Manager由两个主要组件组成:流复制引擎和流复制管理服务。
图1.流Replication Manager概述
流复制引擎
流复制引擎是用于Kafka集群的下一代多集群和跨数据中心复制引擎。
流复制管理服务
流复制管理服务是由开源Cloudera扩展提供支持的服务,这些扩展利用了流复制引擎的功能。这些服务提供:
• 简易安装
• 生命周期管理
• 管理和监视跨集群的复制流
流复制管理服务包括以下自定义扩展:
Cloudera SRM驱动程序
Cloudera SRM驱动程序是Stream Replication Engine的小包装,它添加了Cloudera提供的扩展。它具有启动SRM集群的功能,并具有指标报表。与Cloudera SRM驱动程序关联的命令行工具称为srm-driver。
Cloudera SRM客户端
Cloudera SRM客户端为用户提供了命令行工具,这些工具可启用主题和消费者组的复制管理。与Cloudera SRM Client关联的命令行工具称为srm-control.
Cloudera SRM服务
Cloudera SRM服务由REST API和Kafka Streams应用程序组成,以聚合和显示集群、主题和消费者组指标。与Cloudera SRM服务关联的命令行工具称为 srm-service。
主要功能
SRM具有以下主要功能:
远程主题
远程主题是通过命名约定引用源集群的复制主题。例如,“ us-west”源集群中的“ topic1”主题在目标集群上创建了“ us-west.topic1”远程主题。SRM会在整个组织中自动应用此可配置的“复制策略”,从而使工具能够区分远程主题和源主题。
一致的语义
分区和记录偏移量在复制的集群之间同步,以确保消费者可以从一个集群迁移到另一个集群而不会丢失数据或跳过记录。
跨集群配置
主题级配置属性和ACL策略在集群之间同步。例如,可以读取源主题的principal可以自动读取任何相应的远程主题。这简化了跨多个Kafka集群的主题管理。
消费者组checkpoint
除了数据和配置外,SRM还通过定期检查点复制消费者组进度。以可配置的时间间隔,将检查点记录发送到下游集群,对白名单的消费者组和主题分区的最新偏移量进行编码。与主题一样,组与白名单匹配,该白名单可以通过srm-control动态更新。通常,消费者组偏移量不能在Kafka集群之间移植,因为在不同集群上原本相同的主题分区之间的偏移量不一致。SRM的检查点记录通过包含偏移量来解决此问题,这些偏移量会自动从一个集群转换为另一集群。此偏移平移功能可双向使用。消费者组可以从一个集群迁移到另一个集群(故障转移),然后又移回(故障回复),而不会跳过记录或失去进度。
自动主题和分区检测
SRM会在创建新主题、分区和消费者组时监视Kafka集群。将这些与可配置的白名单进行比较,其中可包括正则表达式。
自动化消费者迁移的工具
SRM工具使运营商能够在保留状态的同时转换集群之间的偏移量并迁移消费者组。
多集群环境的集中配置
SRM利用单个顶级配置文件来实现跨多个Kafka集群的复制。此外,命令行工具可以更改实时复制哪些主题和消费者组。
复制监控
由于集群复制将主要用于高度关键的Kafka应用程序,因此对于客户来说,能够轻松可靠地监视Kafka集群复制至关重要。SRM随附的自定义扩展收集并聚合Kafka复制指标,并通过REST API使它们可用。Streams Messaging Manager(SMM)使用此REST API来显示指标。客户还可以使用REST API实施自己的监视解决方案,或将其插入第三方解决方案。这些指标使集群复制的状态对最终用户可见,然后最终用户可以根据需要采取纠正措施。
复制流程概述
熟悉复制和复制流程的概念。
复制涉及将记录从源集群发送到目标集群。在SRM中,复制涉及到源和目标集群对、数据流向和要复制的主题。可以在SRM配置文件中指定源目标集群对。他们被注明source->target。最初,当设置源->目标配对时,它们被认为是不活动的,因为在它们之间没有数据被复制。要开始复制,用户需要指定要使用srm-control命令行工具复制的主题。
了解这个很重要,SRM中的复制是为每个source->target 集群对独立配置的。此外,配置是按主题进行的。这意味着源集群中的每个主题都可以具有不同的方向或目标,即被复制到该方向或目标。可以将源集群中的一组主题复制到多个目标集群,而将其他主题仅复制到一个目标集群。这使用户可以设置功能强大的主题特定的复制流。
复制流一词用于指定系统中设置的所有复制。当提到SRM复制的可视化展示时,本文档使用该术语。
复制流程的一个基本示例是将主题从一个集群发送到其他地理位置的另一个集群。请注意,在此示例中,只有一个复制或source->target一对。此外,仅将源集群上的两个主题之一复制到目标集群。
图1.简单复制流程示例
远程主题
了解有关SRM的远程主题。
在任何复制流程中,选定的源主题都将复制到目标集群上的远程主题。远程主题通过命名约定引用源集群。例如, 从us-west源集群的主题topic1创建目标集群上的远程主题us-west.topic1。
图1.简单复制流程示例
远程主题本身可以被复制。在这种情况下,远程主题将引用所有源集群和目标集群。名称中的前缀将从最接近最终目标集群的集群开始。例如,topic1将从us-west源集群复制到us-east集群,然后复制到集群eu-west的主题命名为 us-east.us-west.topic1。
图2.复杂复制流程示例
双向复制流程
了解有关双向复制流的更多信息。
SRM理解循环,并且永远不会在无限循环中复制记录。这样就可以实现双向复制流,其中集群可以相互复制。在这种情况下,发送到一个集群的记录将被复制到另一集群,并以另一种方式被复制。您可以通过这种方式配置任意数量的集群。
图1.双向复制流程
扇入和扇出复制流程
了解扇入和扇出复制流程。
您可以构造扇入复制流,其中将来自多个源集群的记录聚合到单个目标集群中。
图1.扇入复制流程
同样,您也可以构造扇出复制流,其中将单个集群复制到多个目标集群。
图2.扇出复制流程
原文:https://docs.cloudera.com/csp/2.0.1/srm-overview/topics/srm-replication-overview.html