谁说邮箱迁移又慢又难?网易靠 DolphinScheduler 做到 10 倍效率提升

企业级调度系统平滑迁移指南,附避坑全流程!
177397507429177e66b23c7f6f455


点亮⭐️

https://github.com/apache/DolphinScheduler



点击蓝字 关注我们



随着互联网的飞速发展,电子邮件作为重要的信息交流工具之一,其数据处理和任务调度的需求日益增长。网易邮箱作为国内领先的电子邮件服务提供商,为了更好地应对海量数据的处理和任务调度挑战,引入了DolphinScheduler平台,并在实际应用中进行了深入的部署与优化实践。

嘉宾介绍

雷宝鑫

网易邮箱 大数据工程师

17739750814582724170b84964847


1

项目背景与选型



Part.01

网易邮件发展史


网易邮箱自1997年推出以来,经历了多个重要发展阶段,从126邮箱、163邮箱到邮箱大师等,不断丰富产品线和服务内容。如今,网易邮箱已构建起涵盖免费邮箱、企业邮箱、VIP邮箱等在内的多元化业务体系,为海量用户提供稳定、安全、高效的邮件服务。
1773975082064769342ddccc9dd83
从上图中可以看到,2023年网易邮箱引入了Apache DolphinScheduler。


Part.02

数据应用场景


在网易邮箱的日常运营中,面临着海量的业务日志数据处理需求。这些数据需要进行永久冷备以及大于半年的热备存储,并且业务日志按离线(HDFS)和实时(ClickHouse)分别处理落盘。同时,为了保障业务的可用性,核心收发信链路以及登录用户验证机制等环节都需要高效的数据处理和任务调度支持。
1773975083088d2824630927149f1


Part.03

选型背景与

DolphinScheduler优势


面对日益增长的数据处理需求,网易邮箱团队对多个开源调度平台进行了选型对比。DolphinScheduler凭借其支持多种调度机制、稳定性强、易用性高以及功能丰富等优势脱颖而出。它能够支持多种数据场景,满足网易邮箱复杂多样的任务调度需求。
1773975083601c64701ca490f7423

2

平台部署与使用现状




Part.01

基于DS的升级改造之路


网易邮箱团队在引入DolphinScheduler平台后,开启了一段持续优化改进的升级改造之路。从前期的调研选型对比,到针对使用过程中遇到的问题进行解决,再到进行二次开发持续优化平台的易用性和使用体验,团队不断推进平台的完善。2023年3月确定选型后,于2023年12月完成基于告警功能的初步改造,并在2024年3月实现稳定运行与持续探索。
17739750841668abdd3d31bc6f930


Part.02

数据架构与使用现状


目前,DolphinScheduler平台在网易邮箱部门内部已部署为3-Master、5-Worker架构,并运行在k8s上。该平台承接了反垃圾、风控、AI等业务的1200多个离线调度任务,每日执行次数超过5万次。
在数据架构层面,结合了DolphinScheduler与Streampark,实现了离线调度与实时Flink任务处理的结合。同时,自研的元数据中心、数据门户等组件构成了数据服务层,为数据管理与服务提供支持。
平台的引入显著提升了数据开发效率,降低了运维成本,并保障了业务数据的稳定产出,有力地支持了业务的快速迭代与创新。
177397508475102e93cb72c9eb42c


Part.03

任务类型与应用支撑


DolphinScheduler平台已成为部门内主要的任务调度平台,任务类型丰富多样,涵盖Spark、Shell、SQL、SeaTunnel、Python等多种类型。这些任务为下游的元数据管理、BI报表、数据研发等应用提供了坚实的数据支撑,满足了不同业务场景下的数据处理需求。
17739750852998de0f37ecd82de8d


3

集成数据分发功能与优化实践




Part.01

集成数据分发功能


