Python微信订餐小程序课程视频
https://edu.csdn.net/course/detail/36074
Python实战量化交易理财系统
https://edu.csdn.net/course/detail/35475
分布式协议
分布式理论概念
1. 分布式数据一致性
分布式数据一致性,指的是数据在多个副本中存储时,各副本中的数据是一致的。
在分布式系统中,数据往往有多个副本。多个副本就需要保证数据的一致性。这就带来了同步的问题,因为网络延迟等因素,我们几乎没有办法保证可以同时更新所有机器中的所有数据,一定会有一刻会出现数据不一致。
那么实际应用中,我们如何既保证数据一致性,同时又不影响系统运行的性能呢?于是一致性级别的概念由此诞生。
2. 一致性级别
- 强一致性
它要求系统写入什么,读出来的也会是什么,用户体验好,但是实现起来对系统的性能影响比较大
- 弱一致性
这种级别,不承诺立即可以读到写入的值,也不承诺多久之后数据能够达到一致,但会尽可能的保证到某个时间节点后,数据能够达到一致状态。
- 最终一致性
最终一致性也是弱一致性的一种,它无法保证数据更新后,所有后续的访问能看到最新数据,而是需要一个时间,这个时间之后可以保证一致。
如微信的2小时到账:
3. CAP理论
CAP定理,它指出一个分布式系统不可能同时满足以下三点:
- 一致性 (Consistency)所有节点访问时都是同一份最新的数据副本
- 可用性(Availability)每次请求都能获取到非异常的响应,但不保证数据最新
- 分区容错性(Partition tolerance)分布式系统遇到任何网络分区故障的时候,仍然能够对外提供服务,除非整个网络环境都发生了故障
4. BASE理论
BASE全称是:Basically Available(基本可用),Soft state(软状态)和Eventually consistent(最终一致性)三个短语的缩写。
Base理论的核心思想是:既然无法做强一致性,那么每个应用可以根据自身业务特定,采用适当的方式使系统达到最终一致性。
- 基本可用:出现了不可预知的故障,但还是能用。只是相对正常系统来说可能响应变慢,部分功能缺失。
- 软状态:指系统的数据存在中间状态,并认为该状态不会影响系统的整体可用性。即允许不同副本的数据存在延迟
- 最终一致性:上面说的软状态,不能一直是软状态,必须要有时间期限。在期限过后,应当保证所有副本数据一致
分布式一致性协议
1. 两阶段提交
两阶段提交协议,简称2PC(2 Prepare Commit),是比较常用的解决分布式事务问题的方式,要么所有参与进程提交事务,要么都取消事务。