介绍一下我们的开源“充电之旅” - 两位新晋 Apache Flink Committer 专访

本文出自字节跳动流式计算团队的方勇、胡伟华同学专访。两位同学在 Apache Flink 社区主要贡献了包括 Runtime Coordinator、Streaming Warehouse 等相关 Feature。于2023年7月正式受邀成为 Apache Flink Committer。

在软件开发的世界中,开源已成为普遍关注的话题。越来越多的企业和开发者认识到开源的重要性,并开始积极拥抱开源、贡献开源。自2017年开始,字节跳动流式计算团队开始尝试使用 Apache Flink 作为流式计算引擎,并逐步加大对开源社区的关注和投入。

近两个月来,团队方勇、胡伟华两位同学先后受邀成为 Apache Flink Committer。本文将对两位新晋 Committer 参与开源的心路历程进行专访。

我的开源参与之路

Apache Flink 是一个高性能的分布式计算框架,目前也已经是流式计算的事实标准,很大程度上推动了整个流式数据处理方面的发展。对于两位新晋 Committer 而言,Flink 在 Apache 中是不可忽视的明星项目。

作为一个非常活跃的社区,用户提出的问题很快就会获得解答(基本在一天内),用户体验非常友好。同时社区成员也非常专业,保证了 Flink 技术上的先进性。此外,Flink 也在流计算的基础上扩展广泛的应用场景,基于 Flink 的流批一体、OLAP、Streaming Warehouse 等都在字节有相应的落地。


Flink 是一款非常强大和灵活的计算引擎,字节跳动很多业务场景都是用 Flink 来支持。作为 Flink Runtime 研发工程师,随着我对这个项目了解的逐渐深入,我越来越感受到其设计理念的先进性,也萌发了积极回馈社区的想法。因此,我一方面订阅社区相关邮件,积极回答社区其他开发者的问题;另一方面致力于 Flink 的调度、资源管理领域,逐步将一些字节内部的优化经验分享回馈社区。

在参与社区的过程中,我主要对社区做出了以下几方面的贡献:

  1. 积极回答用户的问题和疑惑,帮助他们更好地理解和使用 Flink;

  2. 在 Flink 调度和资源管理方面,积极贡献代码,提升调度性能,减少维护成本。

随着持续参与社区,今年8月,我很荣幸受邀成为 Apache Flink Committer。

我现在在 Apache Flink 项目中的精力,主要集中在 Runtime Coordinator 相关工作。在这方面,字节跳动内部还有一些定制化开发,我们也会积极回馈到社区。在后续的 Feature 开发中,我们也会把合入社区放在重要位置考虑,积极贡献到社区中。


开始参与 Flink 社区贡献时,最大的挑战是寻找适合自己的 issue。最初我经常关注开发邮件组,接收到新的 issue 邮件时,会马上查看是否能够熟悉或解决较简单的问题。然后很快就会@社区的 PMC 或 Committer 帮忙分配。有时我也会浏览社区的 Jira 列表,查看哪些 issue 是我认为可以解决的,并将其加入我的 issue 列表中。在提交 PR 后,我会继续@可以帮忙 review 的人。有时候就在等待 CI 结果时,第二天就发现已经有 PMC 帮忙 Review 了,一看还是 Till 这些社区大咖。虽然那时候我和社区大佬们并不熟悉,但他们都非常友善,愿意接纳新人。随着在社区的不断积累,我对 Flink 系统的深入了解,会发现更多可以优化的 issue,同时也会提交 issue 甚至 FLIP,与更多志同道合的小伙伴一起交流。

在 Flink 社区项目中,我主要的投入是推动支持 Streaming Warehouse 相关 Feature ,包括 JDBC 和 Gateway 接入、Flink OLAP 相关 Feature 的实现。除了在研发方面,我也在社区各类邮件组的讨论和答疑中投入了不少精力,在这个过程可以和社区中不同国籍、不同公司、不同背景的同学有更好的沟通和交流,同时了解其他公司用户对 Flink 的使用方式和场景,将会对我们在后续的工作中有一定的启发。

除了Apache Flink 社区,我目前还在参与Apache Paimon 社区。目前我们团队除了鼓励大家参与 Apache 开源社区,将自己在内部解决的相关 issue 贡献到社区以外;也在和 Paimon 社区合作,推动 Streaming Warehouse 的数据血缘管理、流式计算回溯和订正、流批一体 ETL 一致性等方面的重大 Feature 开发。

