Fundamentals of Amazon MSK (Amazon Managed Streaming for kafka)

Amazon Managed Streaming for Apache Kafka 或 Amazon MSK 允许您在 AWS 中运行利用 Apache Kafka 的应用程序。 Kafka 提供了一个流处理平台,并作为基于发布者/订阅者的持久消息传递系统运行。 其主要功能是能够以极高的容错能力获取数据,允许这些记录的连续流,从而保持数据的完整性,包括接收数据的顺序。

然后,Apache Kafka 充当这些数据生成实体和订阅它的客户之间的缓冲区。 订阅者按照先进先出的原则从 Kafka 主题接收信息,从而使订阅者能够获得所生成数据的正确时间线。

Kafka 是一种开源技术,支持大量社区驱动的工具和附加组件。 这使得它非常可定制,并让开发人员可以自由地构建和创建他们需要的东西。 通过 Amazon MSK,您可以使用本机 Apache Kafka API 创建数据湖、将信息流式传输到多个源,并为数据分析应用程序和管道提供支持,所有这些都在 AWS 内完成。

您想要使用 Amazon MSK 来滚动自己的 Kafka 实施的主要原因是 Amazon MSK 是一项完全托管的服务。 这意味着您不需要照顾任何服务器,不需要担心任何升级,也不需要费心处理 Apache Zookeeper,这是一个必需的协调软件,用于处理编排集群任务和 维护集群的总体状态。

Amazon MSK and Kafka Under the Hood

您需要了解的有关 Kafka 的一切都可以归结为三个主要思想。 您有创建数据的生产者,例如收集用户流量信息的网站,您有接收数据的主题,该信息以极高的容错性存储,并且您有可以按顺序读取该数据并知道它从未发生过的消费者。 一路上改变或修改。

Kafka 通常被用作解耦机制,以帮助缓解许多不同生产者和消费者之间的紧张关系。 例如,您可能有 10 个网站,所有网站都创建需要处理的日志信息。

假设您还有 20 个微服务,每个微服务都尝试过滤该数据的各种特定变量并进行预测。 如果您对所有这些信息进行硬编码,您将需要担心 200 个单独的连接。

通过使用 Kafka 作为中介,所有日志信息都可以推送到单个主题中。 这一主题现在是所有微服务的单一事实来源。 他们每个人都可以根据需要阅读并收集所需的信息。 该主题将保留生产者信息,直到达到保留期限。 此窗口是可配置的,默认时间为 7 天。

Kafka 还具有基于大小的保留策略,您可以在其中配置可以存储的最大数据量。 一旦达到最大数据量,Kafka 将开始踢出并删除旧信息。 这两个选项都可以按主题进行配置,这为降低数据成本或更长时间地保留高价值信息提供了很大的灵活性。

每个主题都有多个分区,除非提供分区键,否则数据将随机写入其中。 一旦数据写入主题,就永远无法更改。 您可以提供对该数据的更新,但它只是分区中的下一个条目,而不是覆盖原始数据。 主题的分区越多,并行度就越高。

Provisioning an Amazon MSK Cluster

创建 Amazon MSK 集群时需要预置两个元素:代理实例和代理存储。 Broker实例是帮助管理Kafka集群的工作节点。 您的集群可以有多个代理,但如果需要,也可以作为单个节点运行。 代理实例可以在同一可用区域内或跨多个可用区域运行,以创建高可用集群,这是许多架构所需要的。

与自行推出的 Kafka 版本相比,使用 Amazon MSK 的一大好处是,Amazon 将密切关注这些代理节点,并在它们变得不健康时更换它们。 否则,您将不得不自己管理所有这些。 代理存储是保存流入 Amazon MSK 的所有数据的地方。

在 Amazon 中,此存储位于 EBS 卷内,并获得 EBS 提供的所有保护,例如持久性和容错能力。 您还可以使用 Amazon EBS 服务器端加密和 AWS KMS(密钥管理服务)对这些数据卷进行加密。 然而,关于存储的一个有趣的注意事项是,一旦您分配了代理存储,您只能增加存储量,而不能减少。 如果您达到最大容量,代理的存储可以自动向上扩展。

如果您已经拥有自己管理的 Kafka 集群(无论是在本地还是在云中),您可以迁移到 Amazon MSK。 有许多第三方开源工具(例如 MirrorMaker)可以帮助将数据从 Kafka 集群复制到 Amazon MSK。

Architectural Example

我认为真正了解服务如何工作的最佳方法之一是了解它如何融入功能架构。 让我们看一下来自 Amazon 的使用 Amazon MSK 的无服务器示例。

假设我们是一家经常与公众打交道的企业,我们需要了解客户和整个世界当前的趋势。 创建某种可以拉取 Twitter 并对主题标签进行情绪分析或阅读推文以探索共性的应用程序可能会有所帮助。

看看这个架构。 在这里,我们有一个系统,该系统利用 Amazon MSK、AWS Glue、Amazon Redshift,并使用 Amazon QuickSight 创建函数图来显示从这些服务收集的所有相关信息。 通过设置,我们可以使用 Twitter 作为数据生产者,并读取所有公共主题标签以了解平台上当前的趋势。

让我们花点时间探讨一下每项服务所扮演的角色。 正如我们已经讨论过的,Amazon MSK 这项服务充当我们所有数据的暂存区。 Amazon MSK 确保我们收到的信息保持我们获取信息的顺序,并且不会以任何方式消失或自毁。 现在需要指出的是,MSK 主要只是数据的着陆平台,需要生产者将信息推送到其中。

在此示例中,我们可以使用 Apache NiFi 配置 Twitter 并从中提取数据。 但是,您可以使用您选择的任何机制。 然后,AWS Glue 充当数据使用者,并能够从 Amazon MSK 提取信息。 Glue 可以执行流式 ETL、提取以转换负载、获取原始数据、将其转换为有意义的数据,并将其推送到 Amazon Redshift 中。 Redshift 只是一个数据仓库解决方案,可以很好地保存我们的所有数据。

最后,QuickSight 可用于查询和可视化存储在 Amazon Redshift 中的数据。 它可以以折线图、表格、饼图、条形图和词云的形式显示您的结果。 这对于做出决策和从数据中收集信息非常有价值。 现在我们有了一个简单的架构,可以从 Twitter 中提取数据,并允许您对主题标签进行可视化并做出有意义的决策以供将来使用。

zongjie

最后,Amazon MSK 就是 AWS 云中的 Kafka。 它提供了 Kafka 标准版本所享有的所有功能,而无需自行管理底层基础设施。 总体而言,Amazon MSK 的最大好处可能是能够使用 Kafka 并轻松连接到 AWS 生态系统的其他部分。 这使您能够为流数据库分析等创建强大、健壮且完全无服务器的架构。

  • 18
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值