【开源之夏专访】受教于开源又贡献在开源——丛国庆

时间:2022-12-20 15:09:36

夏天渐行渐远,秋天匆匆晃过,开源之夏2022在洁白如新的冬天如期收获了350 位同学的结项成果,这些同学也在开源软件社区留下了自己的足迹,感谢各位同学的支持。今年我们依旧按照最佳质量奖、突出贡献奖、最快进步奖、最具潜力奖四个角度评选出了具有代表性的20位优秀学生。

本次采访,我们邀请了最佳质量奖获奖者丛国庆,分享他的经验。

 

【开源之夏专访】受教于开源又贡献在开源——丛国庆

姓名:丛国庆

性别:男

年龄:23

学校:山东大学

兴趣爱好:健身

 

--自我介绍--

1、首先请简单介绍一下自己。

大家好,我叫丛国庆,本科毕业于哈工大的机械专业,研究生跨考到山东大学软件学院就读,实验室大方向就是软件工程。大四曾在商汤科技从事软件开发实习,目前在RisingWave Labs实习,参与云原生网关、可观测性系统、VPC规划系统相关的开发。

2、据了解,去年你有参与构建商汤 Cosine 开源社区,给大家介绍一下你的主要工作内容吧。

去年在商汤工程院实习,我所在的部门正好也负责商汤内部开源社区Cosine的软件开发和运营相关的工作。不过商汤的开源是对内部所有部门开源,和广义上的开源还有区别。我当时主要参与了Cosine系统的门户软件开发、管理系统开发,以及商汤内部代码搜索平台的开发,在这个过程中接触到了很多优秀的开源框架,如Dubbo、Nacos等,产生了对源代码学习的渴望,埋下了为知名开源社区贡献的想法。

3、之前做过哪些项目,请分享你最喜欢的一个项目。

学习计算机这几年,从前端折腾到后端、云原生,语言也从Typescript到Java、Golang,也做了不少的项目。现在给我印象最深的是之前一个参加竞赛的项目,用Java+Webflux手撸了一个API响应式网关。这个项目帮助我对Java的学习更深一步,也开启了我对开源框架的源码学习。当时做这个网关,阅读了Spring Cloud Gateway、Apache Shenyu的源码,借鉴了两者优秀的思想,也为我后续顺利中选OSPP做了不少沉淀。

 

--关于开源之夏2022--

4、请简单介绍一下你在开源之夏2022中的项目。

在Seata计算与存储分离下,Redis成为炙手可热的Seata事务存储模式,但在此模式下,使用的是java+jedis(pipeline,mulit)的处理,导致在server端断电、宕机等情况下,会因为多次网络io及计算下才算一次完整动作的原因,导致如全局锁被残留时,会影响AT模式下部分数据的处理。

我对Redis全局锁和事务存储扩展了lua的实现,将一系列计算+存储交由Redis进行,保证了TC存储数据和争抢全局锁时的原子性,保证Redis事务存储模式下的高可用、一致性。最终经过压测后, lua模式相较于pipeline+mulit模式,QPS提升近180%,RT减少48%左右。

5、是在哪里了解到开源之夏活动的,参与活动的契机是什么?

由于研一下学期特别想深入学习java,不甘心只写crud,就上网搜有没有什么比赛或者训练营,正好看到OSPP在招,于是报名参加了。

6、在项目中遇到最印象深刻的问题是什么?如何解决的?有什么收获吗?

在项目中,对我来说印象最深的就是对Seata的全局锁和事务存储这块的理解,因为在网上这块的资料很少,所以前期的大部分时间都是在理解这块。非常感谢我的OSPP导师陈健斌的支持,他提供了我一些资料和设计文档,我对着资料一遍遍梳理,然后去思考如果我去设计这块,我会怎样怎样,最后终于理清这块,上手coding也就比较轻松了。经过OSPP项目后,现在看一些源码都变得很快了,确实提高了不少相关的能力。

 

--关于开源和学习--

7、看到你的Github主页在2022年很活跃,对你来说,成就感最大的贡献是哪个?

今年对我来说最有成就的就是参与了Seata的贡献,作为一名Java开发,像Seata在我们心中是很牛的中间件,这也将是我简历上的一个很好的亮点。

8、之后会继续参与开源社区吗,开源社区有哪些吸引你的地方?

等忙完即将到来的24校招,我会继续参与开源贡献。开源最吸引我的地方就是技术的先进性和问题的可研究性,不同于我们做业务开发,做开源很多情况都是攻克很前沿的问题,对我们未来的职业生涯来说也是很有帮助的。

9、恭喜你这次被评选为最佳质量奖,给大家分享一些提高代码质量和可读性的方法和技巧吧。

首先就是命名要规范,不管是变量、函数名还是什么,命名规范易懂,能够让其他人一目了然。

其次是注意运用设计模式,良好的使用设计模式可以让我们的代码扩展性更强,可读性更高。

然后是对于复杂的功能要做好解耦,抽取出与程序主要目的“不相关的子逻辑”。

再就是满足特定语言的规范,比如Java的阿里Java手册,Go的effective go。代码习惯的养成需要一点一滴的积累,平时多看一些优秀的源码(Seata、Dubbo等)也很利于我们的提高。

10、在你的职业发展规划中,开源对你有什么帮助吗?

希望能够在毕业前拿到社区的Commiter,这对我做开源也是一个很强的动力,对将来正式工作后也是一个很不错的title。