分布式事务 消息中间件

https://blog.csdn.net/u010425776/article/details/79516298

http://www.grahamlea.com/2016/08/distributed-transactions-microservices-icebergs/

 

https://www.cnblogs.com/xybaby/p/6871764.html

在13年的文章中《better-explaining-cap-theorem》,作者指出“it is really just A vs C!”,因为

(1)可用性一般是在不同的机器之间通过数据的复制来实现

(2)一致性需要在允许读操作之间同时更新几个节点

(3)temporary partion,即几点之间的通信延迟是可能发生了,此时就需要在A 和 C之间权衡。但只有在发生分区的时候才需要考虑权衡。

在分布式系统中,网络分区一定会发生,因此“it is really just A vs C!”

 

 

A (可用性):非故障的节点在合理的时间内返回合理的响应(不是错误和超时的响应)。可用性的两个关键一个是合理的时间,一个是合理的响应。

合理的时间指的是请求不能无限被阻塞,应该在合理的时间给出返回。合理的响应指的是系统应该明确返回结果并且结果是正确的,这里的正确指的是比如应该返回 50,而不是返回 40。

P (分区容错性):当出现网络分区后,系统能够继续工作。打个比方,这里集群有多台机器,有台机器网络出现了问题,但是这个集群仍然可以正常工作。

如果我们选择了 CA 而放弃了 P,那么当发生分区现象时,为了保证一致性,这个时候必须拒绝请求,但是 A 又不允许,所以分布式系统理论上不可能选择 CA 架构,只能选择 CP 或者 AP 架构。

对于 CP 来说,放弃可用性,追求一致性和分区容错性,我们的 ZooKeeper 其实就是追求的强一致。

对于 AP 来说,放弃一致性(这里说的一致性是强一致性),追求分区容错性和可用性,这是很多分布式系统设计时的选择,后面的 BASE 也是根据 AP 来扩展。

本地消息表

本地消息表这个方案最初是 eBay 提出的,eBay 的完整方案 https://queue.acm.org/detail.cfm?id=1394128。

https://www.jianshu.com/p/16b1baf015e8

 

实现最终事务一致要求:
预留资源成功理论上要求正式执行成功,如果执行失败会进行重试,要求业务执行方法实现幂等,每次执行的结果不变;
**优点:**开发简单,mq性能较高
**缺点:**业务耦合,因为频繁轮询数据库,增大了数据库负载,此时数据库的性能瓶颈尤为明显,不适合大高并发场景,中等的规模还是可以满足的

https://blog.csdn.net/weixin_40533111/article/details/85069536

http://www.grahamlea.com/2016/08/distributed-transactions-microservices-icebergs/

Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

You are commenting using your WordPress.com account. Log Out /  更改 )

Google+ photo

You are commenting using your Google+ account. Log Out /  更改 )

Twitter picture

You are commenting using your Twitter account. Log Out /  更改 )

Facebook photo

You are commenting using your Facebook account. Log Out /  更改 )

Connecting to %s