Seata 与三大平台携手编程之夏,百万奖金等你来拿

本文涉及的产品
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
MSE Nacos/ZooKeeper 企业版试用,1600元额度,限量50份
简介: Seata 社区今年联合了开源之夏,阿里巴巴编程之夏和 CCF GitLink 编程夏令营发起了面向高校学生的暑期编程活动。

作者:Seata社区


社区简介


Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。在 Seata 开源之前,Seata 在阿里系内部一直扮演着分布式数据一致性中间件的角色,几乎每笔交易都要使用 Seata,帮助业务平稳的度过历年的双11洪荒流量,对业务进行了有力的技术支撑。2019.1 为了打造更加完善的技术生态和普惠技术成果,Seata 正式宣布对外开源,Seata 将以社区共建的形式帮助用户快速的落地分布式事务解决方案。短短3年间,Seata 社区已经收获了 22k star 和超 300 名 contributor,树立了一大批企业标杆用户,成为了分布式事务领域的事实标准。


GitHub:https://github.com/seata/seata


官网:https://seata.io/zh-cn/


Seata 社区今年联合了开源之夏,阿里巴巴编程之夏和 CCF GitLink 编程夏令营发起了面向高校学生的暑期编程活动。


开源之夏目前已进入正式编程阶段,本文将不再过多介绍,详情参考:


https://mp.weixin.qq.com/s/q6J-swbdWqZebuSiq2JDWg


开源之夏项目中选情况请参考:


https://summer-ospp.ac.cn/#/org/projectlist


目前仍然有阿里巴巴编程之夏ASoC和CCF GitLink编程夏令营可接受提案的申请,如果你是在校生满足相应的申请条件,赶紧来申请吧。这里有社区资深的导师提供 1v1 的专业指导,也有丰厚的奖金等你来拿。


阿里巴巴编程之夏是什么


1.png


Seata 社区今年再度与阿里巴巴编程之夏携手,并准备了 3 项精选项目课题,欢迎同学们申请!


项目一:事务状态数据的长效存储


目前 Seata 的事务 Session 和 undolog 数据虽然会持久化,但是事务 Session 和 Undolog 会随着全局事物的生命周期定期删除,我们需要一个日志流水将这些 Session 和 Undolog 的进行持久化存储,因为事务 Session和Undolog 是 Seata 重要的状态数据,数据的⻓时间持久化存储对于数据的分析有重要的意义。主要任务如下:


1、发送层设计。为了不影响 Seata 事务主流程的性能,记录事务 Session 和 Undolog 数据需要采用异步的方式,最好的方式就是利用消息队列,目前消息队列有很多种,比如RocketMQ、Kafka 等,为了屏蔽消息队列的具体实现,Seata 需要设计出一套通用的发送接口层,有具体的消息队列实现,并且由 Seata 启动时通过读取用户配置加载具体实现。最后通过此接口实现可以把事务 Session 和 Undolog 发送到消息队列中。


2、领域模型设计。事务 Session 和 Undolog 需要按照一定的数据结构传输,因此还需要设计一套通用的 Event 事件传输模型,具备一定的可扩展性。


3、消费层设计。消费层默认实现放在 Seata Console,为了屏蔽消息队列的具体实现,消费端同样需要设计出一套通用的接口层(监听/消费/⻔面类等接口),由具体的消息队列实现,并且由 Seata Console 启动时通过读取用户配置加载具体实现。


4、数据存储与可视化。通过启动消息队列的消费者,消费消息队列的 Event 事件,将数据存储到指定的存储媒介中,由于存储后的数据不需要修改,但需要频繁查询,因此存储媒介推荐使用 NoSQL 相关数据库。同时对数据进行可视化(建立数据大盘),便于数据的分析与洞察。


编程语言:Java


导师:Seata Committer 张乘辉( zhangchenghui.dev@gmail.com)


项目详情:https://github.com/seata/seata/issues/4636


项目二:Seata SDK 侧的 metrics 设计


在很多时候,我们可能需要通过一些实时监控的数据来了解整个系统在当前或者某一时刻运行的情况。Metrics 作为一款监控指标的度量类库,提供了许多工具帮助开发者来完成各项数据的监控。此任务便是结合社区的需求,完善 Seata client SDK 侧的各项数据的监控。帮助用户有效地监控执行过程并识别可能存在的问题。


现阶段 Seata 导出的 Metrics 仅包含服务端相关指标,结合现有 Metrics 设计,完善 Seata clientSDK 侧的各项指标设计,主要指标如下:


