分布式事物

一般分布式事物不能同时满足 高可用性和一致性。如果是强一致性,那可用性,就不一定,实际是在高可用性的前提下,只要满足最终一致性就可以。

分布式事物的几种解决方案

1  2阶段提交 如数据库 mysql好多都支持这个

第一阶段预提交第二阶段 提交。 所有第一阶段提交的事物的 进行投票。都通过都提交。有不通过 就都回滚

这种能保证强一致性。但是在高并发系统里,真的是渣渣, 

2 补偿

try的时候吧资源锁住。然后执行业务的事物。业务成功 资源释放。业务失败 回滚 资源石锁锁定

实现简单吧。

不能满足一致性

3.本地消息表

好多个事物配置本地的一个消息表,业务执行成功失败都发送消息,饼消息记录下来。本地进行扫描,确保消息都能成功发送。如果业务确实执行失败,那就发消息,让对方进行回滚。

实现最终一致性

消息代码和核心业务代码耦合。

4.事物流的方式。事物发生有一定的顺序

业务按a-》b->c发生。如果执行成功就都成功。如果执行失败,原路回滚。

只支持特定场景。能保证强一致性。但是在高并发系统也是渣渣。

posted @ 2018-12-17 14:49  saveworld_niub  阅读(223)  评论(1编辑  收藏  举报