我在阿里实习做开源

本文涉及的产品
云原生网关 MSE Higress,422元/月
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 成长的过程就是不断经历和体验的过程,一段又一段不同心境的开始和结束。

作者 | 李志信
来源 | 阿里巴巴云原生公众号

3 月 19 日,初春的杭州,依旧阴雨朦胧。透过 EFC 健身房的落地窗往外看,远处的楼宇、青山、整齐的街道和稀疏的车辆在水雾中若隐若现。

午后的小憩时光,我拿了瓶咖啡回到工位,看着刚刚提交的 PR 通过了 CI check,这是我人生中作为实习生的最后一天了。

成长的过程就是不断经历和体验的过程,一段又一段不同心境的开始和结束。我希望三个月后,那个过了 22 岁生日的年轻人会如愿顺利拿到毕业证,再次出现在这里,我想那时的他一定更熟悉 Java 了吧。

本科时光

循规蹈矩的大学生涯,大概是是四年本科和三年硕士,而我属于校园的时光,只有两年半。在外实习到现在已经整整一年了,从北京到深圳再到杭州,我也非常庆幸能拥有这样的经历。

三段不同方向的实习,从最一开始在学校里的 GoOnline 在线 IDE 项目,让我对真正落地的开发项目充满了向往;到 “互享“ 平台运维开发,让我对企业落地的日常开发运维流程有所了解;再到看点业务开发与需求上线,让我对拥有百万用户的项目和技术充满了激情;再到中间件研发,专注于云原生领域的探索和落地。
第一段实习是在北京时代复兴投资公司,期间充满了懵懂和纠结的,纠结于是选择研发还是科研,懵懂与对从没见过的花里胡哨的各种工具的胆怯,但很幸运最终习惯了自己的选择。

第二段实习是在深圳腾讯,整个过程充满了刺激和危机感,危机来源于在社会上和技术上如何站住脚跟,惊险刺激于一连串从没料到的事情。很感谢我能冷静对待遇到的各种突发情况,来自就业的压力,来自转正的压力,都不足以压垮一个有梦想的年轻人。至今依旧怀念当时带领我成长的导师 Steven

去年秋天开始在阿里集团中间件团队开始了我的第三段实习经历,相比前两次,这次实习舒服了很多。当看清前路的时候,活的还是比较滋润的,所要做的就是积累、沉淀和享受来自研发的快乐。很幸运,实习经历中遇到的导师、同事和领导们都非常 nice,都可以遇到一起聊天交心、一起吃饭喝酒的前辈们,或许对于初入社会的年轻人,是一盏盏指向未来散发光芒的灯塔。

dubbogo 社区

拿到阿里实习 offer 后还未入职西厂前,便被大 Boss 引入了 dubbogo 社区,被告知实习的任务就是推动dubbo-go 在内部的落地和 dubbo-go 3.0 的开发。这是一个有技术的组织,更是一个有人情味的地方。

时光到回到去年刚拿到 offer 的 10 月份,第一次将 dubbo-go clone 到本地,成功实现了 RPC 调用,心情是无比激动的。因为这个场景陌生中带着熟悉。第一次 bug fix,第一次贡献 feature,写源码解读,再到后面成为 dubbo committer,投入 Dubbo-go 3.0 的贡献中。专属于年轻 IT 工程师的快乐,莫非于让自己和项目一起成长。

在阿里的实习过程,2021 年的重大版本 dubbo-go 3.0 贯穿了整条时间线。从我尚未入职还在石家庄的时候,便开始一边在按摩店洗脚一边开周会接任务,到后面熟识了社区中的领导们、技术大佬们,很多次被前辈的技术和精神所感动,说社区充满了人情味毫不为过。

马上就要到了三月底,我也希望 dubbo-go 3.0 可以成为实习过程中属于我的一份期末答卷,而 3.0 版本一定不是终点,而是国内开源 RPC 框架发展的过程所在,因为有了每一个阶段的创新,才成就了在未来长河中的丰富的云原生发展史。

比起项目本身,我更爱这种技术氛围:

  • 很多技术人员可以凝聚在一起,各尽所长为了一个目标而努力;
  • 一种“有我在项目就在”的责任心;
  • 一种在贯彻于编码中的开源项目的严谨;
  • 一种聚会时可以快乐吹水和交流的默契。

1.png

