比如多个服务关注了某个资源的删除事件,在删除资源前会触发这个事件,如果任何一个服务拒绝删除,则删除失败。如果没有服务拒绝删除,则进行删除。资源删除的过程中,其他服务应该锁定自己相关业务的表(通过事务),直到删除完成或失败。
有什么微服务的协议或框架能够可靠地实现这种需求?
有什么微服务的协议或框架能够可靠地实现这种需求?
1
wd Jan 15, 2022 via iPhone
2 阶段提交... 你这是要自己实现事务...
|
2
ghostheaven OP @wd 担心自己造轮子有风险。有什么中间件、协议或者框架,可以可靠地实现这个 2 阶段提交的基本功能?包括解决超时、重试之类的问题。
|
3
ghostheaven OP @wd 原来单体应用共用一个数据库的话都很简单的,开一个大的 transaction ,其他模块可以直接 throw ,然后可以可靠的回滚。现在单体越来越大了,想要拆分,感觉这种同步事件就很不好处理了。
|
4
binux Jan 15, 2022 via Android 服务之间耦合那么重搞什么微服务。。
|
5
XCFOX Jan 15, 2022 |
6
winglight2016 Jan 15, 2022
lz 的需求是个共识系统,或者是工作流?
|
7
ghostheaven OP @binux 如果有这种需求是建议把这几个服务搞成一个单体是么?
|
8
ghostheaven OP @XCFOX 收藏了。
|
9
ghostheaven OP @XCFOX 有没有支持多语言的库,比如 PHP 和 node.js
|
10
XCFOX Jan 15, 2022 如果要支持 node.js 和 php 的话只有 dtm 了
https://github.com/dtm-labs/dtm |
11
cover Jan 16, 2022 via iPhone
不能做成子系统失败补偿,主系统等所有子系统删除完成后删除,这种解耦合的设计吗。为什么需要全局一致
|
12
ghostheaven OP @cover 也可以,不过没有两阶段提交可靠,补偿的话毕竟有一瞬间是成功了的。
|