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

相关文章
|
8月前
|
JavaScript
js事件记录(如有更新请留言我去补充)
js事件记录(如有更新请留言我去补充)
|
8月前
|
缓存
AutoJS4.1.0实战教程 ---火火视频极速版签到、清理缓存和自动评论
AutoJS4.1.0实战教程 ---火火视频极速版签到、清理缓存和自动评论
68 0
|
SQL XML 前端开发
怎么做社区网站的首页帖子展示?
要进行首页帖子展示,就必须学会分页,而在创建分页之前,我们得先认识到,为什么要进行分页?一个大型网站的数据库将容纳大量的数据,而我们进行展示某部分数据时,为了保证浏览速度,不可能一次性地将所有数据进行传输,更何况,不是全部传输过去的数据第一时间就能有效利用,所以,只要每次将需要的数据传输过去就好,即使是后续需要的数据,那也是后面时间点需要完成的工作,为了做到这一点,必须对一个数据整体进行划分,合理地传输并展示给用户,其中,划分出来的每一部分可被称为一页数据,完成划分工作的就是分页操作。而分页操作在 spingboot 及 mybatis 的环境下,可被分为以下几种分页情况:
149 0
|
索引 Cloud Native
【刷题日记】1282. 用户分组
【刷题日记】1282. 用户分组
|
存储 小程序 数据库
微信小程序云开发日记类日记记录分享动态
微信小程序云开发日记类日记记录分享动态
259 1
微信小程序云开发日记类日记记录分享动态
|
数据采集 Java fastjson
【掘金自动签到】有手就行的自动化签到工具
掘金社区签到拿矿石能兑换礼品,每天签到又怕遗忘,搞个脚本每天自动签到岂不美哉~
881 3
【掘金自动签到】有手就行的自动化签到工具
|
存储 SQL 安全
记录一次代审实战,熊海CMS代审日记
1.拿到源码并进行白盒测试 白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。 白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,即清楚盒子内部的东西以及里面是如何运作的。 "白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。 "白盒"法是穷举路径测试。
1930 0
记录一次代审实战,熊海CMS代审日记
|
开发者 微服务
项目第二天内容介绍 | 学习笔记
快速学习 项目第二天内容介绍
|
中间件
Axure实战05:创建一个fakeUpdate假装更新网站
Axure实战05:创建一个fakeUpdate假装更新网站
625 0
Axure实战05:创建一个fakeUpdate假装更新网站
|
数据库 开发者
【Discuz】主题浏览量实现原理和不更新的解决方案
【Discuz】主题浏览量实现原理和不更新的解决方案
283 0
【Discuz】主题浏览量实现原理和不更新的解决方案