说一说亚马逊云服务(AWS)中国区域新上线的AmazonMSK

编程

Amazon MSK,全称Amazon Managed Streaming for Apache Kafka,是一种完全托管服务。借助Amazon MSK,可以让应用开发人员快速使用原生 Apache Kafka API 构建应用来处理流式数据,而不必管理底层基础设施。

这些流式数据的数据源可以是前端Web/Mobile应用的点击流、IoT设备的事件或者是后端应用实时生成的日志。因为Amazon MSK与原生的Apache Kafka兼容,用户可以使用原生Apache Kafka API来处理这些实时的流式数据,做相应的数据分析,或者分发到后端的分析应用,比如数据湖应用。

为什么需要Amazon MSK

Apache Kafka是一款在业内非常流行的开源流式处理软件,它最早用于内部的消息队列处理。后面贡献给了开源社区,并慢慢发展成为功能强大的流式处理平台。Apache Kafka以它的分布式部署、高吞吐量、低延迟而著称,所以无论是在新兴的互联网公司还是传统行业,都有非常广泛的应用。

但我们也看到,要运维一个生产级别的Kafka集群不是一个简单的任务,这跟我们平时在本机起一个单节点的Kafka集群做日常的开发,不可同日而语。运维生产级别的Kafka集群需要考虑以下的问题:

  • 集群如何弹性扩展
  • 如何保证集群的高可用性
  • 原生Kafka不带监控界面,如何监控
  • 如何处理日常升级维护而不影响现有应用
  • 数据的安全如何保证

要处理好上面的问题,对Kafka集群的运维团队是有一定的能力要求。如果让开发人员参与进来,往往又会影响开发人员的效率,因为繁琐的运维工作往往会使得开发人员无法专注于业务逻辑的开发。

所以AWS推出了托管的Kafka服务:Amazon MSK。Amazon MSK 为用户管理Kafka集群的初始化、配置和维护,用户可以专注于创建流式应用,无需担心管理Kafka环境的运营开销。

另外对于上面提到的几个问题:

  • Amazon MSK创建Apache Kafka 集群,并在 AWS 区域内提供多可用区部署。Amazon MSK 会持续监控集群的运行状况,如果某个组件发生故障,Amazon MSK 可以自动替换故障组件。而且使用多可用区部署的Amazon MSK无需再额外支付跨可用区的数据传输费用。
  • Amazon MSK 与 Amazon CloudWatch 集成,用户可以通过CloudWatch收集、查看和分析Amazon MSK 的各项指标
  • 在扩展性方面,Amazon MSK可以做到随时扩充集群的节点数量和磁盘空间
  • 在安全方面,Amazon MSK提供了多级安全性,包括 VPC 网络隔离、使用 AWS IAM 进行控制层面 API 授权、静态数据加密和传输中的 TLS 加密

因为Amazon MSK与原生的Apache Kafka完全兼容,这使得用户可以轻松地在AWS上迁移和运行现有的Apache Kafka应用程序,而无需更改应用程序代码。通过使用Amazon MSK,用户可以保持开源的兼容性,并继续使用熟悉的开源工具,例如 MirrorMaker,Apache Flink 和 Prometheus。

Amazon MSK与Kinesis Data Streams:流式数据处理的一枝两岔

除了Amazon MSK,AWS还提供了Amazon Kinesis Data Streams这类实时数据流服务。Kinesis Data Streams 和 Amazon MSK的用法十分类似,两者都可以做到实时数据的收集、存储和分析,实现前端消息生产者和后端消费者之间的解耦。而且从概念上,两者也很类似,比如Kinesis Data Streams的Stream和Shard,分别对应于Amazon MSK的Topic和Partition。

说到两者的区别,首先从使用的直观感受上讲,对于Kinesis Data Streams,由于每个Shard的读写吞吐量恒定(写每秒1M,读每秒2M),所以设计阶段预估了多少的吞吐量,初始化Stream的时候,指定对应的Shard数量即可,非常直接明了;反观Amazon MSK,Kafka集群初始化好了以后,用户可以创建任意多的主题,每个主题需要指定相应的Partition数量,所以对于单个主题的吞吐量,需要通过细致的测试和监控,才能获得对应的吞吐量指标。

