作者: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/q6…
开源之夏我的项目当选状况请参考:
https://summer-ospp.ac.cn/#/o…
目前依然有阿里巴巴编程之夏 ASoC 和 CCF GitLink 编程夏令营可承受提案的申请,如果你是在校生满足相应的申请条件,连忙来申请吧。这里有社区资深的导师提供 1v1 的业余领导,也有丰富的奖金等你来拿。
阿里巴巴编程之夏是什么
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/seat…
我的项目二:Seata SDK 侧的 metrics 设计
在很多时候,咱们可能须要通过一些实时监控的数据来理解整个零碎在以后或者某一时刻运行的状况。Metrics 作为一款监控指标的度量类库,提供了许多工具帮忙开发者来实现各项数据的监控。此工作便是联合社区的需要,欠缺 Seata client SDK 侧的各项数据的监控。帮忙用户无效地监控执行过程并辨认可能存在的问题。
现阶段 Seata 导出的 Metrics 仅蕴含服务端相干指标,联合现有 Metrics 设计,欠缺 Seata clientSDK 侧的各项指标设计,次要指标如下:
- global begin/commit/rollback 等状态的统计
- branch registry/flush undolog/report/commit/rollback 等状态的统计
- undolog,fence 等 hook 的调用
编程语言:Java
导师:Seata Top Contributor 刘洋(734843455@qq.com)
我的项目详情:https://github.com/seata/seat…
我的项目三:Seata-Sample 重构工作
Seata-Sample 作为 Seata 入门者必经我的项目,是入门 Seata 的重要途径之一。但 Seata 社区目前日益增大,版本迭代与公布也越来越快,目前 Sample 中曾经呈现了有许多例子与理论版本脱轨的状况,而这样的状况十分不利于 Seata 后续的倒退与迭代。因而对 Seata-Sample 进行重构对整个 Seata 开源我的项目与 Seata 开源社区具备重大的意义。次要工作如下:
- 构造重构。整顿出 Sample 我的项目中无用、过期、反复或曾经无奈运行的 Sample 我的项目,并对其进行清理,社区后续不再对这类我的项目进行保护。而对于保留下来通过整顿的我的项目,咱们须要对其进行结构化的梳理,将 Sample 中的我的项目与最新版的 Seata 版本进行能力对其,帮忙新同学更好地入门 Seata。
- 官网联动。Seata-Sample 目前的我的项目能力与官网并无造成联动能力,Sample 与官网的例子是各自为战的状态。咱们心愿通过整顿的 Sample 与官网的例子造成能力对齐,帮忙新同学更好地入门 Seata。
编程语言:Java
导师:Seata Top Contributor 谭志坚 (zhijian.tzj@alibabac-inc.com)**
我的项目详情:https://github.com/seata/seat…
CCF GitLink 编程夏令营
Seata 社区往年与 CCF GitLink 开源编程夏令营携手,并筹备了 3 项精选我的项目课题,欢送同学们申请!
我的项目一:Seata-Golang TCC 模式注解反对
以后 TCC 模式须要实现 TCCService 接⼝,通过该接⼝束缚开发者实现 try、cancel、comfirm ⽅法,通过注解,能够简化该过程。实现 TCC golang 注解反对可参考:
https://github.com/MarcGrol/g…
⽤户在使⽤ 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 申请高低⽂信息的过程。能够更加⽅便⽤户使,简化开发,晋升效率。
编程语言:Golang
导师:Seata Committer 刘晓敏(985784089@qq.com)
我的项目详情:https://www.gitlink.org.cn/gl…
我的项目二: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/gl…
我的项目三: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/gl…
我的项目报名
学生可自由选择我的项目,登录官网报名申请对应我的项目即可,被选中的同学将在社区导师领导下,按计划实现开发工作,并将成绩奉献给社区。社区评估学生的完成度,主办方依据评估后果发放流动奖金给学生。这是同学们是将来毕业简历上浓墨重彩的一笔,也是迈向顶尖开发者的闪亮终点。
阿里编程之夏 ASoC:
https://asoc2022.opensource.a…
CCF GitLink 编程夏令营:
https://www.gitlink.org.cn/gl…
https://www.gitlink.org.cn/gl…
https://www.gitlink.org.cn/gl…
注意事项:所有报名必须通过零碎报名方可无效,报名前请浏览学生指南。
为了不便同学们的交换,有动向参加 Seata 社区开源之夏流动的同学请应用钉钉扫码 SummerCode 暑期交换群。
期待同学们的退出,让咱们相约相遇在这个夏天!
点击此处,立刻查看!