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