参与开源也是“充电之旅”

胡伟华:

我一直认为参与开源社区对个人、团队、公司和社区都具有积极的影响:对个人而言,可以在与其他优秀成员讨论中提高技术水平,拓宽更多方案思路。对团队而言,可以促进创新和发展,避免闭门造车,尤其对字节跳动这样使用 Flink 引擎的团队,更需要深度参与社区。对公司而言,参与开源社区可以提高品牌形象和技术实力。而越多人参与社区,也越有利于社区的发展和用户问题的解决。

以我个人经历举例,在推动大作业的性能优化过程中,我们采用了批量部署方案,对 Flink 任务的部署流程进行了较大的改动。不过,经过与社区其他成员多次深入讨论后,我们决定将优化方向转为在 TaskManager 方面增加相关的缓存。这既能够实现优化目的,又能够大大简化对原有流程的修改。这让我深入了解了社区的工作方式,并感受到了社区力量的巨大。

参与开源让我在技术能力、思维扩展上都收获颇多。在技术方面,我可以向专业的 Committer、PMC 小伙伴学习到了很多,在一次次交流和严格 CodeReview 中收获了技术上的成长。在思维扩展上,我在回答社区用户提问的过程中看到更多的业务使用场景,扩展了我的思维。

方勇:

参与开源对我而言也是“充电”。总结而言有以下几大电力:

  1. 在这个过程中更深入地了解了开源社区的运行机制,更加熟悉后续如何鼓励团队其他成员参与社区以及推动内部功能进入社区流程;

  2. 在社区交流过程中,认识了更多相关领域的伙伴,方便互相沟通,了解行业目前的进展和技术方向;

  3. 可以更及时地获取社区以及开源系统目前正在推进的技术方向和核心功能,理解相关功能的背景和方案选型,有助于更好地推动系统在公司内部的技术规划和演进;

  4. 社区对技术方案、技术实现以及相关问题的思考相对内部更注重合理性和可扩展性,这些也可以持续沉淀到团队内部,推进团队技术成长。

“先行者”的小建议

胡伟华:

我建议的是胆大心细、积极参与。

胆大指勇敢地在社区表达个人意见,社区的小伙伴会积极聆听意见,当你的意见被采纳并讨论时,您将感受到满满的成就感。心细方面,在社区,大部分小伙伴是业余时间参与,并且主要采用异步沟通方式,一个完整和清晰的发言可以大大减少沟通成本。

积极参与不仅仅局限于提交代码,社区的讨论与用户的答疑也是很好的成长机会。

方勇:

主要有两点建议:保持热情和持续投入。

开源社区非常开放,你可以积极参与感兴趣或了解的问题。提供个人看法或者实践经验,帮助推动相关问题的解决或者 Feature 设计。

同时,参与社区是一个非常长期的事情,不是参与一两个月就能获得非常好的回报,需要持续地投入,不管是参与邮件组讨论还是开发 issue。只要能坚持上述两点,在帮助社区建设更好的同时,相信你也一定能在技术和影响力等方面有非常好的提升。


2023 年 8 月 18-20 日,ApacheCon Asia 在北京丽亭华苑酒店举办。来自字节跳动流式计算团队,Apache Flink Committer 李本超将参与 Keynote 演讲《开源贡献难吗?》,分享参与开源贡献的经验与收获。欢迎各位关注。

字节跳动流式计算团队负责字节跳动内部流式计算应用场景,支撑了包括机器学习平台/推荐/数仓/搜索/广告/流媒体/安全和风控等众多核心业务。主要解决超大单体作业(千万级别 QPS),超大集群规模(上万台机器)应用场景所面临的问题,对 Flink 在 SQL、State&Checkpoint、Runtime 等方向都有深度优化。

2022年团队支撑研发的计算引擎流式计算 Flink版”产品上线火山引擎,正式对外提供云上计算能力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/92470.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vite打包性能优化及填坑

最近在使用 Vite4.0 构建一个中型前端项目的过程中,遇到了一些坑,也做了一些项目在构建生产环境时的优化,在这里做一个记录,以便后期查阅。(完整配置在后面) 上面是dist文件夹的截图,里面的内容已经有30mb了&#xff…

E8267D 是德科技矢量信号发生器

