头图

随着新年的到来,在杭州电子科技大学杭电助手、浙江理工大学计算机协会和成都信息工程大学异步开发实验室的支持下,Curve Code Camp·金秋篇顺利结营。在本次开源之行中,我们见证了思想的碰撞、技术的交流,以及友谊的缔结。每一位开发者怀揣对开源社区的热情与分布式技术的追求来到 Curve 社区,与志同道合的朋友共同学习、探讨分布式存储系统的开发路径,为 2023 年的开源之行画上圆满句号。

本次开发者活动,19 个 PR 顺利合入。新晋 12 位 contributor,7 位 Curve contributor 再次助力社区发展,为 Curve 社区的持续进步注入了强大的动力。我们邀请了四位开发者进行采访,分享他们的成长与收获,在这里将以问答形式分享给大家。

新晋社区贡献者

image.png

获奖名单

image.png

采访

本次受邀参与访谈的贡献者分别为:

@liuminjian、@ZackSoul、@zztaki、@shuaihehe。

本次选择的issue是?为什么会选择这道issue呢?

@liuminjian:本次选择 issue 是 #2561。这道 issue 主要解决当 chunkserver 空间不足时不要直接 down 掉,需要在集群容量快满时将集群设置为只读,等待空间释放后恢复为可读写。选择这道 issue 是想借此了解整个 Curve 的 io 读写流程,怎么从 client 端发 io 请求到底层文件读写,包括 Curve 如何基于 braft 构建高可用的分布式文件系统。

@ZackSoul:我本次选择的issue为 #2578 和 #2582。选择这两道 issue 的原因是这两道 issue 和之前我完成的 issue 功能是高度相关的,都属于 tools-v2 中 snapshot 相关的功能,而且它们之间的代码结构和逻辑也很相似,实现起来也更加轻车熟路。

@zztaki:本次我选择的 issue 是 #291,curveadm 部署 tgt 过程中,启动 tgtd 守护进程超时。选择这个 issue 是因为我参与得比较晚,只剩下两个 issue 给我选了,另外一个是文档工作,需要对项目全貌有一个了解,因此最终我就选择了“ curveadm 启动 tgtd 守护进程超时”这个 issue。

@shuaihehe:本次选择的 issue 是 #2841,选择这道题的原因是想要选择 C++的题目,刚好看到 set 和 get 计数,想到可能会牵涉到线程池,对这方面很感兴趣,又因为我是第一次参加 Curve 的开源活动,想选择个简单题入门一下,进而了解一下 Curve 分布式文件系统,就选择了这道题。

在开发过程中遇到了哪些有挑战性的问题?

@liuminjian:开发过程中遇到了很多挑战,后来也推翻了刚开始的设计,在 mentor 的指导下,改成底层返回空间不足的错误,根据错误返回给客户端,客户端 hang 住 io 一段时间后再重试。同时增加预留 chunk 空间参数,当 chunkserver 空间快要满的时候对请求返回只读,等空间释放后才能写入,如快照完成后释放日志空间等。同时在心跳上传时增加空间不足检查,当使用空间超过一定使用百分比上传空间不足错误,mds 收到空间不足错误后修改 chunkserver 状态避免其他 copyset 迁移进来,将 chunkserver 的 copyset 设为不可用避免继续分配空间。

@ZackSoul:在开发过程中遇到的最大挑战应该就是 cicheck 的不稳定性了,因为本次 issue 和之前的 issue 很类似,所以编码过程其实较为顺利,也按照 review 的意见修改了代码,但是最终修改完成以后 cicheck 突然测试覆盖率不足,导致不通过,这也导致最后两周一直卡在这个地方。

@zztaki:开发过程中的挑战我觉得主要是环境方面的配置,首先是 WSL 在配置实际 curveadm 环境时可能会存在一些问题,其次就是 bug 的定位,由于对此项目初次接触,因此选择单步调试去摸索命令主要的执行过程,以及思考是什么导致超时,最终就是解决问题。

@shuaihehe:在开发过程中,首先环境配置方面遇到了很大的困难,很多地方环境配置不好,各种报错,由于文档比较分散,有的地方甚至忘记配置了,不过,在 mentor 的耐心指导下,我解决了一个又一个环境配置问题;在写代码方面碰到了计数是在入队前还是入队后进行计数问题,也是跟 mentor 交流以后最终确定下来。整个流程感觉特别有意义。