在数据调度分发上,网易邮箱团队发现了一些亟待解决的问题,以提高数据处理的效率和能力,包括:
  • 数据处理需求频繁
    非研发人员数据处理需求频繁,需要数据开发人员支持。
  • 中间表构建意愿低
    产品和QA对中间表的构建意愿低,对他们来说耗时较长。
  • 数据同步配置存在门槛
    异构数据源间的数据同步任务配置存在门槛,需要专门的数开支持。
  • 同步任务开发流程较长
    完整的数据同步任务开发流程较长,涉及表创建、同步配置创建、调度任务创建等步骤。
为了解决以上问题,网易邮箱团队在DolphinScheduler平台上集成了数据分发功能。
1773975085783ae33bf5abdfc53db
总的思路是中间表创建+同步任务配置生成+调度任务创建」,提升中间数据处理效率,提供一站式数据处理任务构建流程。
该功能提供了快速配置和自定义配置两种方式,能够根据表单参数自动生成表DDL语句并执行建表逻辑,同时生成中间处理SQL和数据同步任务配置,最后调用海豚内部方法创建工作流和调度任务。
这一功能的实现,将中间数据处理的平均耗时从1小时降低到20分钟以内,提升了67%的开发效率,并已支撑线上40多个数据处理任务,且使用人数在不断增加。
1773975086415319da418052f2555
17739750871034ba01a95c7dae1a9


Part.02

优化离线调度方式,

提升故障恢复能力


原调度机制在处理依赖任务失败时,会导致dependent节点直接运行失败,无法一键重跑未完成数据链路,增加了数据开发人员的运维压力和故障恢复时长。
177397508761567a74067bcffe6dc
针对这一问题,团队对dolphinscheduler-master模块的DependentExecute类中getModelDependResult方法的等待及失败信号处理逻辑进行了重新设计。当依赖任务状态为FAILED时,将dependResultList中的状态改为WAITING,从而使下游任务获取到的是WAITING状态而非FAILED状态。
1773975088325eb39963e6cbdc4ce
这一优化实现了数据链路的一键恢复重跑,减少了人工干预成本,提升了任务链的恢复效率和智能化程度,加快了数据链路故障恢复速度,保障了业务数据的及时恢复产出。
1773975089240ddb614a0103225c3
177397508978053720f68013b1616


Part.03

SeaTunnel组件集成与优化,

数据同步提效


为满足新业务大规模数据同步需求,团队引入了SeaTunnel数据集成工具,并以分离集群模式部署在k8s集群上。
通过优化SeaTunnel插件,网易邮箱提供了自定义与快速配置两种方式,降低了使用门槛。
1773975090390032954e1c693f039



Part.04

实现原理


在实现原理上,支持表单配置和自定义配置两种方式,表单配置方式通过表单参数生成ST配置的交互逻辑,并支持配置额外自定义参数以及任务级的JVM配置。
1773975090961ad4e1d49db392e94
后端接收表单参数生成任务执行上下文的必要配置,设计IConfigGenerator接口实现各数据源生成Source和Sink的逻辑,最终通过SeatunnelConfigGenerator类生成最终的ST配置。
1773975091453563aedb179e902d5


Part.05

部署与调优


在部署与调优方面,SeaTunnel集群采用2-Master、5-Worker架构实现高可用和同步性能。
通过优化HDFS、HIVE、MultiTable Source的分片逻辑,使reader接收到的分片更均衡,提升数据同步性能,并已将相关优化提交PR反馈社区。
1773975091949bef1f1e40e177b38
在参数调优方面,针对HDFS到Doris的大规模数据同步需求,对DorisSink的代码进行研究和参数调优后,实现了200w/s的数据传输速率,极大地提升了数据同步性能。
17739750924297f113c9e1c34adb4


4

项目实践案例:任务迁移与资源隔离




Part.01

旧平台任务向海豚调度的

高效迁移


