探索 Seata 项目的开源开发之旅

小夏 科技 更新 2024-01-31

作者:尹向坤,清华大学,SETAA开源暑期学生参与者。

Seata是一个开源的分布式事务解决方案,在微服务架构下提供高性能、易用的分布式事务服务。 在今年的开源之夏,我加入了Apache Seata(孵化器)社区,完成了开源之夏项目,从那时起就一直积极参与社区活动。 我有幸在 Apsara Conference-Developer Showcase 上分享我的开发者经验。 在这篇文章中,我将与大家分享我作为 Seata 社区开发者的旅程,以及我一路走来获得的经验和见解。 希望通过我的故事,让更多的人走上这条充满挑战、鼓舞人心的开源之路,为开源社区的繁荣做出自己的贡献。

在我正式介绍我的经验之前,我想提供一些相关的背景信息,以解释我为什么以及如何参与开源。 关于参与开源的原因,相信大家的动机都不一样。 以下是我认为的一些主要原因:

学习:参与开源让我们有机会为不同组织开发的开源项目做出贡献,与行业专家互动,并提供学习的机会。 技能提升:就我而言,我通常使用 j**a 和 python 进行后端开发。 但是在从事 Seata 项目时,我有机会学习 Go 语言,这拓宽了我的后端技术堆栈。 此外,作为一名学生,我很难接触到生产级框架或应用程序,而开源社区为我提供了这个机会。 利益:我的朋友对开源充满热情,他们喜欢编程,他们对开源充满热情。 职位搜索:参与开源可以丰富我们的投资组合,并增加我们简历的分量。 任职要求:有时候参与开源就是为了解决工作中遇到的问题,或者是为了满足工作需要。 这些都是参与开源的原因,对我来说,学习、技能提升和兴趣是我参与开源的主要动机。 无论你是学生还是上班族,如果你愿意参与开源,不要犹豫,为开源项目做出贡献。 无论年龄、性别、工作或地点如何,都是你对开源项目的热情和好奇心。

我参与开源的机会是参加中科院软件研究所组织的开源暑期活动。

开源暑期赛是面向高校开发者的开源活动,社区发布开源项目,学生开发者在导师的指导下完成项目开发,将最终项目成果贡献给社区,并融入社区仓库,获得项目奖金和证书。 开源之夏是踏入开源社区的好机会,也是我第一次正式接触开源项目,这次经历为我打开了一扇全新的大门。 从那时起,我深深地体会到,参与开源项目的建设,分享你的技术成果,让更多的开发者使用你贡献的东西,是非常有趣和有意义的。

以下**为开源暑期赛官方公开数据,自2024年以来参与的社区和学生数量逐年增加,活动也越来越好。 今年可以看到,你参与的社区项目有133个,每个社区有几个主题,每个学生只能选择一个项目。 在众多社区中找到您想参与的社区和适合您的主题是一项相对复杂的任务。

考虑到社区活动的水平、技术栈的契合度以及新人的定位,我最终选择加入 Seata 社区。

Seata是一个开源的分布式事务框架,提供了完整的分布式事务解决方案,包括AT、TCC、SAGA和XA事务模式,支持多种编程语言和数据存储方案。 从开源到今年已经 19 年了多年来,社区里有更多多个贡献者,项目收获24k+Star,是一个非常成熟的社区。 同时兼容 SETA其余主流的RPC框架和RDBMS,带有融入和融入多个社区之间存在着一种关系数以千计可以说,客户是分布式事务解决方案的事实标准。

2024年10月29日,Seata正式向Apache软件协会捐赠孵化项目。 一旦孵化,Seata有望成为第一个Apache软件分布式事务框架顶级项目。 此次捐赠也将推动Seata更广泛的发展,对生态建设产生深远影响,让更多开发者受益。 这一重要的里程碑也为西塔提供了更广阔的增长空间。

现在我已经介绍了一些基础知识,我将与 Seata 社区分享我的开发之旅。

在我开始认真开发之前,我做了很多准备工作。 由于Seata已经开发了五年,积累了数十万条线路**,因此直接开始开发的成本很高。 我分享了一些我的准备经验,希望能给你一些启发。

1.文档和博客是第一手资料

文档和博客等文本材料可以帮助社区新人快速了解项目的背景和结构。

首先,官方文档是主要的参考资料,从中你可以学到官方认为你需要知道的一切。

博客,仅次于官方文档的素材,一般都是由开发者或深度用户撰写的,与文档不同的是,博客可能更深入地介绍某个特定主题,比如一些项目的理论模型、项目结构、一个模块的源码分析等。

与博客类似,它们通常是技术文章,另一个优点是您可以订阅推送并利用您零散的时间阅读一些技术。

