查看原文
其他

SOFAJRaft Contributor 专访|黄章衡:前进的力量源于实践

The following article is from 开源之夏 Author 开源之夏


本期专访来自「开源之夏」暑期 2021 突出贡献奖获得者 -- 章衡

迷你简历


姓名:黄章衡

年龄:21

学校:福州大学


最喜欢的开源软件:K8s

最喜欢的数码产品:MAC

最喜欢的开源社区:SOFAStack


自我介绍


我来自福州大学 19 级计算机系,平常喜欢研究分布式和数据库。兴趣是参与开源项目,做开源贡献,我活跃参与了多个开源项目,包括 SOFAJRaft、TIDB 等等。


暑期2021项目:


SOFAStack 社区——


实现 SOFAJRaft Segment Log 的索引模块




Q:据了解,你在本科期间获得了诸多奖项,有丰富的实践经验。这对你的专业能力有什么帮助,有什么经验可以和同学们分享?


参加一些竞赛可以帮助我提高自己的团队协作能力,同时让我在一些“大场景“下能够镇定自若。


我觉得参加竞赛最重要的是要找到合适的队友,团队里每个队员都要各司其职。此外,作为队长,应该统筹管理整个团队的项目进度。


Q:你目前了解的开源项目中,有让你受益匪浅的项目吗?它对你有什么启发?


SOFAJRaft 让我学习到了很多东西,其加深了我对 “Raft“共识算法的理解。同时,让我学习到了如何构建一个大型的分布式系统。现在有很多的分布式系统都是基于 Raft 算法来做的(比如 TIKV),这对于我学习别的分布式系统有很大的帮助。


Q:请简单介绍一下暑期2021中你的开源项目


该项目主要负责为 SOFAJRaft 基于 Java 构建一个新的日志存储系统 -- LogStorage, 以替换原有的基于 Rocksdb 的存储系统



Q:在项目进行中遇到的印象最深刻的困难是什么?

      如何解决的?有什么收获吗?


所谓“万事开头难“,一开始我就对如何设计这个日志系统的架构而发愁。我的解决方法是去做调研——包括寻找相关的论文,研究别的相关的分布式系统,看看是否能让我找到启发。


收获就是,这让我学习到了如何去解决问题,特别是当自己没有思绪的时候,应该学会去找资料来突破困境。此外,只要克服了一开始的困难,后面的路就好走了。


Q:之后会继续丰富这次活动的文档和代码吗?

      对这个项目的内容有更高的期待和计划吗?


会的。


目前这个系统在性能方面还有提高的空间,后面我会配合社区负责人推动该项目的合并,并不断改进项目的存储性能。


Q:导师对你的项目评价颇高甚至超出预期,

      对于项目的申请及开发有什么经验可以分享?

首先,我觉得,在开源之夏这个活动中,一个好的导师是非常重要的。


我十分有幸遇到了我的导师——冯家纯, 其在暑期不断的帮我改进项目方案, 同时花了很多时间帮我 review 代码, 这促进了我能够较好的完成该项目。其实一开始的时候,我提交的申请方案并不是很完美,甚至可以说很差劲。但是老师给了我机会,他相信我可以做得更好。


此外,关于项目的申请,我觉得最重要的是尽早联系导师,并尽早提供项目方案。如果不知道如何设计方案,可以去借鉴一些相关的开源项目。


Q:请简单介绍做过的其他项目,

     过程中遇到的最印象深刻的难题是什么?

     你是怎么解决的?

这几个月,我尝试动手实践了 Tinykv (分布式 kv 存储) 和 Mit-6.830 (Database management system)这两门课程。学习过程中,凭借我在 SOFAJRaft 社区打下的 “分布式基础“, 我目前已经完成这两门课程。


学习过程中最大的困难就是如何坚持做完。这两门课程的难度比较大,很多人做到一半就放弃了。不过 “开源之夏“的活动让我再次意识到 “坚持就是胜利“。


Q:对于提高代码质量、可读性和文章的完整性,

      有什么可以分享的学习方法吗


代码质量方面: 


我的导师在结课点评中送给我一句话: 


'What really makes xxx stand out is attention to low-level details.'


coding 的过程中一定重视代码的细节,要构建属于自己的代码风格,不能随意敲代码。 此外,代码风格也要遵循社区的代码风格。最后,在做到一定阶段的时候,应该让导师帮忙 code review。


文章的完整性: 


首先需要对所做的项目有一个全面的认知,文章结构可以按照: 

1.项目背景

2.技术背景知识

3.项目架构概述

4.优化点及测试性能

5.总结


Q:有加入开源社区吗?

      通过本活动,你对开源社区有什么新的理解?

我加入了 SOFAJRaft 、TIDB、 RocketMQ 社区。一个字! 香!


参加开源社区, 做开源项目,对我的面试求职,个人能力的发展,人脉的扩充都非常有帮助。同时,借助开源社区,我也认识越来越多的前辈!



   本周推荐阅读  


蚂蚁大规模 Sigma 集群 Etcd 拆分实践




攀登规模化的高峰 - 蚂蚁集团大规模 Sigma 集群 ApiServer 优化实践


「网商双十一」基于 ServiceMesh 技术的业务链路隔离技术及实践


Prometheus on CeresDB 演进之路


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存