网易邮箱在使用旧平台的过程中,发现随着调度任务量的加大,该平台逐渐无法很好地满足业务需求。最终在调研DolphinScheduler平台之后,决定迁移到DolphinScheduler。
在迁移方式的选择上,如果以手动迁移的方式,不仅耗时耗力,还容易因任务依赖关系的复杂性而导致迁移错误,进而影响整体任务的稳定性。
基于种种原因的考虑,网易邮箱讨论并调研后决定,采用自动化同步方案,通过程序自动采集旧平台任务元数据和任务血缘,并转化成海豚平台的任务配置形式,同时添加上任务依赖关系,最后通过海豚接口快速进行工作流的创建。为了实现这个流程,网易邮箱采用了DolphinScheduler官方提供的PyDolphinScheduler同步工具,这个Python API允许通过Python代码定义工作流,即所谓的“工作流即代码”。
此外,网易邮箱还通过元数据系统采集旧平台任务的元数据和血缘关系,将任务批量改写为DolphinScheduler任务,并根据血缘关系自动添加依赖关系节点。
1773975092954567d50ff1309b22e
这一实践高效完成了300多个任务的迁移,保障了业务的平稳过渡,实现了一键批量迁移,极大地节省了人力成本,并为后续类似任务迁移场景提供了可借鉴的经验。


Part.02

Worker group隔离实践


下一个项目实践是基于DolphinScheduler的Worker分组资源隔离实践。
在网易邮箱DolphinScheduler平台的日常使用中,一个关键的业务场景是支撑QA的线上监控调度任务。这类任务的特点是调度频率高,大多为分钟级;任务数量多,目前监控相关任务数达到120+。
这些监控调度任务的执行目前其内部主要是通过SHELL任务类型通过调用自己开发的一个ETL任务处理工具jar包来实现的。这个jar包提供一些任务执行时的额外扩展功能,比如幂等性校验,超时重试等。
但是这种调用会在worker节点启动较多的JVM进程。这时,如果有一些比较核心的调度任务也调度到相同的worker节点的话,一旦因内存不足导致触发OOM killer,这些核心任务的内存占用又一般会比较大,导致其OOM分数的计算会比较高,更有可能被kill掉,就会造成核心任务执行的不稳定。
此外,一些凌晨执行的T+1同步任务需要大量资源,也不适合与其他任务调度到同一节点,可能会影响同一worker下其他任务的执行性能和稳定。
因此,网易邮箱团队想到用Worker group隔离方案来里面以上问题。
通过Worker group隔离,团队将实时监控等高频率调度任务与其他任务隔离开,保障了核心OKR相关调度的稳定执行,提升了整体任务执行的稳定性与可靠性。
177397509368953d1b91ba92a4767
在具体实施中,网易邮箱在平台创建不同的Worker分组包含不同的Worker节点,包括Default、AI、监控、Hadoop、大资源任务等多个分组,避免了任务卡死与资源抢占问题,优化了资源分配,提升了平台整体资源利用率与性能。
这一实践有效解决了QA监控任务调度频率高导致任务阻塞,以及凌晨T+1任务资源需求大引发worker节点OOM等问题,降低了运维风险。
1773975094266cf9ec57a85292927


5

总结与展望



Part.01

实践总结


通过引入DolphinScheduler平台并进行一系列的部署与优化实践,网易邮箱团队在提升数据开发效率、降低运维成本、保障业务数据稳定产出等方面取得了显著成效。平台的二次开发紧密结合了业务需求,注重用户体验与开发效率的提升,同时团队持续关注平台的优化与改进,并积极贡献社区,推动平台的不断发展。


Part.02

平台价值与效益



DolphinScheduler平台在网易邮箱业务中发挥了重要作用,不仅提升了数据开发的效率和稳定性,还通过优化任务调度流程,满足了业务的多样化需求,保障了数据的及时产出,有力地推动了邮箱业务的持续发展。


Part.03

经验分享与启示


在平台的部署与优化过程中,网易邮箱团队积累了丰富的实践经验。这些经验对于其他企业在选择和使用任务调度平台时具有重要的参考价值。团队强调,二次开发应紧密结合业务实际需求,始终将用户体验和开发效率放在首位。同时,持续关注平台的优化与改进,积极参与开源社区建设,能够推动平台的不断完善和发展。


