他是企业级 AIOps 专家
他是 Apache 的活跃贡献者
他热爱爬山、骑行,也热衷于代码世界的每一场冒险本期,我们邀请到来自「移动云能力中心」的倪佳晖,带你走进他与 SeaTunnel 社区之间那些真实、热血又有趣的成长故事。
GitHub ID: @cosmosni
擅长领域: AIOps 故障诊断 / 告警聚合 / 自愈分析
兴趣爱好: 爬山、骑行
社区标签: #活跃贡献者 #实战经验 #技术成长
最初是为了将 Elasticsearch 中的存量数据导出到其他存储系统。
DataX 太局限,Kettle 功能不足,自研 Spark 任务又问题多多。就在技术进退维谷之际,倪佳晖在论坛看到许多开发者推荐 SeaTunnel。抱着试试看的心态部署测试——一次成功解决了难题,也开启了他的开源之旅。
2023 年 4 月,他提交了第一份代码,但直到一年后的 2024 年 4 月,才迎来第一个正式合并的 PR。
初期由于不熟悉 GitHub Flow、CI 流程和代码规范,几次提交都触发了错误。但在社区前辈的帮助下,他逐步掌握了:
编译打包流程
测试机制(包括覆盖率要求)
代码风格与命名规范
Review 互动与修改流程
“一个 PR 改了十几次,前前后后两个月。但最后被合并的那一刻,真的非常有成就感。”
从第一个 PR 开始,倪佳晖陆续为 SeaTunnel 提交了多个高质量功能特性和优化,包括连接器、引擎、WebUI 等多个层面:
支持 SQL 和 PIT(Point In Time)两种读取方式,为用户提供更灵活的检索能力,满足不同场景下的数据同步需求。
PR:#6425、#7052、#8895、#9150
支持 Prometheus 指标数据的读取和写入,将监控数据轻松接入数据仓库或分析平台。
PR:#7265
实现列转行(unnest)、explode 函数等复杂数据结构转换能力,提升了对嵌套数据的解析与分析效率。
PR:#7928
支持 Kafka 的原始数据格式读写,提高了与 Kafka 生态系统的兼容性,降低了数据转换开销。
PR:#8724
新增 Web UI 的基础认证功能,帮助企业用户更好地满足安全合规要求,防止未授权访问。
PR:#9171
此外,他还修复了多个 bug,并对连接器框架进行优化,提升了系统整体的健壮性和用户体验。
“我们公司目前已经广泛使用 SeaTunnel,主要用于多源异构数据的同步。”
在使用过程中,他还基于 SeaTunnel 做了多项二次开发:
复杂数据清洗逻辑:根据业务规则实现数据脱敏、字段规范、格式转换等
自定义转换插件:为内部使用场景添加专属功能
任务模板封装:标准化多种常见数据源同步任务,提高复用性
这些开发严格遵循 SeaTunnel 的插件架构原则,保持了良好的可维护性。其中一些通用功能,他也通过 PR 回馈给了社区。
目前,他们还计划将公司的 CDC(变更数据捕获)任务平台整体迁移到 SeaTunnel,统一数据链路,提升稳定性和可观测性。
在倪佳晖看来,数据集成/同步领域的核心需求包括:
多源异构支持:需要对接多种数据库、文件系统、消息队列等
高一致性与准确性:确保数据可靠同步,不遗漏不重复
高性能与并发性:适应大规模数据处理需求
灵活扩展性:可自定义插件、规则、调度方式
易用性与可观测性:上手快、配置简洁、可视化能力强
“SeaTunnel 在这几个方面表现都非常优秀,是目前我接触过最符合现代企业需求的数据集成工具之一。”
“Contributor 是开源社区的原动力。”
在倪佳晖看来,Contributor 不只是“提交代码的人”,更是项目成长的协作者:
代码层面:新增功能、修复 bug、提升性能
文档/案例:输出使用教程、最佳实践、视频教学
沟通反馈:参与 Issue 讨论、提出改进建议、参与社区会议
影响力辐射:推广开源项目,吸引更多新用户加入
只要你愿意,每一个问题的解答、每一次优化建议、每一行代码贡献,都是推动开源项目向前发展的力量。
SeaTunnel 社区的活跃度和技术氛围也为他带来了诸多成长:
结识志同道合的开发者
拓展职业发展与视野
掌握前沿理念与最佳实践(如 MCP 工具快速落地)
他相信,开源不是一件“业余时间做的事”,而是值得投入热情与精力的事业。
“我鼓励所有使用 SeaTunnel 的人顺手提一个 PR,哪怕只是改一个注释。”
无论你是数据开发、平台工程师,还是架构师、在校学生,只要你愿意,都可以:
修复一个小问题
写一个测试用例
补充一段文档
留下一次讨论建议
一点一滴的参与,就是你走进开源世界最好的方式。
如果你也热爱技术、喜欢开源,欢迎加入 SeaTunnel 社区,一起创造改变!
GitHub 地址: https://github.com/apache/seatunnel