1. global begin/commit/rollback 等状态的统计
2. branch registry/flush undolog/report/commit/rollback 等状态的统计
3. undolog,fence 等 hook 的调用


编程语言:Java


导师:Seata Top Contributor 刘洋(734843455@qq.com)


项目详情:https://github.com/seata/seata/issues/4637


项目三:Seata-Sample 重构任务


Seata-Sample 作为 Seata入门者必经项目,是入门 Seata 的重要途径之一。但 Seata 社区目前日益增大,版本迭代与发布也越来越快,目前 Sample 中已经出现了有许多例子与实际版本脱轨的情况,而这样的情况非常不利于 Seata 后续的发展与迭代。因此对 Seata-Sample 进行重构对整个 Seata 开源项目与 Seata 开源社区具有重大的意义。主要任务如下:


1. 结构重构。整理出 Sample 项目中无用、过期、重复或已经无法运行的 Sample 项目,并对其进行清理,社区后续不再对这类项目进行维护。而对于保留下来经过整理的项目,我们需要对其进行结构化的梳理,将 Sample 中的项目与最新版的 Seata 版本进行能力对其,帮助新同学更好地入门 Seata。


2. 官网联动。Seata-Sample 目前的项目能力与官网并无形成联动能力,Sample 与官网的例子是各自为战的状态。我们希望经过整理的 Sample 与官网的例子形成能力对齐,帮助新同学更好地入门 Seata。


编程语言:Java


导师:Seata Top Contributor 谭志坚( zhijian.tzj@alibabac-inc.com)


项目详情:https://github.com/seata/seata-samples/issues/537


CCF GitLink 编程夏令营


2.png


Seata 社区今年与 CCF GitLink 开源编程夏令营携手,并准备了 3 项精选项目课题,欢迎同学们申请!


项目一:Seata-Golang TCC 模式注解支持


当前 TCC 模式需要实现 TCCService 接⼝,通过该接⼝约束开发者实现 try、cancel、comfirm ⽅法,通过注解,可以简化该过程。实现 TCC golang 注解支持可参考:


https://github.com/MarcGrol/golangAnnotations


⽤户在使⽤ Seata-Golang TCC 模式协调分布式事务时,需要将 Try 请求的上下⽂信息告诉 TC,即 Commit 操作应该调⽤哪个⽅法、Cancel 操作应该调⽤哪个⽅法,以及 Try 请求的参数。当 TC 发起全局提交、回滚的时候,才能根据事务分⽀决定调⽤哪个⽅法提交、调⽤哪个⽅法回滚。当然这⼀切都是由框架来完成的。问题是,为了告诉 TC Server 这些信息,需要⽤户实现⼀个 TCC Service 接⼝。在程序初始化时,调⽤ tcc.Implement() ⽅法,该⽅法会通过反射获取 Commit 操作对应的 Confirm ⽅法以及 Cancel 操作对应的 Cancel ⽅法,然后将上下⽂信息发送到 TC Server。如果我们通过注解来实现,则只需在对应的 Try ⽅法上打上注解 @TCC(Commit="xxx",Cancel="xxx"),再配合注解的扫描初始化,即可完成告诉 TC Server Try 请求上下⽂信息的过程。可以更加⽅便⽤户使,简化开发,提升效率。

image.gif

3.png


编程语言:Golang


导师:Seata Committer 刘晓敏( 985784089@qq.com)


项目详情:https://www.gitlink.org.cn/glcc/subjects/detail/71


项目二:AT 模式支持 Oceanbase oracle 内核


数据库是 Seata 重要的资源扩展,目前 Seata AT 模式支持 MySQL、PostgreSQL、Oracle、TiDB、MariaDB 等。Oceanbase 是由蚂蚁集团完全自主研发的国产原生分布式数据库。Seata AT 事务模式需要对 Oceanbase 数据库的 Oracle 内核进行相关的支持(Oceanbase 兼容 MySQL 部分,因此 AT 模式天然支持 Oceanbase MySQL 内核)。这个项目需要参照 AT 模式中对已有 MySQL、PostgreSQL、Oracle 的梳理出结构图,AT 模式利用 SPI 插件化对这些扩展点已做了抽象和预留。基于扩展点实现 Oceanbase 数据库的 Oracle 内核适配,并最终能够通过 seata-samples 的验证。


编程语言:Java


导师:Seata Committer 季敏(slievrly@163.com)


项目详情:https://www.gitlink.org.cn/glcc/subjects/detail/8