描述 最先进的微波信号发生器 安捷伦E8267D PSG矢量信号发生器是业界首款集成式微波矢量信号发生器,I/Q调制最高可达44 GHz,典型输出功率为23 dBm,最高可达20 GHz,对于10 GHz信号,10 kHz偏移时的相位噪声为-120 dBc/…

QWidget的ui界面绘制成图片

文章目录 源文件源码解释效果修复图片清晰度 源文件 #include "widget.h" #include "ui_widget.h"#include <QPixmap> #include <QDir>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);// 构造…

神经网络与卷积神经网络

全连接神经网络 概念及应用场景 全连接神经网络是一种深度学习模型&#xff0c;也被称为多层感知机&#xff08;MLP&#xff09;。它由多个神经元组成的层级结构&#xff0c;每个神经元都与前一层的所有神经元相连&#xff0c;它们之间的连接权重是可训练的。每个神经元都计算…

cobbler自动化安装CentOS、windows和ubuntu

环境介绍 同时玩cobbler3.3和cobbler2.8.5 cobbler3.3 系统CentOS8.3 VMware虚拟机 桥接到物理网络 IP: 192.168.1.33 cobbler2.8.5 系统CentOS7.9 VMWare虚拟机 桥接到物理网络 IP&#xff1a;192.168.1.33 安装cobbler3.3 yum源修改 cat /etc/yum.repo.d/Cento…

如何通过内网穿透实现外部网络对Spring Boot服务端接口的HTTP监听和调试?

文章目录 前言1. 本地环境搭建1.1 环境参数1.2 搭建springboot服务项目 2. 内网穿透2.1 安装配置cpolar内网穿透2.1.1 windows系统2.1.2 linux系统 2.2 创建隧道映射本地端口2.3 测试公网地址 3. 固定公网地址3.1 保留一个二级子域名3.2 配置二级子域名3.2 测试使用固定公网地址…

一篇文章带你了解-selenium工作原理详解

前言 Selenium是一个用于Web应用程序自动化测试工具。Selenium测试直接运行在浏览器中&#xff0c;就像真正的用户在操作一样。支持的浏览器包括IE&#xff08;7, 8, 9, 10, 11&#xff09;&#xff0c;Mozilla Firefox&#xff0c;Safari&#xff0c;Google Chrome&#xff0c…

Spring Security存在认证绕过漏洞 CVE-2021-22096

文章目录 0.前言1.参考文档2.基础介绍漏洞影响范围&#xff1a;官方说明&#xff1a;修复版本&#xff1a;漏洞利用步骤&#xff1a;修复方式&#xff1a; 3.解决方案 0.前言 背景&#xff1a;项目被扫到Spring Boot 的漏洞&#xff0c;严格的说应该是Spring Security 组件的漏…

FPGA时序分析与约束(1)——组合电路时序

写在最前面&#xff1a; 关于时序分析和约束的学习似乎是学习FPGA的一道分水岭&#xff0c;似乎只有理解了时序约束才能算是真正入门了FPGA&#xff0c;对于FPGA从业者或者未来想要从事FPGA开发的工程师来说&#xff0c;时序约束可以说是一道躲不过去的坎&#xff0c;所以从这篇…

ZKP硬件加速

1. 引言 本文重点关注&#xff1a; 1&#xff09;何为硬件加速&#xff1f;为何需要硬件加速&#xff1f;2&#xff09;ZKP的关键计算原语&#xff1a; Multiscalar MultiplicationNumber Theoretic TransformationArithmetic Hashes 3&#xff09;所需的硬件资源4&#xff0…

ant-vue1.78版a-auto-complete表单自动搜索返回列表中的关键字标红

a-auto-complete表单自动搜索返回列表中的关键字标红 通常在做关键字标红的场景&#xff0c;都是后端返回html结构&#xff0c;前端直接渲染实现&#xff0c;但是如果需要前端处理的话&#xff0c;实现也是很简单的&#xff0c;接下来我直接上应用场景吧 应用场景就是通过关键…

Three.js实现模型,模型材质可拖拽效果 DragControls

Three.js提供了一个拖拽的API DragControls 用于实现模型材质拖拽效果 DragControls&#xff1a;是一个用于在Three.js中实现拖拽控制的辅助类。它简化了在Three.js中实现拖拽物体的过程。 DragControls的构造函数接受三个参数&#xff1a; objects&#xff1a;一个包含需要…