Part.04

未来展望


展望未来,网易邮箱团队计划在以下几个方向继续探索和推进:
  • 拥抱AI:结合AI及LLM能力,实现更加智能化、易用的数据处理ETL流程,提升数据处理的自动化和智能化水平。
  • 数据治理:整合DolphinScheduler调度数据和内部的元数据中心,实现智能的数据/任务血缘和数据地图的采集和分析,为数据治理提供有力支持。
  • 平台优化:进一步优化DolphinScheduler平台的性能和功能,提升平台的稳定性和可靠性,以更好地满足日益增长的数据处理需求。
  • 拥抱DATA OPS:实现DolphinScheduler平台和其他数据平台系统的集成和整合,推动数据集成和传输的自动化,构建更加高效的数据生态系统。
1773975094809e7874d04d412922b


6

写在最后


网易邮箱基于DolphinScheduler平台的部署与优化实践,不仅解决了当前面临的任务调度和数据处理挑战,还为未来的发展奠定了坚实的基础。通过不断的技术创新和实践探索,网易邮箱将继续为用户提供更加优质、高效的邮件服务,同时也为开源社区的发展贡献更多的力量。




END




177397509542193b0af496dea826c



用户案例


Cisco Webex天翼云Zoom网易邮箱 每日互动 惠生工程作业帮 博世智驾蔚来汽车 长城汽车集度长安汽车思科网讯食行生鲜联通医疗联想新网银行兴业证券唯品富邦消费金融 自如有赞伊利当贝大数据珍岛集团传智教育BigoYY直播 拈花云科太美医疗深圳某智能制造企业
177397509542193b0af496dea826c



迁移实战


Azkaban Ooize(当贝迁移案例)airflow (有赞迁移案例)Air2phin(迁移工具)Airflow
177397509542193b0af496dea826c



最新发版消息



Apache DolphinScheduler 3.4.1 发布,新增任务分发超时检测
177397509542193b0af496dea826c



加入社区


关注社区的方式有很多:

  • GitHub: https://github.com/apache/dolphinscheduler
  • 官网:https://dolphinscheduler.apache.org/en-us
  • 订阅开发者邮件:dev@dolphinscheduler@apache.org(向邮箱发送任意内容,收到邮件后回复同意订阅即可)
  • X.com:@DolphinSchedule
  • YouTube:https://www.youtube.com/@apachedolphinscheduler
  • Slack:https://join.slack.com/t/asf-dolphinscheduler/shared_invite/zt-1cmrxsio1-nJHxRJa44jfkrNL_Nsy9Qg

同样地,参与Apache DolphinScheduler 有非常多的参与贡献的方式,主要分为代码方式和非代码方式两种。

非代码方式包括:

完善文档、翻译文档;翻译技术性、实践性文章;投稿实践性、原理性文章;成为布道师;社区管理、答疑;会议分享;测试反馈;用户反馈等。

‍代码方式包括:

查找Bug;编写修复代码;开发新功能;提交代码贡献;参与代码审查等。

贡献第一个PR(文档、代码) 我们也希望是简单的,第一个PR用于熟悉提交的流程和社区协作以及感受社区的友好度。

社区汇总了以下适合新手的问题列表https://github.com/apache/dolphinscheduler/pulls?q=is%3Apr+is%3Aopen+label%3A%22first+time+contributor%22

优先级问题列表https://github.com/apache/dolphinscheduler/pulls?q=is%3Apr+is%3Aopen+label%3Apriority%3Ahigh

如何参与贡献链接https://dolphinscheduler.apache.org/zh-cn/docs/3.2.2/%E8%B4%A1%E7%8C%AE%E6%8C%87%E5%8D%97_menu/%E5%A6%82%E4%BD%95%E5%8F%82%E4%B8%8E_menu

如果你❤️小海豚,就来为我点亮Star吧!

https://github.com/apache/dolphinscheduler


1773975229702dc202f47b6464baf

你的好友秀秀子拍了拍你

并请你帮她点一下“分享”