就在上周六晚上,dubbogo 社区负责 dubbo-go-pixiu 项目的负责人铁城大哥,为了庆祝自己成功从阿里外围公司转到盒马,召集了社区杭州的网友们成功小聚。觥筹交错间从技术八卦到社区秘闻,无所不谈,并纷纷“讨伐”图中某位马上从杭州某 IoT 公司离职要投奔蚂蚁的大佬 ^_^。很感激在前行路上遇到的许多优秀又充满情怀的前辈!

Triple-go

实习当然不可能只有周末的风月,更多的是期间的工作经历和成长。整个实习期间个人主要负责 dubbo-go 3.0 的 Triple 协议和新路由规则实现。

开源 Triple 协议作为 dubbo-go 3.0 的重要 feature,简单来说,就是扩展 gRPC 协议,在 gRPC 的基础上引入 dubbo 的服务治理能力和扩展空间。

刚开始想的很简单,在 HTTP2 之上实现 Triple,并兼容 gRPC。但难点在于既要和 gRPC 在普通/流式/状态码上完全兼容,又要具有 dubbo 服务治理能力 --- 在 dubbo-go 已有基础上扩展,还要扩展的优雅。

  • 手撕 HTTP2 

只借助数据帧层的 SDK 手撕 HTTP2 协议,首先需要解决发包逻辑的正确性。搞了一两个星期。实现了调用打通。

但自己实现的总会有问题...

除了数据帧发送正确,还要考虑滑动窗口流控、上下线、数据帧的拆包合包等等一系列流式场景下的问题。我的解决方法很直接,抓包看 grpc 怎么做的(没时间看源码了),然后按照它的逻辑去实现。

当问题一个在掉头发的过程中解决,看似美好,实则陷入死胡同 --- 手撕真的比不上官方库,无论是稳定性还是速度。

  • 改官方库

一开始没有选择官方库,因为 gRPC 并不是这么做的。调研的过程中感觉困难重重,Go 语言官方库只给了少的可怜的接口,怎么自定义 Header 和 Trailer?怎么实现 stream 调用?给官方库提交 issue 后被回复:“想法不错,你自己实现个贡献出来吧”...

在这一点上,隔壁 java 的实现就舒服了很多,功能强大的 java-http2 库直接信手拈来。后来对于大型项目的贡献已经有点恐惧了,条条框框太多,跟师兄学聪明点,干脆 fork 个分支自己改,改的自己都觉得骚,但是能实现需求。

很感谢经验丰富的领导提醒我,官方库可以试试用。

  • 丝滑体验

花了两天时间换了底层网络库,体验丝滑了很多,尤其是几兆的大个儿数据包,跟社区前辈一起测了一下,最后 2-3MiB 的双向数据包单机压测可达到 1.5k qps。

当然没考虑到的问题还有很多,但沉浸在开发的快乐和成就感中真的很爽。

未来的云原生

实习期虽然只有三个多月,但到后来我越来越发现,中间件研发已经承包了我的太多快乐,我越来越发觉了对编程的热爱,对专业的敬畏,对云原生技术的信仰。

我认为任何一位 IT 工程师,无论技术深度如何,无论经验是否丰富,都应该拥有自己的技术信仰。我希望技术信仰于我而言,始于对于编程的喜爱和强烈的项目成就感,成长于与前辈的交流和源码的学习中,希望在未来将落实于在 “落地” 和 “创新” 两个词中。

我认为,任何的技术,如果不落地生产,将不具有太多意义。而将“形而上学”的架构观念,突破层层阻碍和壁垒,例如和已有服务/语言/设计理念相悖,不断推进落地,这过程是伟大的,这个过程中付出过努力的人都是站在浪潮之巅的弄潮儿。

中间件的未来是什么?sidecar 架构真正优雅落地是什么样子?Java 和 Go 以后的关系又是如何?RPC 又能被什么替代,或者是以一种新形态出现?

很多东西就像年初的股市一样扑朔迷离,但未来一定会有一个唯一的答案。未来在杭州,我在技术上又会经历什么变化,业内技术栈又会产生什么样的突破和进展。

难以想象未来三年后,我的技术栈将会变成什么样?毕竟从测试、运维、业务开发、再到基础架构,唯一不变的是变化。

最后的话

2.png

