二,分布式理论
2.1,数据一致性
2.1.1,什么是数据一致性
数据在多副本中保存,各副本数据都是一样的
2.1.2,副本一致性
分布式系统中,数据往往有多个副本,则带来了数据同步的问题,因为延迟等因素,几乎无法保证同时更新所有副本数据,
在性能和一致性之间,需要权衡->分布式一致性协议
2.1.3,一致性分类
强一致性->系统写什么,读出来就是什么,但是对系统性能影响大,也很难实现
弱一致性->写入成功后,不一定立刻且不一定多久可以读到写入的值,但尽可能在某个时间级别后让数据达到一致性状态
最终一致性->也是弱一致性的一种,保证一段时间后,节点数据达到一致性状态,
在一致性状态前的时间片段称为[不一致窗口]
最终一致性又有多个变种->因果一致性||读己所写一致性||会话一致性||单调/写读一致性||
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3988WrLg-1665758557372)(img1.png)]
2.2,CAP定理
2.2.1,CAP定理介绍
又称布鲁尔定理,它指出,对一个分布式系统,不可能同时满足以下三点:
1.一致性
指的是强一致性,一旦客户端写入数据,则其他节点访问的任何一台服务器节点得到的都是最新的数据
2.可用性
系统中的非故障节点收到每个请求都有响应,不允许服务器忽略请求
3.分区容错性
允许网络丢失任意节点间的消息丢失(不同步)
2.2.2,CAP如何选择
- CA系统,关注一致性和可用性,不能容忍网络问题或节点错误,出现这种错误,就会拒绝写请求,变成只读
- CP系统,关注一致性和分区容错性,保证大多数节点数据一致,少数节点会在没有同步的时候处于不可用状态
- AP系统,关注可用性和分区容错性,系统不能达成一致,需要给出数据冲突,给出数据冲突就需要维护数据版本
互联网电商更多是AP,而银行必须保证C
2.3,BASE理论
BASE->基本可用+软状态+最终一致性;是一致性和可用性的权衡,基于CAP定理演化
核心思想: 无法做到强一致性,则根据不同应用的特点采用合适的方式达到最终一致性
2.3.1,基本可用
出现不可预知的故障,但还是能用,相比一般系统,可能出现:
- 响应时间的损失: 正常系统在0.5内返回结果,基本可用则在1秒内返回
- 功能上的损失: 正常购物可以顺利交易,但是活动流量大的时候,为了保证稳定,部分消费者可能被引导到降级页面
2.3.2,软状态
硬状态要求多个节点数据副本一致,软状态则允许系统中的数据存在中间状态,允许不同节点的副本数据存在数据延时
2.3.3,最终一致性
软状态在一定时间内达到副本数据一致