当前位置: 首页 > news >正文

记录第一次开源流计算框架Flink代码的贡献

作者简介

本人是一个在IT圈呆了15年的老码农,一直从事后端开发,管理,架构等工作,从事最多的也最擅长的是业务系统的开发,从事过ERP 人力资源 金融支付 等相关行业的开发和管理工作。

背景

一直以来,我都想着是否有机会给开源代码贡献一份力量,碰巧去年初公司需要对大数据框架进行选型,最后定下来用Flink,慢慢开始对Flink产生了浓厚的兴趣,也萌发了要对Flink贡献自己代码的想法。

准备

要想贡献自己的代码,首先需要对Flink系统有了解,我觉得前前后后的准备有以下几项

  • 阅读官网的文档(中英文都有),传送门->https://flink.apache.org/zh/flink-architecture.html
  • 读一本Flink书,我个人读的微信阅读上的《Flink内核原理与实现》
  • 尝试自己用Flink写一些小应用

步骤

有了以上的准备,就对Flink有个比较深刻的了解了,接下来是贡献代码的步骤

  • 首先,需要选择一个主题,通常可以从简单的入手,Flink官方有个JIRA系统,用来管理所有的Bug或则和Task,传送门->https://issues.apache.org/jira/projects/FLINK/issues,可以从中选择一个来,我当时选择的是FLINK-29324这个ticket
  • 确认自己可以修复这个问题,可以加个comment,比如说“Hello, can please assign this ticket to me?”,这样就会有人把这个ticket assign给你
  • ticket assign给你后,就可以把状态修改为work in progress了
  • 接下来就是改代码,从官方的master分支https://github.com/apache/flink,fork到自己的仓库中
  • 在自己的仓库中创建一个新的分支,这个分支可以用ticket的名字来命名,或者取一个有意义的名字也可以,我新建的分支名字为kinesis_connector_npe
  • 在此分支上进行代码修改,这里记得要写单元测试,因为在PR的时候需要写明这个改动怎么做verify
  • 写好代码后,提交代码到自己的分支,就可以创建PR了,PR里有许多问题需要回答,如果不明白的可以拿别人的PR来参考一下,主要说明这个PR是用来修复什么问题的,做了什么改动,怎么验证这个改动,后面还有yes no关于改动了哪些模块的问题。我的PR是这样提的
    在这里插入图片描述
  • PR提过后,可以刷新一下ticket,里面会自动Link这个PR
  • 接下来就是等待PR的merge,通常要等一到两天,如果有review comments的话,也要确认并进行相应修改或者回复。
  • 顺利的话,会被merge进master,至于要不要merge进别的release分支,merge的人会负责这个判断,并且会把相应的action贴进到ticket里,如下
    在这里插入图片描述

心得

你我离开源代码很近,只要能迈出那一步,其实没有那么难!!!

这个Ticket相对来说比较简单,希望自己后面能贡献更多,更优质的代码给到开源社区。

相关文章:

  • 共码未来 | 助力实现事半功倍的前端开发体验
  • 客户端存储localStorage和sessionStorage以及Cookie
  • Python学习笔记:Jupyter Notebook快速入门案例:学习时间与成绩的关系
  • 嵌入式软件工程师面试题(三)
  • K8S搭建共享存储(以MySQL例)
  • 【C++】类和对象(中篇)(万字)
  • 虹科教您 | 虹科TSN配置软件RELY-TSN-Configurator基本操作指南
  • 【python基础】super是啥,你会用吗?
  • 反向传播和其他微分算法
  • 爆肝撸了个“羊了个羊”通关助手
  • Flutter快学快用17 打包发布:Flutter 应用,你离线上运营只差最后一步
  • 效果超强!基于Prompt Learning、检索思路实现文本分类,开源数据增强、可信增强技术
  • 第五次线上面试总结(2022.9.21 二面)
  • 多容器SSM整合
  • 如何用架构的思维为云原生做减法?
  • 「面试题」如何实现一个圣杯布局?
  • Akka系列(七):Actor持久化之Akka persistence
  • HomeBrew常规使用教程
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • Javascript编码规范
  • js学习笔记
  • leetcode98. Validate Binary Search Tree
  • python大佬养成计划----difflib模块
  • Redis字符串类型内部编码剖析
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • storm drpc实例
  • vue 配置sass、scss全局变量
  • 对JS继承的一点思考
  • 后端_MYSQL
  • 基于axios的vue插件,让http请求更简单
  • 记录:CentOS7.2配置LNMP环境记录
  • 简单基于spring的redis配置(单机和集群模式)
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 微信开源mars源码分析1—上层samples分析
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • 怎么将电脑中的声音录制成WAV格式
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • ​虚拟化系列介绍(十)
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #pragma once
  • #QT(智能家居界面-界面切换)
  • ${ }的特别功能
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (九)信息融合方式简介
  • (三) diretfbrc详解
  • (十一)手动添加用户和文件的特殊权限
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • (转载)利用webkit抓取动态网页和链接
  • .CSS-hover 的解释
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .Net MVC + EF搭建学生管理系统
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径