在现代数据驱动的企业中,数据的提取、转换与加载(ETL)始终扮演着极其关键的角色。ETL系统的发展历经数十载,然而随着业务复杂度的提升和云计算的普及,传统的长久运行ETL流水线在应对灵活且临时的数据处理需求时显得力不从心。亚特拉斯科技(Atlassian)针对这一痛点,开发了“锂平台”(Lithium Platform),以创新的临时(ephemeral)和自托管(self-hosted)流水线架构,重新定义了ETL的理念和实践,推动了数据工程领域的革新。锂平台不仅兼顾了高吞吐量和灵活性,还实现了租户级隔离以及内嵌于业务服务的紧密耦合,从而满足了复杂且动态变化的企业级数据迁移和备份等多样化需求。 传统ETL系统大多作为持久运行的服务,持续接收并处理数据流。这种模式在面对需即时创建和销毁流水线的场景时,往往效率低下且资源浪费严重。
例如,在服务器与云端之间的迁移任务或者定期备份时,数据处理任务具有明确的开始与结束时间,长期运行的管道导致不必要的资源占用和成本增加。锂平台推崇“按需创立,完成关闭”的设计思想,基于Kafka及Kafka Streams构建全事件驱动型流水线,通过工作计划(Workplan)实现了动态构建与销毁数据处理流程的能力,使数据处理更加灵活且经济高效。 锂平台的核心创新之一在于工作计划的动态部署。工作计划完整描述了流水线中的源(Source)、转换(Transform)和汇(Sink)三个基本组成部分,以及它们之间的数据流向和处理逻辑。每个工作计划在请求数据移动时即时创建,完成后迅速撤销,形成真正的“临时流水线”。此设计保证了系统资源的最大化利用和任务间的完全隔离,同时支持流水线的暂停、恢复及重放功能。
通过Kafka主题作为信息载体,工作计划不仅高效处理数据,还实现了精准的状态监控和错误恢复。 针对流水线中各个处理器的部署,锂平台推行“自带主机”(Bring Your Own Host,BYOH)模式。数据提取、转换和加载处理器由业务服务自身托管,服务开发者可集成锂平台的Java SDK,自定义处理逻辑,无需关注底层Kafka机制。此举不仅使处理器运行于靠近数据源和领域业务的环境中,降低了数据传输成本,也提升了处理效率和系统的弹性调度能力。更重要的是,处理器可以分布于不同的服务甚至不同的实例,极大丰富了流水线的部署拓扑,满足多样化业务需求。 租户级隔离是锂平台设计的重要保障。
每个动态工作计划拥有独立的Kafka主题和处理实例,互不干扰,即使共享物理计算资源也确保数据安全和隐私。此外,独立流水线的状态及心跳由控制平面统一管理与跟踪,保证各种操作如暂停、恢复或回溯指令能够精准执行,而不会影响其他流水线的正常运行。平台通过Kafka的精细权限控制和主题管理,确保数据访问受限且能力最小化,进一步强化了多租户环境下的安全防护。 锂平台架构划分为控制平面和数据平面两大逻辑层面。控制平面如中枢神经,负责工作计划的管理、资源提供者协调、Kafka主题维护和事件广播等关键任务。数据平面主要由各业务服务中的资源提供者组成,用于实际执行处理器实例及进行数据处理。
两层通过Kafka事件主题高效、解耦地通信,实现了对数据管道的细粒度控制与高可用性保障。资源提供者内部采用演员模型实现异步消息传递,保证处理器间协作的稳定性和扩展性。 为了使资源的调度更贴合业务实际,锂平台采纳了一种类似拍卖的资源分配机制。当控制平面发布工作计划拍卖事件时,资源提供者根据本地状态、容量和业务责任判断自身是否参与竞标。只有满足条件的服务节点才会投标,控制平面汇总竞标结果后决定最终资源分配,合理利用集群资源,同时应对节点动态变化带来的不确定性。对于部分资源不足的场景,系统同样支持降级运行和后续重新竞标,体现强大的弹性与恢复力。
数据流处理的细节方面,锂平台设计了多个处理器链,可在同一主机或跨服务分布执行复杂转换和校验逻辑。利用Kafka Streams提供的事务性保障与精确一次处理语义,实现了数据在流水线中无重复和无丢失的高质量流转。源处理器将原始数据先写入入口主题(Ingress Topic),由专门的“引导者”流(Usher Stream)转送至输入主题,实现数据“倒带”功能。数据重放无需再次提取源系统,有效降低了开销并提升了调试及纠错能力。 除了基本处理链,平台独创地引入了状态处理器,用于跟踪流水线进度及状态聚合。例如,监控已提取实体数量与加载完成情况,动态判断任务完成状态。
状态处理器保证在单分区主题上独占运行,采用Kafka Streams聚合器实现可靠状态渲染,并定期向控制平面汇报,支持整体任务管理与事件驱动的工作流调整。 针对数据质量保障,锂平台实现了数据旁路(Sidelining)机制,自动拦截校验失败的数据并存储于专门的旁路主题。旁路数据的处理时机由“门控”机制控制,可以暂停流水线直至人工或自动进行故障修复。创新的“进程中补救”(In-Progress Remediation)功能支持动态向流水线添加新转换器以修正数据问题,无需重启整个流程,大大增强了维护效率与数据准确性。 锂平台还支持“自带主题”能力,允许流水线中的处理器将数据发送至外部持久Kafka主题,满足需要长时间存储或进一步处理的业务需求。通过这种方式,实现了数据跨系统的灵活整合,如迁移流程中的实体ID映射,通过外部主题反馈映射结果,提高了数据关联与一致性。
从性能表现来看,锂平台在多次规模和性能测试中创造了惊人数据吞吐量。以12节点Kafka集群为例,在100个并发工作计划、每计划并行度为6的条件下,7分钟内成功移动了5亿条、约500GB的数据,达到每秒120万条、1.2GB的数据处理速率。这一成绩验证了其面向大规模实时数据处理场景的竞争力。 锂平台已于生产环境稳定运行,在亚特拉斯科技的服务器至云端、云端间迁移及备份恢复等关键场景中发挥着支柱作用。由于其独特的动态临时流水线特性、自托管的处理器部署模式、以及强大的侧线与补救机制,该平台为数据工程师提供了极大的灵活性和控制力,为企业构筑了真正现代化、高效且安全的数据流管道。 总结来看,锂平台不仅是一个简单的流式ETL系统,更是一次针对动态数据处理需求的理念革新。
它消除了传统长久流水线的诸多局限,使数据处理以极致灵活性和高性能运行。BYOH模式将数据处理能力下沉至业务服务,使得行业解决方案可以更好地贴合业务模式。加之平台内置的状态管理和旁路处理,帮助客户实现稳健的流程控制和故障修复。锂平台代表了未来ETL技术发展的重要方向,极大推动了企业数字化转型与数据驱动创新的步伐。未来,随着数据量及应用场景进一步丰富,锂平台有望持续演进,支持更多高级特性,助力构建更加智能和自适应的数据处理生态。