数据管道通常用于提取、转换和加载数据,从源平台到目标系统。这个过程通常涉及到从多个来源汇总数据,转换,验证,并最终加载到目标系统。每隔一段时间,数据管道就需要重新设计。这可能是由于不断变化的客户需求、系统性能指标(包括成本、时间等)等原因。
斯普利特现有的AWS S3入站集成的数据管道,通过S3桶发送特征标志事件数据。S3 Inbound Spark作业从S3桶中读取客户的文件并更新Split的事件表。然后,状态报告文件被生成并填充到同一S3桶中。
随着客户对现有的S3 Inbound Integration的需求增加,扩展S3 Inbound Spark作业的成本也在增加。斯普利特调查了降低成本的方法,也研究了通过报告额外的状态文件信息来提高客户体验的方法。在调查的基础上,Split利用其特征标记功能设计了一条新的管道。斯普利特的功能标志有助于执行A/B测试功能,以验证成本和生产中的负载功能测试。因此,在不影响客户体验的情况下实现了可控的生产推广。
现有的S3入站集成管道

图1.现有的Split S3入站集成管线
如上图所示,Split现有的S3入站集成管道的数据从客户桶中摄取,将文件通知发送到AWS SNS主题。然后,这个SNS主题调用Split的事件服务的导入端点,以验证对现有集成的请求。结果,Split通过AWS SQS队列异步发送了文件的元数据
Split的S3入站作业以每10秒的节奏运行,以确定AWS SQS队列中是否存在任何新的消息。收到新消息后,S3 Inbound Job 处理文件,以提取和存储Split的事件 表内的数据。完成后,S3 Inbound Job会生成一份消耗的文件状态报告,并将其存储在配置的客户的S3桶中。
Split现有的S3入站集成管道是用一个Spark Batch Job建立的。因此,所有摄入到现有管道中的数据文件都是按顺序消耗的。不用说,这导致了S3入站集成的瓶颈。为了提高吞吐量,我们要么纵向扩展这些实例,要么横向增加更多的实例。现有的 S3 Inbound Job的总成本在数据砖单位(DBU)方面增加了50%以上。
此外,为所消耗的文件生成的状态报告缺乏客户所需的有价值的信息。例如,每个文件中的记录总数,与之相关的错误代码,以及更多。
新的S3入站集成管道

图2.新的S3入站集成管线
与现有的管道类似,数据从客户的S3桶中被摄取到新管道中。然后,这些数据将文件通知分配给AWS SNS主题。然后,事件 服务 根据现有的集成验证导入请求,并通过AWS SQS队列异步发送文件元数据。
然而,现在新管道的事件 服务,如图2所描绘的*,将消息转发到一个新的AWS SQS* 队列。复制文件任务现在读取这些消息,并将它们放入一个内部的SplitS3 桶。接下来,Copy Data Job使用Databricks的Autoloader将它们有效地加载到一个Bronze表中。然后,一个数据验证任务针对MongoDB集成 表确定数据是否有效。
无论验证结果如何,该工作都会将验证过的数据放入银表。之后,一个数据输入作业在银表和事件 表之间执行数据复制。状态报告作业读取Silver表,将状态报告 生成到客户的S3桶中。
斯普利特新的S3入站集成管道是用Spark流架构设计的。这种新的设计变化导致了摄入的数据文件的并行消耗,并减少了资源利用成本。新管道的责任被分割(双关语),使用 奖章架构来分离任务。这些任务包括摄取、模式验证、数据验证和错误反馈,以便客户可以自我纠正,进一步处理错误。
测试管线
仅仅建立这个新的入站集成管道是不够的。斯普利特不仅要降低成本,而且还要确保其可扩展性和可靠性。对于后者,Split使用功能标记在现有管道和新管道之间进行A/B测试,如图3所示。

图3.斯普利特的A/B测试的特征标志方法
通常,在一个数据管道中,人们会控制数据流,比如说,通过多个Kafka消费者组。如图4,Kafka消费者1将数据分配给现有的管道。同时,Kafka消费者2将相同的数据推送到新的管道中。

图4.Kafka的A/B测试方法的例子
斯普利特使用了一个特征标志*(图3*)的方法来控制数据流入两个AWS SQS队列。第一个SQS队列将数据发送到现有的管道,而第二个则将数据发送到新的管道。这使得两个管道能够在生产环境中无缝共存,以进行A/B测试。
此外,Split的功能标志策略允许通过Split的分配流量功能对摄入的数据量进行微调。它还可以通过Split的设定目标规则,将客户无缝接入新管道。此外,Split的默认处理方法有助于通过按下一个按钮快速回滚到现有管道上。无论是按需还是在不可预见的生产管道问题上,Split都能为你提供帮助。
可扩展性和成本比较
与现有管道相比,新的S3入站集成管道有六个新的Spark作业。这些新的工作确保新的管道比现有的管道扩展得更快、更好。例如,想象一个测试场景,有超过50G的模拟数据和正常的生产数据。这些数据可以在5分钟的间隔内摄入,新的管道能够在15分钟内处理这两种数据。该管道还可以横向自动扩展到更少的实例。相比之下,旧的管道需要3倍的实例和10小时来处理相同的数据。
至于以数据砖单位(DBU)衡量的总成本,现有的和新的S3入站集成管道明显不同。这在图5中有所描述,其中蓝色和黄色的柱子分别说明了现有和新管道的总成本。对于任何一个月,S3入站集成管道的资源消耗至少比现有管道低80%。
结论
Split的S3入站集成的数据管道通过AWS 的S3桶发送特征标志事件数据,生成状态报告文件。该管道的扩展成本与客户需求的增加成正比。
结合其特征标志战略,Split设计了新的S3入站集成管道,以节省总运营成本。它还可以增强状态文件报告,进行可扩展性测试,并在生产环境中进行可控的推广。此外,Split的功能标志允许在需要时更快地无缝回滚到现有管道。新的S3入站集成管道扩展性更好,需要更少更小的实例,从而节省了80%的总运营成本。
通过控制推出,Split已经成功地将一些客户迁移到新的S3入站集成。它已经在生产环境中活跃了一个多季度,对客户的影响为零,以近乎实时的方式提供增强的状态报告。