参与本次开发者活动,有哪些收获呢?

@liuminjian:本次收获非常丰富,能了解到 Curve 的整个 io 读写流程,其实平常用 C++ 开发的机会不多,所以对我来说学到的东西会更多,包括一些代码规范、单元测试规范等,我觉得 Curve 整体项目代码规范还是挺好的,代码可读性不错,文档也很详细,对于我这种新入门的人还是很友好的,最后也收到了社区送的精美礼物,感谢几位 mentor 的指导和耐心解答。

@ZackSoul:最大的收获就是进一步熟悉了开源贡献的流程,同时也加强了对 Curve 中 tools-v2 部分的了解,编码规范性和编码水平也得到了一定提升。后续也希望进一步选择 Curve 内核方面的 issue 进行开发提交。

@zztaki:最大的收获是发现了这么一个宝藏项目!因为我对存储系统也是非常感兴趣的,而开源社区里其实块存储和文件存储项目相比于数据库项目少很多,Curve 不仅将这两个项目开源,并且组织了多次开发者活动,鼓励新来的开发者参与其中。未来,我也想继续为 Curve 做贡献,早日成为 committer ~

@shuaihehe:通过参加这次开源活动,我了解了 Curve 分布式文件系统的大致原理,看到了 Curve 项目的代码编写规范,在 mentor 的耐心指导下学会了一步一步解决问题,而没有感觉到直接做不了,还学会了使用 git 代码提交工具,收获颇多,很有意义。

用一句话吸引开发者参与 Curve 社区,你会说?

@liuminjian:Curve 社区有丰厚的奖品和福利,社区活跃度很高,有详细的开发文档,有耐心解答的 mentor,非常适合热爱技术的朋友加入。

@ZackSoul:热心的小助手、良好的社区氛围、负责的 mentor 以及丰厚的奖品让人很难拒绝参与curve社区!

@zztaki:参与 Curve 社区,不仅有机会获取 switch,更有机会成为项目 committer,大家一起加油~

@shuaihehe:mentor 特别好,赶快来领取任务,找 mentor,拿奖品!

尾声

感谢每一位开发者的到来,是你们的热情与才华让 Curve 社区焕发出光彩,也感谢杭州电子科技大学杭电助手、浙江理工大学计算机协会和成都信息工程大学异步开发实验室的鼎力支持,让更多的高校开发者参与 Curve 社区贡献。

Curve Code Camp·金秋篇始于 2023 年秋季,秋天是收获的季节,各位开发者在本次活动中同样收获颇丰,不仅收获了知识和友谊,更收获了对开源社区的热爱与承诺。尽管 Curve Code Camp·金秋篇已经落下帷幕,但我们的友谊与开源贡献之路才刚刚开始。让我们把这次的收获带入未来的日子里,在 2024 年继续为开源社区的发展贡献力量~

------ END. ------

🔥 社区资讯:

兴趣 + Curve 社区 == 秋招秘诀?(附网易内推码)

Curve 社区上半年 Roadmap 进展及下半年规划

🔥 用户案例:

Curve 文件存储在 Elasticsearch 冷热数据存储中的应用实践

扬州万方:基于申威平台的 Curve 块存储在高性能和超融合场景下的实践

创云融达:基于 Curve 块存储的超融合场景实践

🔥 技术解析:

探索 : CurveBS 模拟 RBD 接口对接 OpenStack

Curve 混闪之性能优化记录

CurveBS RDMA & SPDK 部署指南

‍‍‍‍‍‍‍‍‍

image.png

关于 Curve

Curve 是一款高性能、易运维、云原生的开源分布式存储系统。可应用于主流的云原生基础设施平台:对接 OpenStack 平台为云主机提供高性能块存储服务;对接 Kubernetes 为其提供 RWO、RWX 等类型的持久化存储卷;对接 PolarFS 作为云原生数据库的高性能存储底座,完美支持云原生数据库的存算分离架构。

Curve 亦可作为云存储中间件使用 S3 兼容的对象存储作为数据存储引擎,为公有云用户提供高性价比的共享文件存储。


OpenCurve
1 声望0 粉丝

CNCF sandbox 项目,分布式存储系统 Curve 社区官方账号,提供 Curve 版本更新、落地实践、关键技术解析和活动资讯,欢迎各位关注!