Apache Kafka 迁移到 Azure
Apache Kafka 是实现发布-订阅体系结构的高度可缩放且容错的分布式消息传送系统。 它在实时流式处理方案中用作引入层,例如物联网和实时日志监视系统。 它还越来越多地用作 Kappa 体系结构中不可变的仅追加数据存储。
Apache®、Apache Spark®、Apache Hadoop、Apache HBase、Apache Storm®、Apache Sqoop®®、Apache Kafka® 和火焰徽标是美国和/或其他国家/地区 Apache Software Foundation 的注册商标或商标。 使用这些标记并不暗示获得 Apache Software Foundation 的认可。
迁移方法
本文介绍了将 Kafka 迁移到 Azure 的各种策略:
- 将 Kafka 迁移到 Azure 基础结构即服务(IaaS)
- 将 Kafka 迁移到适用于 Kafka 的 Azure 事件中心
- 迁移 Azure HDInsight 上的 Kafka
- 将 Azure Kubernetes 服务 (AKS) 与 Kafka on HDInsight 配合使用
- 将 Kafka on AKS 与 Strimzi 运算符配合使用
下面是决定要使用的策略的决策流程图。
将 Kafka 迁移到 Azure IaaS
有关将 Kafka 迁移到 Azure IaaS 的一种方法,请参阅 Ubuntu 虚拟机上的 Kafka。
将 Kafka 迁移到 Kafka 的事件中心
事件中心提供与 Apache Kafka 生成者和使用者 API 兼容的终结点。 大多数 Apache Kafka 客户端应用程序都可以使用此终结点,因此可以使用它作为在 Azure 上运行 Kafka 群集的替代方法。 终结点支持使用 API 版本 1.0 及更高版本的客户端。 有关此功能的详细信息,请参阅 Apache Kafka 事件中心概述。
若要了解如何迁移 Apache Kafka 应用程序以使用事件中心,请参阅 迁移到 Apache Kafka 生态系统的事件中心。
Kafka 和事件中心的功能
Kafka 与事件中心之间的相似性 | Kafka 和事件中心的差异 |
---|---|
使用分区 | 平台即服务与软件 |
分区是独立的 | 分区 |
使用客户端游标概念 | 应用程序接口 |
可以扩展到非常高的工作负荷 | 运行时 |
在概念上几乎完全相同 | 协议 |
两者都不使用 HTTP 协议接收 | 持续性 |
安全 | |
限制 |
分区差异
卡 夫 卡 | 事件中心 |
---|---|
分区计数管理缩放。 | 吞吐量单位管理缩放。 |
必须跨计算机对分区进行负载均衡。 | 负载均衡是自动的。 |
必须使用拆分和合并手动重新分片。 | 不需要重新分区。 |
持续性差异
卡 夫 卡 | 事件中心 |
---|---|
默认情况下可变 | 始终持久 |
在收到确认后复制 (ACK) | 在发送 ACK 之前复制 |
取决于磁盘和仲裁 | 存储提供 |
安全差异
卡 夫 卡 | 事件中心 |
---|---|
安全套接字层 (SSL) 和简单身份验证和安全层 (SASL) | 共享访问签名(SAS)和 SASL 或 PLAIN RFC 4618 |
类似于文件的访问控制列表 | 政策 |
可选的传输加密 | 强制传输层安全性 (TLS) |
基于用户的 | 基于令牌(无限制) |
其他差异
卡 夫 卡 | 事件中心 |
---|---|
不限制 | 支持限制 |
使用专有协议 | 使用 AMQP 1.0 协议 |
不使用 HTTP 进行发送 | 使用 HTTP 发送和批处理发送 |
迁移 Kafka on HDInsight
可以将 Kafka 迁移到 Kafka on HDInsight。 有关详细信息,请参阅 HDInsight 中的 Apache Kafka 是什么?。
将 AKS 与 Kafka on HDInsight 配合使用
有关详细信息,请参阅 将 AKS 与 Apache Kafka on HDInsight 配合使用。
将 Kafka on AKS 与 Strimzi 运算符配合使用
有关详细信息,请参阅 使用 Strimzi 在 AKS 上部署 Kafka 群集。
Kafka 数据迁移
可以使用 Kafka 的 MirrorMaker 工具 将主题从一个群集复制到另一个群集。 在预配 Kafka 群集后,此方法可帮助你迁移数据。 有关详细信息,请参阅 使用 MirrorMaker 通过 Kafka on HDInsight 复制 Apache Kafka 主题。
以下迁移方法使用镜像:
首先移动生成者。 迁移生成者时,会阻止在源 Kafka 上生成新消息。
源 Kafka 使用所有剩余的消息后,可以迁移使用者。
实现包括以下步骤:
将生成者客户端的 Kafka 连接地址更改为指向新的 Kafka 实例。
重启生成者业务服务,并将新消息发送到新的 Kafka 实例。
等待源 Kafka 中的数据被使用。
将使用者客户端的 Kafka 连接地址更改为指向新的 Kafka 实例。
重启使用者业务服务以使用来自新 Kafka 实例的消息。
验证使用者是否成功从新的 Kafka 实例获取数据。
监视 Kafka 群集
可以使用 Azure Monitor 日志分析 Apache Kafka on HDInsight 生成的日志。 有关详细信息,请参阅分析 Apache Kafka on HDInsight 的日志。
Apache Kafka Streams API
通过 Kafka Streams API,可以近乎实时地处理数据并联接和聚合数据。 有关详细信息,请参阅 Kafka 流简介:流处理变得简单 - Confluent。
Microsoft和 Confluent 伙伴关系
Confluent 为 Apache Kafka 提供云原生服务。 Microsoft和康弗伦特有战略联盟。 有关详细信息,请参阅以下资源:
供稿人
Microsoft维护本文。 以下参与者撰写了本文。
主要作者:
- Namrata Maheshwary |高级云解决方案架构师
- Raja N |董事,客户成功
- Hideo Takagi |云解决方案架构师
- Ram Yerrabotu |高级云解决方案架构师
其他参与者:
- Ram Baskaran |高级云解决方案架构师
- 杰森·布斯卡 |高级软件工程师
- 尤金·钟 |高级云解决方案架构师
- 帕万·霍萨蒂 |高级云解决方案架构师 - 工程
- 达曼·考尔 |云解决方案架构师
- 刘丹妮 |高级云解决方案架构师 - 工程
- 何塞·门德斯 高级云解决方案架构师
- Ben Sadeghi |高级专家
- Sunil Sattiraju |高级云解决方案架构师
- Amanjeet Singh |首席项目经理
- Nagaraj Seeplapudur Venkatesan |高级云解决方案架构师 - 工程
若要查看非公开的LinkedIn个人资料,请登录LinkedIn。
后续步骤
Azure 产品简介
- Azure Data Lake Storage 简介
- HDInsight 中的 Apache Spark 是什么?
- HDInsight 中的 Apache Hadoop 是什么?
- 什么是 HDInsight 中的 Apache HBase?
- 什么是 HDInsight 中的 Apache Kafka?
- HDInsight 中的企业安全性概述
Azure 产品参考
- Microsoft Entra 文档
- Azure Cosmos DB 文档
- Azure 数据工厂文档
- Azure Databricks 文档
- 事件中心文档
- Azure Functions 文档
- HDInsight 文档
- Microsoft Purview 数据管理文档
- Azure 流分析文档