配上实习最后一天离开西厂前的纪念照 --- 纪念一段人生路程的结束。祝福开源的 dubbo/dubbogo,在未来将会变得越来越强大,越来越多的开发者可以使用它们,创造云原生更大的价值。

dubbo/dubbo-go 3.0 将于近期正式发布,敬请期待!如有兴趣,可到 dubbogo 社区钉钉群 31363295 找我聊聊。

谨以此文致敬我的三段实习经历中帮助我成长的各位导师和技术前辈们,并以此纪念我即将逝去的大学生涯!

相关文章
|
7月前
|
边缘计算 运维 Anolis
干货满满,8 大技术分享!龙蜥社区走进中兴通讯 MeetUp 圆满结束
10位技术大咖与现场参会者探讨了边缘及嵌入式场景下泛操作系统技术的发展与生态建设。
|
存储 JavaScript Java
走进南京邮电大学!龙蜥导师面对面分享如何通过开源经历获得实习/工作机会?| 开源之夏 2023
本周三,开源之夏 2023 龙蜥导师将在南京邮电大学与同学们面对面交流~
|
人工智能 安全 物联网
15 年工龄的资深技术专家职场历程自述
春节前的空档,正是静下来,回顾过往、畅想未来的最佳时期。
3094 5
15 年工龄的资深技术专家职场历程自述
|
机器学习/深度学习 设计模式 JavaScript
2021阿里淘系工程师推荐书单
读书有点像机器学习从初始参数开始的局部最小化。 无论是数学、科学、技术、管理,还是历史、文学,读书的过程,就是根据一维的文字流,在立体的思维空间中重新建构。 这种建构的意义,将我们自身和世界连接了起来。 (阿里巴巴淘系技术部资深算法专家 乐田)
2021阿里淘系工程师推荐书单
|
人工智能 分布式计算 大数据
阿里开发者招聘节 | 2019阿里巴巴技术面试题集锦!参考答案已公布!
阿里巴巴资深技术专家们结合多年的工作、面试经验总结提炼而成的笔试真题这一次将陆续放出(面试题答案将在专辑分享结束后统一汇总分享)。并通过这些笔试真题开放阿里巴巴工作机会,让更多的开发者加入到阿里这个大平台。
听阿里巴巴合伙人、118号员工宋洁(kitty),讲述20年阿里之旅!
4月14日 19:00,听阿里巴巴合伙人、118号员工宋洁(kitty),讲述20年阿里之旅。钉钉扫描二维码,加入钉钉群内观看直播!
听阿里巴巴合伙人、118号员工宋洁(kitty),讲述20年阿里之旅!
阿里资深技术专家的10年感悟
阿里有许多土话,比如“方法总比困难多”、“不淘汰自己就会被别人淘汰”、“你感觉不舒服的时候,就是成长的时候”。每一句都在激励我们向前。生活总不缺困难和磨练,痛苦的时候,只有转变思维,才能蜕变。今天,阿里巴巴资深技术专家无相分享他在阿里这10年来的几点感悟。
12244 0
嘘!阿里技术大牛竟然在看这些书……
也许我们无法走遍地球的每一个角落,却可以用阅读丈量整个世界。停止阅读就等于停止给大脑供给养分。信息爆炸时代,“养分”的质量决定了个人的成长速度。今天,我们“偷出”了贾扬清、吴翰清等大神的私人书单。到底大神们如何跨界学习,将知识收为己用?一起来感受!
3335 0
|
程序员
阿里巴巴第10次颁“感动阿里奖”,千岛湖冰水救人,程序员见义勇为!
昨天,对于很多杭州人来说,可能只是下半年最强寒潮之下的一个寒冷周日。 但对于刘新停来说,却是一个惊心动魄的周日!因为那是他第一次救人,一次就救了4个! 事后,他裹着毯子,喝着热乎乎的千岛湖鱼头汤,浑身还是瑟瑟发抖。
5417 0
|
Java 开发者
【Java开发者专场】阿里专家墨玖:淘票票工程师文化
谈到工程师文化,大家都会比较熟悉,或者比较向往。但是到底什么是工程师文化,应该怎么做是互联网企业应该关注的东西。本文将从四个部分介绍工程师文化,首先,工程师文化从何而来?其次,我们为什么需要工程师文化?还有工程师文化要达到什么目标,走向哪里?最后,工程师文化实施手段有哪些,怎么样落地?
3301 0