「字节跳动第五届青训营」分布式理论

分布式理论 - 现代架构基石

分布式系统是计算机程序的集合,这些程序利用跨多个独立计算节 点的计算资源来实现共同的目标。可以分为分布式计算、分布式存 储、分布式数据库等。

优点:

  • 去中心化

  • 成本低

  • 弹性

  • 资源共享

  • 可靠性高
    挑战:

  • 普遍的节点故障

  • 不可靠的网络

  • 异构的机器与硬件环境

  • 安全

拜占庭将军问题

CAP理论

什么是分区容错性:
一个分布式系统里面,节点组成的网络本来应该是连通的。然而可能因为一些故障,使得有些节点之间不连通了,整个网络就分成了几块区域。数据就散布在了这些不连通的区域中。这就叫分区。
当你一个数据项只在一个节点中保存,那么分区出现后,和这个节点不连通的部分就访问不到这个数据了。这时分区就是无法容忍的。
提高分区容忍性的办法就是一个数据项复制到多个节点上,那么出现分区之后,这一数据项就可能分布到各个区里。容忍性就提高了。
然而,要把数据复制到多个节点,就会带来一致性的问题,就是多个节点上面的数据可能是不一致的。要保证一致,每次写操作就都要等待全部节点写成功,而这等待又会带来可用性的问题。
总的来说就是,数据存在的节点越多,分区容忍性越高,但要复制更新的数据就越多,一致性就越难保证。为了保证一致性,更新所有节点数据所需要的时间就越长,可用性就会降低。

CAP这里的c应该是线性一致性,看重的是操作执行的顺序,比如b操作在a操作之后成功执行,那么b操作看到的应该是a操作已经完成结果或者更新后的结果,这里的一致性跟ACID的C是不一样的

强一致性与弱一致性

其实只有两类数据一致性,强一致性与弱一致性。强一致性也叫做线性一致性,除此以外,所有其他的一致性都是弱一致性的特殊情况。所谓强一致性,即复制是同步的,弱一致性,即复制是异步的。
主库需要等待从库的确认,确保从库已经收到写入操作,那么复制是同步的,即强一致性。如果主库写入成功后,不等待从库的响应,直接返回“更新成功”,则复制是异步的,即弱一致性。
相关好文

ACID 理论


ACID的C指的是从一个一致状态到另一个一致状态 eg:转账的过程 转账前后总数不变。从一个一致状态到另一个一致状态

BASE理论

AP和CP的权衡 ,在AP的基础上尽量保证CP
BASE理论是由eBay工程师提出,是对可用性和一致性的权衡。BASE是由 Basically Available(基本可用),Soft state(软状态),和 Eventually consistent(最终一致性)三个短语的缩写。

MVCC

分布式事务
MVCC:多版本并发控制的方法。维持一个数据的多个版本使读写操作没有冲突。所以既不会阻塞写,也不阻塞读。提高并发性能的同时也解决了脏读的问题。
悲观锁和乐观锁

  • 悲观锁:操作数据时直接把数据锁住,直到操作完成后才会释放锁;上锁期间其他人不能修改数据

  • 乐观锁:不会上锁,只是在执行更新时判断别人是否修改数据,只有冲突时才放弃操作
    版本的选取:使用物理时钟或逻辑时钟

  • 物理时钟:提供TrueTime API,有Master节点维持一个绝对时间,保证各个服务器之间时钟误差控制在ϵ内,通常ϵ<7ms。

  • 逻辑时钟:中心化授时的方式–时间戳预言机(TSO),好处是无需硬件的支持

共识协议

Quorum NWR模型

分布式系统中各类型数据的一致性要求不尽相同,而Quorum NWR算法则为我们提供了一种在强一致性与最终一致性之间可以进行动态变化的思路

N:在分布式存储系统中,有多少份备份数据W:代表一次成功的更新操作要求至少有w份数据写入成功R: 代表一次成功的读数据操作要求至少有R份数据成功读取为了保证强一致性,需要保证 W+R>N(读加写 大于 总数)

它是保证读取到最新值的必要条件不是充分条件
作者:青训营官方账号 链接:https://juejin.cn/post/7193363381804335161/ 来源:稀土掘金

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值