项目三:Seata 控制台长连接管理


Seata  1.5.0 提供了控制台管理,控制台是 Seata 的重要白屏化管理手段。业务侧 Seata-Client 与 Seata-Server 通过长连接通信,目前对于长连接缺少可视化展示和操作,不方便集中管理,可能造成连接数过多容量预估不足,恶意连接难以 trace 等问题,因此需要对连接 Seata-Server 的客户端连接能够在控制台页面进行白屏化管理。要求能够在控制台设置单个 Seata-Server 节点可接受连接数的上限,可在控制台显示具体的客户端长连接信息,并能进一步提供简单的管理功能。


编程语言:Java + 少量前端 React(可社区支持)


导师:Seata Committer 季敏(slievrly@163.com)


项目详情:https://www.gitlink.org.cn/glcc/subjects/detail/134


项目报名

学生可自由选择项目,登录官网报名申请对应项目即可,被选中的同学将在社区导师指导下,按计划完成开发工作,并将成果贡献给社区。社区评估学生的完成度,主办方根据评估结果发放活动奖金给学生。这是同学们是未来毕业简历上浓墨重彩的一笔,也是迈向顶尖开发者的闪亮起点。


阿里编程之夏 ASoC:

https://asoc2022.opensource.alibaba.com/


CCF GitLink 编程夏令营:

https://www.gitlink.org.cn/glcc/subjects/detail/8

https://www.gitlink.org.cn/glcc/subjects/detail/71

https://www.gitlink.org.cn/glcc/subjects/detail/134


注意事项:所有报名必须通过系统报名方可有效,报名前请阅读学生指南。


为了方便同学们的交流,有意向参与 Seata 社区开源之夏活动的同学请使用钉钉扫码 SummerCode 暑期交流群。


4.jpeg


期待同学们的加入,让我们相约相遇在这个夏天!


点击此处,立即查看!

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
11月前
|
Java 数据库
在Java中使用Seata框架实现分布式事务的详细步骤
通过以上步骤,利用 Seata 框架可以实现较为简单的分布式事务处理。在实际应用中,还需要根据具体业务需求进行更详细的配置和处理。同时,要注意处理各种异常情况,以确保分布式事务的正确执行。
|
11月前
|
数据库
如何在Seata框架中配置分布式事务的隔离级别?
总的来说,配置分布式事务的隔离级别是实现分布式事务管理的重要环节之一,需要认真对待和仔细调整,以满足业务的需求和性能要求。你还可以进一步深入研究和实践 Seata 框架的配置和使用,以更好地应对各种分布式事务场景的挑战。
332 63
|
7月前
|
SQL
seata是怎么进行分布式事务控制的
seata是怎么进行分布式事务控制的
|
11月前
|
存储 Java 关系型数据库
在Spring Boot中整合Seata框架实现分布式事务
可以在 Spring Boot 中成功整合 Seata 框架,实现分布式事务的管理和处理。在实际应用中,还需要根据具体的业务需求和技术架构进行进一步的优化和调整。同时,要注意处理各种可能出现的问题,以保障分布式事务的顺利执行。
758 53
|
9月前
|
Java 关系型数据库 数据库
微服务SpringCloud分布式事务之Seata
SpringCloud+SpringCloudAlibaba的Seata实现分布式事务,步骤超详细,附带视频教程
605 1
|
存储 关系型数据库 MySQL
基于Seata实现分布式事务
通过以上步骤,你可以使用 Seata 实现分布式事务,确保在微服务架构中的事务一致性。Seata 支持多种语言和框架,能够满足不同业务场景的需求。欢迎关注威哥爱编程,一起学习成长。
421 1
|
11月前
|
消息中间件 运维 数据库
Seata框架和其他分布式事务框架有什么区别
Seata框架和其他分布式事务框架有什么区别
207 1
|
SQL NoSQL 数据库
SpringCloud基础6——分布式事务,Seata
分布式事务、ACID原则、CAP定理、Seata、Seata的四种分布式方案:XA、AT、TCC、SAGA模式
SpringCloud基础6——分布式事务,Seata
|
关系型数据库 MySQL 数据库
SpringCloud2023中使用Seata解决分布式事务
对于分布式系统而言,需要保证分布式系统中的数据一致性,保证数据在子系统中始终保持一致,避免业务出现问题。分布式系统中对数据的操作要么一起成功,要么一起失败,必须是一个整体性的事务。Seata简化了这个使用过程。
309 2