Kinesis Data Streams是AWS自研的流式服务,它的设计初衷是为了更好的扩展性以及易用性。由于是AWS的原生服务,所以它和AWS其它服务,比如AWS IAM、AWS Lambda进行了深度的集成;Amazon MSK则是基于开源的Kafka,所以它对开源生态和第三方工具有更好的支持,同时由于Amazon MSK基于开源系统,用户可以进行高度的定制,使用一些Kafka高级的功能,比如extended retention、log compaction等等。

另外两者虽然有一些概念互通的东西,但由于底层实现架构的不同,一般来讲,Amazon MSK可以获得更好的性能,比如更低的延迟。对于延迟有严苛要求的应用,Amazon MSK可以通过灵活定制,比如牺牲消息的持久性来获得更低的延迟,但Kinesis Data Stream由于其底层的架构限制,没有办法实现如此灵活的定制。

从扩展性而言,Kinesis Data Stream要扩容和缩容,只需要增加或者减少相应的Shard数量即可,比较直接简单,同时可以做到对客户端的透明。所以如果客户的流量波峰与波谷差别比较大,可以考虑使用Kinesis Data Streams来灵活地扩缩集群,在保证满足业务需求的同时,也能在流量波谷时收缩集群,节省非常可观的费用。Amazon MSK集群的扩容,可以通过增加Broker的数量,但这个操作对于客户端不是透明的,所以一般在初始化MSK集群的时候,需要充分预估集群的吞吐量。最后从高可用来说,无论是Amazon MSK还是Kinesis Data Streams,均支持跨可用区部署。

上述只是简单的一个比较,具体的架构决策还需要看实际的项目场景,不过如果用户是Kafka的拥趸,或者已经在使用Kafka,那迁移到Amazon MSK是最直接的选择,因为它可以大大减轻运维负担,尤其是对于需要多区域部署的Kafka支持,迁移到Amazon MSK后能节省大量的跨可用区数据传输费用。而如果客户的流量波峰与波谷差别比较大,则可以考虑使用Kinesis Data Streams,在保证满足业务需求的同时,也能在波谷时节省非常可观的费用。

Amazon MSK 用起来

在AWS海外区域,我们看到已经有很多客户在云上使用Amazon MSK服务。

Poshmark是一个领先的社交电商平台。Poshmark数据工程高级总监Mahesh Pasupuleti介绍说, Amazon MSK使得搭建、维护和扩展Kafka集群都很容易,通过全托管的服务实现了端到端的数据注入管道。当需求增长时,Poshmark有信心能够轻松扩展,扩大其流媒体注入管道,实现数据改进和实时机器学习,为客户提供增强的体验。

知名的网络安全公司Secureworks选择Amazon MSK服务来开发和发布其安全分析应用程序,缩短了产品上市时间,减少了基础设施和管理开销,让Secureworks能够专注于创新,专注其独特的差异化优势,帮助保护客户应对网络威胁。

Delhivery是印度知名的物流公司。Delhivery使用Apache Kafka作为其数据管道中的关键组件,以收集、存储和按照逻辑流转在发货、运输、交货过程的元数据。当公司的物流业务扩大时,他们花费了大量精力来应对Apache Kafka集群基础设施的复杂性。Amazon MSK不仅帮助他们减轻了基础设施开销,还以更加安全和可靠的方式为其业务攸关的元数据管道保持了高吞吐量和高性能。

现在,Amazon MSK已经在AWS中国宁夏和北京区域上线,我们相信,很快会有大量的中国区域客户受益于Amazon MSK。

以上是 说一说亚马逊云服务(AWS)中国区域新上线的AmazonMSK 的全部内容, 来源链接: utcz.com/z/516032.html

回到顶部