我的阿里巴巴编程之夏

764 阅读4分钟

参与的起因

其实早在4月底五月初我就参与到了nacos这个开源项目中,阿里巴巴编程之夏是我在管理nacos issue时偶然根据issue label筛选发现的,而此时我已经是nacos的准commiter以及nacos-spring-project以及nacos-springboot-project`的维护者了

参与的过程

最崩溃的瞬间

在解决任务期间,有一个feature的实现涉及nacos的一致性协议层的重构、raft协议的选型(这一块有一位社区的同学对比了两个成熟的Java Raft的工业实现,因此我只是说进行工业实现,然后进了JRaft的源码研究),而整个重构这一块,太多的地方需要调整以及模块划分,每次在模块以及接口设计时,不断打翻自己之前的设计,不断的设计调整,同时还因为一致性协议层面实现改动的过大,导致单元测试的基础类需要大量调整,当时把自己搞的有点头大了,不过最终,还是暂时设计了一个较为好的一致性协议功能使用的抽象层,以及将大部分的一致性功能调通并且正常运行;目前的因为和上游分支差距过大,需要跟上上游代码,这时候就存在太多的冲突需要去手动调整

顿悟的瞬间

其实这个顿悟的问题,是在参与比赛之前的问题,当时这个问题的话,涉及到了spring-cloud以及zipkin,最开始以为是spring-cloud的自动服务注册的时机以及采用的事件存在一些问题,和官方进行了沟通,但是由于自己当时对于spring-cloud的整体设计理念不太清楚,导致自己的观点并不合适,但是当时是自己给出了相应的解决方案的;然后在暑假期间,再次调试这个问题时,发现当初的解决方案不奏效了,于是自己从新开始找问题,从debug源码入手,跟踪zipkin组件的启动流程,最终发现是spring-cloud-seluthbug,最终我也向spring-cloud组织上报此问题并提交了代码进行解决,目前已合并到主分支了

收获

编程能力、工程能力

怎么说呢,大学三年来,感觉只有大三这一年充实吧,大一大二自己都玩过去;在参与nacos期间,从一位入门的萌新、learner,到社区的contributor,再到最终的commiter,期间的付出也算是不少的吧,从自己的编码能力,到代码的设计、底层实现的理解都有了很大的进步,同时,由于nacos又是一个面向开发者,面向生产的开源组件,其功能的稳定、api的易用性,与技术的选型都需要进行权衡的;没有最好的东西,只有最合适的东西

开源协作

在参与nacos期间,其实还和spring-cloud-alibaba洛夜学长也有过沟通、交流,主要是关于nacos-spring生态组件的维护这一块的,关于组件的用户体验、功能使用方便性上都进行了交流与讨论,有些东西不是自己一拍脑门就可以定下来的,自己想的有时候只是自己觉得这样不错,但是对于大多数人来说,可能并不接受这种设计,这个时候就需要把自己的idea进行社区讨论。

另一方面就是对自己的代码质量吧,毕竟这是一个开源的、面向生产的组件,容不得半点差错,对于自己提交的代码,每次都要进行全面的测试、代码review才可以进行pull request

导师的帮助

nacos的PMC——敦谷前辈是我的导师,从学习nacos到成为commiter期间,敦谷前辈给我的映像就是很平易近人,有时会自己会问一些比较白痴的问题,导师也没有嫌弃我,而点出问题所在以及为什么会导致这个问题,有时遇到一些技术方向的问题时,前辈也会给出具有指导性的意见,使得我没有走什么弯路,因此在这里感谢敦谷前辈的耐心指导,同时也感谢洛夜大佬、风卿大佬、何煦大佬在我的编程之夏之旅中提供的帮助