当前位置:

首页 > 系统应用 > 我在阿里实习做开源

我在阿里实习做开源

李志信 (GitHubID LaurenceLiZhixin),中山大学软件工程专业在校学生,擅长使用 Ja va/Go 语言,专注于云原生和微服务等技术方向。3月19日,初春的杭州,依旧阴雨朦胧。透过 EFC 健身房的落地窗往外看,远处的楼宇、青山、整齐的街道和稀疏的车辆在水雾中若隐若现。午后的小

李志信 (GitHubID LaurenceLiZhixin),中山大学软件工程专业在校学生,擅长使用 Ja va/Go 语言,专注于云原生和微服务等技术方向。

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

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

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

本科时光

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

三段不同方向的实习,从最一开始在学校里的 GoOnline 在线 IDE 项目,让我对真正落地的开发项目充满了向往;到 “互享“ 平台运维开发,让我对企业落地的日常开发运维流程有所了解;再到看点业务开发与需求上线,让我对拥有百万用户的项目和技术充满了激情;再到中间件研发,专注于云原生领域的探索和落地。

第一段实习是在北京图森科技,期间充满了懵懂和纠结的,纠结于是选择研发还是科研,懵懂与对从没见过的花里胡哨的各种工具的胆怯,但很幸运最终习惯了自己的选择。

在深圳腾讯的那段实习经历,至今回想起来都让我心跳加速。你知道吗?在那里,我时刻都能感受到刺激与危机并存。这种危机,一方面来自于如何在竞争激烈的社会中站稳脚跟,另一方面则源于技术领域的不断更迭。而那些意想不到的事情,更是让整个实习过程充满了惊险与刺激。不过,我很庆幸自己能够在面对各种突发状况时保持冷静。就业的压力,转正的压力,对于一个怀揣梦想的年轻人来说,或许是巨大的挑战,但绝不是能够轻易压垮我的负担。如今,我依然十分怀念当时带领我成长的导师Steven【见链接1】。

去年秋天开始在阿里集团中间件团队开始了我的第三段实习经历,相比前两次,这次实习舒服了很多。当看清前路的时候,活的还是比较滋润的,所要做的就是积累、沉淀和享受来自研发的快乐。很幸运,实习经历中遇到的导师、同事和领导们都非常 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 框架发展的过程所在,因为有了每一个阶段的创新,才成就了在未来长河中的丰富的云原生发展史。

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

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

就在上周六晚上,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?怎么流式调用?给官方库提交 issue 后被回复:“想法不错,你自己实现个贡献出来吧”...

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

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

  • 丝滑体验

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

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

未来的云原生

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

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

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

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

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

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

最后的话

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

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

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

相关链接

  • 1 我在腾讯看点的导师 Steven https://blog.csdn.net/forevermoonlight/article/details/108644085
  • 2 dubbo-go https://github.com/apache/dubbo-go
  • 3 Triple-go https://github.com/dubbogo/triple
  • 4 Dubbo-go 源码笔记(一)Server 端开启服务过程 https://developer.aliyun.com/article/777450
  • 5 Dubbo-go 源码笔记(二)客户端调用过程 https://mp.weixin.qq.com/s/eb2aHvILemPPm3QSc5nqlw
本文内容来源于网友投稿,如有侵权请联系删除。
作者最新文章
系统应用
相关文章 更多
普通用户选Windows 10家庭版还是专业版?适用场景分析
普通用户选Windows 10家庭版还是专业版?适用场景分析

不确定该选Windows 10家庭版还是专业版?本文解析两者在远程连接、磁盘加密和虚拟化等方面的实际差异,帮你避开性能误区,根据真实使用场景做出最具性价比的选择。

win10断电重启后自动继续更新要怎么阻止
win10断电重启后自动继续更新要怎么阻止

Win10断电重启后总是自动继续更新怎么办?别强行关机,先等恢复完成。教你用暂停更新、设置活动时间和按流量计费连接,减少更新对工作的打扰。注意Win10支持已终止,长期不更新有风险。

win10能不能单独关闭功能更新不关闭安全补丁
win10能不能单独关闭功能更新不关闭安全补丁

解析Windows 10功能更新与质量更新的区别。说明个人家庭版无法永久单独关闭功能更新,专业版可通过组策略延迟功能升级。提醒用户关注Win10支持终止时间,避免误用禁用服务导致安全风险。

win10使用移动热点如何禁止win10自动更新下载
win10使用移动热点如何禁止win10自动更新下载

想知道Win10连手机热点时如何避免偷跑流量?只需将热点网络设为“按流量计费的连接”,即可限制Windows Update自动下载非优先更新。本文提供详细界面导览与设置步骤,助你精准控制后台数据消耗。

U盘启动安装Windows11容易失败?正确装机流程是什么
U盘启动安装Windows11容易失败?正确装机流程是什么

详解 Windows 11 安装的三种路径风险,指导如何制作官方安装介质、正确进入启动菜单、安全清理磁盘分区以及装后验证激活状态,帮助用户避免数据丢失和安装失败。

win10怎么只关闭大版本升级保留安全更新推送
win10怎么只关闭大版本升级保留安全更新推送

想只关闭Win10大版本升级但保留安全补丁?本文区分功能更新与质量更新,详解专业版组策略配置方法,并说明家庭版限制及Win10停止支持后的应对建议。

win10笔记本外出联网如何阻止自动下载更新包
win10笔记本外出联网如何阻止自动下载更新包

Win10笔记本外出使用手机热点时,如何防止自动下载更新包消耗流量?本文详解通过设置“按流量计费的连接”和“暂停更新”来精准控制流量,对比传递优化限速效果,并解释为何不应直接禁用Windows Update服务。

Windows 10家庭版和专业版有什么区别?核心功能对比
Windows 10家庭版和专业版有什么区别?核心功能对比

想知道Windows 10家庭版和专业版怎么选?本文不聊跑分,只讲远程桌面、磁盘加密和组策略等关键功能的实际差异,帮你判断是否真的需要升级到专业版。

Win11专业版和家庭版安装流程有什么区别
Win11专业版和家庭版安装流程有什么区别

Windows 11 家庭版和专业版在安装步骤上并无本质差异,主要区别在于产品密钥激活和功能解锁。本教程指导你如何检查硬件兼容性、使用官方媒体创建工具制作安装盘,以及在安装过程中正确选择版本。同时解析安装后如何验证激活状态,以及从家庭版升级到专业版的正规路径,确保系统稳定且合规。

除了界面,Windows11和Win10还有哪些实质差异
除了界面,Windows11和Win10还有哪些实质差异

除了开始菜单的变化,Windows 11在TPM 2.0安全要求、窗口贴靠布局、驱动兼容性以及系统更新策略上与Windows 10有显著不同。本文详解两者实质差异,助你判断是否值得升级。

查看更多
精品专题 更多
装机必备
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows
Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

macOS软件
macOS软件

正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

Mac软件 更多
photoshop
photoshop
Windows、macOS 、 iPad

Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

Blender
Blender
Windows、macOS 和 Linux

Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。

灵活计算器
灵活计算器
macOS/iOS/Android

灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

WINDOWS 更多
3dmax(3ds max)
3dmax(3ds max)
Windows

Autodesk 3ds Max 是一款专业的三维建模、动画与渲染软件,广泛应用于建筑可视化、游戏开发、影视动画、广告设计和产品展示等领域。

photoshop
photoshop
Windows、macOS 、 iPad

Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

Blender
Blender
Windows、macOS 和 Linux

Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。