此外,一些开源社区分享的幻灯片,或者线下聚会公开的幻灯片,也是非常有意义的文字素材。

除了官方资料外,还有很多第三方资料可以学习,比如用户分享的用例,了解项目的具体实现和实践通过第三方社区的集成文档了解项目的生态;还可以通过第三方教程进行学习。 但在所有这些来源中,我认为官方文档和博客是最有帮助的。

2.熟悉使用框架

当然,刚才提到的文字肯定不需要读透,最终在纸上会觉得肤浅,当你看到并感觉几乎被理解时,你可以练习它们。 您可以按照官方文档进行操作"get started"这些章节提供了对项目基本流程的逐步理解。 另一种方法是寻找官方提供的示例或演示,构建并运行它们,了解 ** 和配置的含义,并使用项目了解项目的需求、目标以及现有功能和架构。

例如,Seata 有一个叫做 seata-samples 的仓库,其中包含 seata 和 dubbo 集成,以及 SCA 和 Nacos 集成案例等 20 多个用例,基本可以覆盖所有支持的场景。

3.粗略阅读源**掌握主要逻辑

在准备阶段,粗略地阅读源代码以掌握项目的主要逻辑也很重要。 知道如何有效地把握项目的主要内容,是一项需要随着时间的推移而培养的技能。 首先,通过上述准备步骤了解项目的概念、交互和过程模型是有帮助的。

以Seata为例,通过官方文档和实际操作,可以了解Seata在交易领域的三个角色:TC(Transaction Coordinator)、TM(Transaction Manager)、RM(Resource Manager)。 TC作为独立部署的服务器,维护全局和分支事务的状态,这是Seata高可用的关键TM 用于与 TC 交互,以定义全局事务的启动、提交或回滚RM 用于管理分支事务的资源,与 TC 交互以注册分支事务并报告分支事务的状态,并驱动分支事务提交或回滚。 粗略了解这些角色之间的交互,就更容易掌握项目的主要逻辑。

有了这些模型的印象,我就比较得心应手地提取了源代码的骨干。 例如,SEATA TC 事务协调器作为服务器,是一个独立于业务部署的独立应用程序。 为了分析源代码,您可以直接在本地拾取服务器,并通过启动类开始跟踪。 可以分析一些初始化逻辑,如服务注册、全局锁初始化等。 还有一些情况可以通过 RPC 调用来跟踪交互逻辑,例如 TC 如何持久化全局事务和分支事务,以及它如何驱动全局事务提交或回滚。

但是,嵌入式客户端框架**没有用于启动分析的启动类条目。 实际上,您可以从一个示例开始,并找到其对框架的引用来阅读它。 例如,Seata 的一个非常重要的注解是 globaltransaction,它用于标识全局事务。 如果你想知道 TM 是如何分析这个注解的,那么我们可以使用 IDE 的搜索功能来查找 globaltransaction 的 *** 来分析其中的逻辑。

还有一个小技巧要和大家分享,经常说,单测试关注的是单个模块的功能,你可以理解一个模块的输入和输出,通过阅读单个测试可以理解逻辑边界,也可以沿着单测试的调用链阅读**, 这也是理解源代码的一个非常重要的手段。

在做好充分准备后,下一步就是让学区积极参与社区活动。

参与的方式有很多种,最常见的参与方式是查看项目中的问题列表,社区通常会为新贡献者标记带有特殊标签的问题,例如“good-first-issue”、“contributions-welcome”和“help-wanted”。 您可以按这些标签筛选感兴趣的任务。

除了问题之外,GitHub 还提供了讨论功能,可以参与一些公开讨论并获得新想法。

此外,社区经常定期召开会议,例如每周或每两周一次的会议,可以参加会议,了解社区的进展情况,提出问题,并与其他社区成员进行交流。

我第一次加入 Seata 社区是通过开源夏季活动。 我已经完成了我的项目,并为 Seata Saga 实现了一些新功能,以及一系列优化。 但我并没有止步于此,因为在Seata的开源经历中,我拥有学生生涯中最宝贵的开发人员经历之一,并且通过这些参与方式在我的余生中继续活跃在社区中。 这主要归因于以下几个方面:

沟通与社交导师制度为我提供了重要的支持。 在开发过程中,我和导师Yixia的密切合作是我适应社区文化和工作流程的关键。 他不仅帮助我适应了社区,还为我提供了项目设计的想法,还在工作中与我分享了一些经验和见解,这对我的发展非常有帮助。 此外,Seata 社区的创始人 Qing Ming 也提供了很多帮助,包括与其他同学建立联系、帮助我进行代码审查,也为我提供了很多机会。 正面反馈在Seata的开发过程中,我经历了一个良性循环。 很多细节都给了我很多正面的反馈,比如我的贡献被用户广泛使用和受益,比如社区对开发的认可。 这种积极的反馈加强了我继续为 Seata 社区做出贡献的意愿。 技能提升:参与SEATA的开发也大大提高了我的能力。 在这里,我可以学习生产级的**,包括性能优化、界面设计和边界判断技能。 您可以直接参与开源项目的运营,包括项目规划、调度、沟通等。 当然,还有分布式事务框架的设计和实现方式。 除了这些宝贵的开发者经验外,我也从这次经历中学到了一些参与开源的个人经验,我做了一个简短的总结,以激励其他有兴趣参与开源社区的同学:

了解社区的文化和价值观每个开源社区都有不同的文化和价值观。 了解社区的文化和价值观对于成功参与社区至关重要。 观察和了解社区其他成员的日常发展和交流方式是了解社区文化的好方法。 尊重他人的意见,宽容社区中的不同观点。 敢于迈出第一步不要害怕面对困难,迈出第一步是参与开源社区的关键。 可以通过拾取来标记"good-first-issue"等等,编写文档、单元测试等即可开始。 重要的是要克服对困难的恐惧,尝试学习。 对你的工作充满信心不要怀疑你的能力。 每个人都是从零开始,没有人是天生的专家。 参与开源社区是一个学习和成长的过程,需要不断的实践和经验。 积极参与讨论,不断学习不同的技术不要害怕提出问题,无论是关于项目的具体技术还是开发过程中的挑战。 不要将自己局限于一个领域。 尝试学习和掌握不同的编程语言、框架和工具可以拓宽您的技术视野,并为您的项目提供有价值的见解。 在我的开源之旅中,我获得了宝贵的经验和技能,这不仅帮助我成长为一个更有价值的开发人员,还让我深刻理解了开源社区的力量。 然而,我不仅仅是个人参与者,我代表了Seata社区的一部分。 作为一个不断发展壮大的开源项目,Seata具有巨大的潜力和新的挑战。 因此,我想强调的是,已经进入Apache软件大会孵化阶段的Seata社区的重要性和未来潜力,这一重要的里程碑将为Seata带来更广阔的发展空间。 Seata欢迎更多的开发者和贡献者加入我们,让我们一起努力,推动这个开源项目的发展,为分布式交易空间的进步贡献力量。

搜索钉钉群号。

加入seata群开源***群号:32033786)。

相似文章

    探索面向开源 OA 系统的 PHP 解决方案

    私信或评论区留言,从事OA办公系统产品研发多年,可以向大家推荐高性价比的开源OA软件!在当今的数字时代,办公自动化 OA 系统已成为企业管理的重要组成部分。它不仅可以提高工作效率,还可以实现信息的集中管理和协同办公。然而,对于许多中小型企业来说,购买商用OA系统可能是一种负担。因此,选择开源OA系统...

    华为云多个开源项目通过美国信息通信研究院认证

    近日,可信开源评价结果在中国信息通信研究院主办的 中国信息通信研究院ICT深度观察报告 开源与软件 链分论坛上发布。华为云上共有个开源社区和个开源项目获得可信开源社区和可信开源项目认证,其中Kubeedge Karmada Volcano在运营 治理 开发能力等方面均获得先进评级。华为云三大开源社区...

    11亿项目赚110万,开元证券被质疑“底价”合约

    中信经纬月日电 马 京 王玉玲 近日,开元 中标湖北省襄阳市某国有企业发行规模约亿元的债券承销项目,利率为 据此计算,亿元的项目仅赚了万元,被质疑以 底价 承包项目。此前,低价债券承销恶性竞争时有出现,监管部门也屡次重创,现在市场情况如何?开源 被问及以 底价 承销获胜债券的问题。据襄阳市公共资源交...

    如何成为开源项目的贡献者:实用指南

    在当今的软件开发世界中,开源项目已成为创新和协作的重要平台。越来越多的开发者和企业参与到开源项目中来,为开源社区贡献力量。如果你也想成为开源项目的贡献者,那么本文将为你提供一个实用的指南,帮助你学习如何成为开源项目的贡献者。.了解开源项目和社区。在成为开源项目的贡献者之前,您需要了解开源项目和社区的...

    中国最大的商业地下储油项目开工建设

    今天 月日 中国最大的商业地下石油储备项目开工建设,项目投入使用后,将实现进口油的快速储存 加工 消化和周转,为我国油气资源的稳定提供保障。位于浙江省宁波市北仑区大榭商业仓储项目,由中海油自主设计建造。包括万立方米的地下洞室储罐,以及地表储运和配套设施。大榭商业封存工程是在岩体中人工挖洞进行封存,利...