0%

分布式系统基础学习


分布式系统概述

分布式系统存在的意义?:通常来说,当单个无法满足日益增长的计算和存储问题时,且硬件成本的提升,应用无法得到提升的时候,就应该考虑分布式系统

什么是分布式系统?:通常来说,当单个无法满足日益增长的计算和存储问题时,且硬件成本的提升,应用无法得到提升的时候,就应该考虑分布式系统

分布式拓扑结构?:有四种,分别是:

中心化拓扑(传统中心化结构):

特点以及概念?:通过中心索引服务器连接各主机,实际资源在中心化服务器当中

分布式非机构化P2P网络拓扑:

特点以及概念?:
    1.结构中的某些节点没有依照预先定义的拓扑(即没有确定拓扑结构支持,因此无法保证资源发现的效率);
    2.采用了重叠网络(就是在现有的网络体系结构上加多一层虚拟网络并将虚拟网络的每个节点与实际网络中的一些节点建立一个连接,从而实现实际网络当中的联通效果);
    3.相比中心拓扑没有中心化服务器的存在,每台机器在网络中是真正的对等关系。
    通信通过节点相互传播

全分布式结构化P2P网络拓扑:

特点以及概念?:
    1.采用分布式哈希表DHT((Distributed Hash Table)技术来组织网络中的节点(因此也叫DHT网络)
    2.采用DHT结构的P2P网络能够自适应节点的动态加入/退出,并且由于重叠(也采用了重叠网络的思想)采用了确定性拓扑,因此只要节点存在于网络中,DHT总能找到它(相比于全分布式非结构化网络发现资源的准确性得到提升)

半分布式拓扑(混合拓扑结构) 四种基本的网路拓扑结构:

特点以及概念?:
    1.选择性能较高的节点做为超级节点,各个超级节点上存储了系统中其他部分的信息;     
    2.信息通过各个超级节点间进行传播,然后超级节点向普通节点进行再次传播

拓展?:不同的区块链采用了不同的分布式系统(比如联盟链采用中心化结构拓扑)

分布式系统定义?:分布式系统包括分布式存储和分布式计算(计算与存储密切相关,计算来自实时的数据或者数据流或者存储的数据,而计算出的数据也需要存储的),

由于分布式系统计算机多个节点出现网路故障影响而网络通信是呈指数级增长的,而分布式系统需要持续对外保持服务,即保持较高的容错率–>引出分片

数据分片?:采用一些方式将数据集划分为更小的不同的独立数据集:

数据复制?:数据复制将数据集划分为更小的不同的独立数据集(提高了容错性):

目前有三种数据复制变更算法:
主从复制;
多主节点复制;
无主节点复制;

分布式系统的优势(了解):

资源共享:众多节点通过彼此互联,数据库可共享,共享远程文件等
负载均衡:当单个计算机节点出现故障或负担过重,其他节点可以承担负担过重的节点
可靠性高、灵活度高

缺点(了解):

系统复杂
维护弱于单机系统
管理成本高

分布式系统面临的挑战?: 普通节点故障;不可靠的网络;异构的机器和网络等

分布式一致性和两个重要理论

分布式一致性?:分布式一致性指多个节点对某一变量的取值达成一致,一旦达成一致,则变量的取值即被确定

事务一致性
数据一致性
类型:
强一致性:数据更新操作完成后,所有用户或者进程查询都是最近一次成功更新后的结构(需要等待,所以保证强一致性会影响高可用性)
弱一致性:数据更新后可能只能访问部分或者访问不到
最终一致性:在一段时间内数据最终达到一致
因果一致性:事务执行的前后逻辑保持一致

FLP不可能原理:在网络可靠,但允许节点失效(即便只有一个)的最小化异步模型系统中,不可能存在一个可以解决一致性问题的完美确定性共识算法

CAP原理:分布式计算系统不可能同时确保以下三个特性:一致性,可用性和分区容忍性:

分布式系统中两个原则与多阶段提交(事务可以理解为操作逻辑)

ACID原则(ACID是关系型数据库的事务需要遵循的原则):原子性 一致性 隔离性 持久性:

BASE理论

需要先理解网络分区(网络分区时分布式系统的常见异常):网络分区就是各个子网络内部网络正常,但是网络通信出现异常导致子网路处于孤立状态–>会导致数据不一致:
BASE理论是Basically Avaliable(基本可用),Soft State(软状态)和Eventually Consistent(最终一致性)

多阶段提交:(前面提到一个完整的理性化的分布式系统是不可能存在的,但是我们依旧可以改进)

将节点分为协调者和事务参与者
并将事务划分为
    第一阶段:尝试预提交阶段

    第二阶段:预提交

    第三阶段:正式提交

区块链共识算法的演进

共识算法概述:区块链系统各分布式节点对事务或者状态的验证、记录、修改等行为达成一致确认的方法,有以下三个特征:

演进:

1958年:首次以一致性问题为研究对象
1982年:拜占庭容错类算法(少数服从多数原则)
1989年:提出Paxos算法开创非拜占庭容错算法类(少数服从多数原则)
2008:POW共识
2008年之后:POS DPOS RAFT等

从根据如何选取记账节点的角度,共识算法可分类为:

1.证明类机制
2.选举类机制
3.混合类机制

证明类共识算法概述

概述:被称为“Proof of X”类算法,即节点在每一轮共识过程中必须证明自己具有某种特定的能力,以获得记账权和奖励

POW机制:按劳分配的原则,将算法作为记账的主要指标

POS机制:针对工作量机制存在的不足而设计出来的一种改进型共识机制;基本原理:要求用户证明自己拥有一定数量的数字货币的所有权–即“权益”

POS币龄:持有货币的时间
POS利息:即在发现区块后根据一定的利率给付数字货币

选举类共识概述

概述:选举类共识是指节点在每一轮共识过程中通过“投票选举”的方式选出当前轮次的记账节点

Paxos算法机制:一种选举类算法,采用了少数服从多数的原则

使用Paxos算法的节点被分为三种不同的角色:
   提议者-->提出提案
   决策者-->参与决策,回应提案
   最终决策学习者-->不参与决策,接受议案
具体过程这里不过多说明

Raft算法机制:Raft和Paxos都是为了实现一致性目标,并且Raft算法是基于Paxos算法的

https://zhuanlan.zhihu.com/p/32052223

PBFT(也是选举类共识算法)与蜜罐共识算法

PBFT:https://zhuanlan.zhihu.com/p/53897982

蜜罐算法

Avalanche和Algorand算法

Avalanche(雪崩算法)

Algorand算法:https://cloud.tencent.com/developer/news/236363

坚持原创技术分享,您的支持将鼓励我继续创作.