easycar更新日记

简介: easycar更新日记

上一次介绍了新开发的一个分布式的事务框架easycar一个用go实现的分布式事务框架,这篇就当是对easycar的更新日记了。


服务注册与发现


由于easycar底层基于gRPC, 通过自定义Resolver接口还是很容易实现的。


负载均衡


客户端负载均衡,目前支持

  • round-robin
  • random
  • consistent hash
  • ip-hash
  • least-load


架构图


1668517188841.jpg


上次提到,参与的一组分布式事务可能部分操作存在先后顺序的问题。

我举了个例子,我们需要保证必须先执行account扣减余额和stock扣减库存服务成功后,才能创建订单order的服务。同时account和stock服务并不需要保证他们的执行顺序。下图


1668517204435.jpg


以这个例子,那么实际在easycar中整个流程,


成功


1668517225671.jpg


失败


1668517240986.jpg


在easycar中,client负责和easycar(TC)端交互。主要负责注册分支,触发执行分布式事务以及查看状态等。

它并不会和RM产生联系。也就是说它不会负责去请求RM的第一阶段,这是和其他平台不同的一点。

TC全程接管和更新RM状态。


分支状态


1668517265241.jpg


项目地址:


Easycar: https://github.com/wuqinqiang/easycar

Client-go: https://github.com/easycar/client-go

Examples: https://github.com/easycar/examples

相关文章
|
2月前
|
安全 JavaScript Java
若依修改,若依bug整理集合资料在那?作者亲自解决bug
若依修改,若依bug整理集合资料在那?作者亲自解决bug
|
4月前
|
JavaScript
js事件记录(如有更新请留言我去补充)
js事件记录(如有更新请留言我去补充)
|
4月前
|
编解码 前端开发
ATV和DTV(瞎乱草稿 笔记,没有条理,后续会整理)
ATV和DTV(瞎乱草稿 笔记,没有条理,后续会整理)
549 0
|
数据采集 JavaScript API
猿人学对抗赛踩坑记录
猿人学对抗赛踩坑记录
139 0
猿人学对抗赛踩坑记录
|
开发者 微服务
项目第二天内容介绍 | 学习笔记
快速学习 项目第二天内容介绍
|
对象存储 开发者 微服务
项目第二十天内容介绍 | 学习笔记
快速学习 项目第二十天内容介绍
|
前端开发 JavaScript Java
项目第三天内容介绍 | 学习笔记
快速学习 项目第三天内容介绍
|
前端开发 JavaScript Java
项目第五天内容介绍 | 学习笔记
快速学习 项目第五天内容介绍
|
前端开发 JavaScript 程序员
项目第四天内容介绍 | 学习笔记
快速学习 项目第四天内容介绍
|
JavaScript
大杂烩: 踩坑记录
大杂烩: 踩坑记录
大杂烩: 踩坑记录