这是我参与「第五届青训营 」笔记创作活动的第9天
本文主要从分布式理论的概念进行了解相关的内容,并进行记录和总结。
1.分布式概述
定义:分布式系统是计算机程序的集合,这些程序利用跨多个独立计算节点的计算资源来实现共同的目标。可以分为分布式计算、分布式存储、分布式数据库等。
对于分布式系统的优势主要为:去中心化、低成本、弹性、资源共享、可靠性高
其中遇到的挑战有:普遍的节点故障、不可靠的网络、异构的机器与硬件环境、安全
对于分布式系统,将主要分为两个视角,使用者视角和学习者视角
若从使用者视角来看,则有以下内容:
why:
1、数据爆炸,对存储和计算有大规模运用的述求
2、成本低,构建在廉价服务器之上
how:
1、分布式框架;2、成熟的分布式系统
what:
1、理清规模,负载,一致性要求等;2、明确稳定性要求,制定技术方案
若从学习者视角来看,则有以下内容:
why:
1、后端开发必备技能;2、帮助理解后台服务器之间协作的机理
How:
1、掌握分布式理论;2、了解一致性协议
what:
1、把要点深入展开,针对难点搜索互联网资料进行学习;2、将所学知识运用于实践
常见的分布式系统:分布式存储、分布式数据库、分布式计算
2.系统模型
2.1 共识和一致性
-
最终一致性:客户端A读到x=0,当客户端C正在写入时,客户端A和B可能读到0或者1.但是当C写入完成后,A和B最终能读到一致的数据。
-
线性一致性:当客户端A读到更新的版本x=1后,及时将消息同步给其他客户端,这样其他客户端立即能获取到x=1。
2.2 时间和事件顺序
happened before关系,满足如下三个条件:
-
如果a和b是在相同节点上的两个事件,a在b之前发生,则定义:a->b
-
如果事件a表示某个节点发送某条消息,b是另一个节点接受这条消息,则有a->b
-
如果有a->b且b->c,则有a->c
-
当且仅当a->b且b->a时,称两个事件为并发的。
Lamport逻辑时钟:
对于每一个节点Pi我们定义时钟Ci为一个函数,它为任意的事件a赋值编号为Ci(a)
1、如果a和b是在相同节点Pi上的两个事件,a在b之前发生,则有Ci(a)<Ci(b)
2、如果事件a表示节点Pi发送某条信息,b表示节点Pj接受这条消息,则有Ci(a)<Cj(b)
ACID理论:
事务定义:事务是数据库系统中非常重要的概念,它是数据库管理系统执行过程中的一个逻辑单元,它能够保证一个事务中的所有操作要么全部执行,要么全都不执行。
数据库事务拥有四个特性ACID,即分别为原子性、一致性、隔离性和持久性。
-
原子性:原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚。
-
一致性:一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态
-
隔离性:隔离性是当多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离
-
持久性:持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。
BASE理论:
Base理论是对CAP中一致性和可用性权衡的结果,其来源对大型互联网分布式实践的总结,是基于CAP定理逐步演化而来的,其核心思想是:
-
基本可用:假设系统,出现了不可预知的故障,但还是不能用,相比较正常的系统而言:相应时间上的损失,或功能上的损失
-
软状态:允许系统中的数据存在中间状态,并认为该状态不影响系统的整体可用性,即允许系统在多个不同节点的数据副本存在数据延时
-
最终一致性:系统能够保证在没有其他新的更新操作的情况下,数据最终一定能够达到一致的状态,因此所有客户端对系统的数据访问最终都能够获取到最新的值。
3.总结
本文主要从分布式理论的基础知识和系统模型两个方面进行介绍在分布式系统中相关的概念和理论知识,方便日后对分布式系统的理解。
4.引用
本文的主要内容来自于字节后端录播课程。