MaxCompute流式数据通道服务提供了一套全新的API及后端服务。流式服务在API上极大简化了分布式服务的开发成本,同时解决了批量数据通道在高并发、高QPS(Queries-per-second)场景下的性能瓶颈。本文为您介绍如何使用流式数据通道服务。

功能介绍

MaxCompute流式数据通道服务自2021年1月1日起开始公测,公测期间可直接免费使用,后续商业化通知请及时关注公告

您可以通过MaxCompute流式数据通道服务将流式服务做为上游服务将数据写入MaxCompute,例如实时计算Flink数据通道DataHub数据传输服务DTS实时数据同步消息队列Kafka

MaxCompute流式数据通道服务功能点如下:
  • 提供流式语义API:通过流式服务的API可以方便的开发出分布式数据同步服务。
  • 支持自动创建分区:解决数据同步服务并发创建分区导致的并发抢锁问题。
  • 支持增量数据异步聚合(Merge):提升数据存储效率。
  • 支持增量数据异步zorder by排序功能,zorder by详情请参见更新表或静态分区数据(INSERT INTO | INSERT OVERWRITE)
MaxCompute流式数据通道服务可以解决流式服务使用批量数据通道写入数据引发的各种问题,优势如下:
  • 更优化的数据存储结构,解决高QPS写入导致的碎片文件问题。
  • 数据链路与元数据访问完全隔离,解决高并发写入场景下元数据访问导致的抢锁延迟和报错问题。
  • 提供了增量数据异步处理机制,可以在使用过程中无感知情况下对新写入的增量数据做进一步处理,已经支持的功能包括:
    • 数据聚合(Merge): 提升存储效率。
    • zorder by排序:提升存储、查询效率。

应用场景

MaxCompute流式数据通道服务应用场景如下。
场景 说明 特点
大量事件日志实时写入MaxCompute 日志采集数据直接写入MaxCompute进行批量处理。 无需通过中间存储服务做中转,节约成本。
流式计算结果实时写入MaxCompute 流式服务写入MaxCompute解除并发数及batch size的限制。 解决高并发抢锁导致流式服务不可用,避免batch size太小导致MaxCompute产生大量小文件的问题。
流式存储服务(DataHub、Kafka)实时同步MaxCompute 消息服务实时同步MaxCompute解除并发数及batch size的限制。 解决消息服务实时同步到MaxCompute的问题,支持高并发、大批量同步。

使用限制

MaxCompute流式数据通道服务的使用限制如下:
  • 加锁写入的表或分区:在向MaxCompute流式写入数据期间,MaxCompute流式数据通道服务会对写入的表或分区进行加锁。即流式写入数据期间会屏蔽所有涉及数据修改的DDL操作,例如insert into|insert overwrite。流式写入结束后,MaxCompute会对表或分区进行解锁,之后可以执行所有操作。
  • DDL操作感知延迟:由于数据写入请求与DDL操作分离,会导致流式数据通道服务对用户执行的DDL操作感知延迟30s~60s。例如在执行drop table操作后,有可能会出现流式写入数据成功的情况。为避免这种场景出现,建议您确认在执行drop table操作前,数据写入操作已经结束。
  • 热数据存储量会出现增长情况:在开启异步处理的场景下(Merge或Zorder),MaxCompute流式数据通道服务会对最近一小时写入的数据保存两份,一份为原始数据,一份为异步聚合后的数据,数据的存储量会有一定程度的冗余。冗余数据的保存周期默认是1小时。