文章目录
-
- 一、集中式与分布式
-
- 1.1 集中式系统
- 1.2 分布式系统
- 二 分布式理论
-
- 2.1 CAP 理论
-
- 2.1.1 CAP 简介
- 2.1.2 CAP 论证
- 2.2 BASE 理论
-
- 2.2.1 Basically Available
- 2.2.2 Soft State
- 2.2.3 Eventually Consistent
- 三、分布式常见问题
- 参考文章
一、集中式与分布式 1.1 集中式系统
由一台或多台主计算机组成中心节点,数据集中存储于这个中心节点中,并且整个系统的所有业务单元都集中部署在这个中心节点上,系统的所有功能均由其集中处理
1.2 分布式系统
分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。分布式系统的各个主机之间的通信和协调主要通过网络进行,所以分布式系统中的计算机在地域空间上几乎没有任何限制。分布式系统的特点有:
- 分布性
分布式系统中的多台计算机之间在空间位置上可以随意分布,同时,机器的分布情况也会随时变动
- 对等性
分布式系统中的计算机没有主/从之分,即没有控制整个系统的主机,也没有被控制的从机,组成分布式系统的所有计算机节点都是对等的
- 并发性
在一个计算机网络中,程序运行过程的并发性操作是非常常见的行为。例如同一个分布式系统中的多个节点,可能会并发地操作一些共享的资源
- 缺乏全局时钟
在分布式系统中,很难定义两个事件究竟谁先谁后,原因就是因为分布式系统缺乏一个全局的时钟序列控制
- 故障总会发生
分布式系统通过网络进行通信协调,因网络本身的不可靠性,导致分布式系统发生故障的情况不可避免
文章图片
二 分布式理论 2.1 CAP 理论
2.1.1 CAP 简介 CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性)这三个基本需求,最多只能同时满足其中的2个
选项 | 描述 |
---|---|
Consistency | 指数据在多个副本之间能够保持一致的特性(严格的一致性) |
Availability | 指系统提供的服务必须一直处于可用的状态,每次请求都能获取到非错的响应(不保证获取的数据为最新数据) |
Partition tolerance | 分布式系统在遇到任何网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务,除非整个网络环境都发生了故障 |
什么是分区?2.1.2 CAP 论证 如图所示,是我们证明 CAP 的基本场景,网络中有两个节点 N1和 N2,可以简单的理解 N1和 N2 分别是两台计算机,他们之间网络可以连通,N1中有一个应用程序A,和一个数据库 V,N2 也有一个应用程序 B 和一个数据库 V。现在,A 和 B 是分布式系统的两个部分,V 是分布式系统的数据存储的两个子数据库
在分布式系统中,不同的节点分布在不同的子网络中,由于一些特殊的原因,这些子节点之间出现了网络不通的状态,但他们的内部子网络是正常的。从而导致了整个系统的环境被切分成了若干个孤立的区域,这就是分区
文章图片
- 在满足一致性的时候,N1 和 N2 中的数据是一样的,V0 = V0
- 在满足可用性的时候,用户不管是请求 N1 或者 N2,都会得到立即响应
- 在满足分区容错性的情况下,N1 和 N2 有任何一方宕机,或者网络不通的时候,都不会影响 N1 和 N2 彼此之间的正常运作
文章图片
此时根据 CAP 原则,系统正常运转时的 CAP 状态为
- 一致性:节点 N1 和 N2 的数据库状态 V1 = V1
- 可用性:节点 N1 和 N2 均可对外部请求进行正常响应
- 分区容错性:节点 N1 和 节点 N2 的网络互通
文章图片
这里有两种选择:
- 满足 AP:牺牲数据一致性,保证可用性。节点 N2 将旧数据库状态 V0 的数据响应给用户
- 满足 CP:牺牲可用性,保证数据一致性。路由到节点 N2 的请求阻塞等待,直到网络连接恢复,数据更新操作 modify 完成之后,再给用户响应最新的数据库状态为 V1 的数据
2.2 BASE 理论
【分布式|分布式理论总览】BASE 理论是 Basically Available(基本可用),Soft State(软状态) 和 Eventually Consistent(最终一致性)三个短语的缩写,其核心思想是既然无法做到强一致性(Strong consistency),但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性(Eventual consistency)
2.2.1 Basically Available 假设系统,出现了不可预知的故障,但还是能用,相比较正常的系统而言:
- 响应时间上的损失:正常情况下的搜索引擎 0.5 秒即返回给用户结果,而基本可用的搜索引擎可以在 2 秒左右返回结果
- 功能上的损失:在一个电商网站上,正常情况下,用户可以顺利完成每一笔订单。但是到了大促期间,为了保护购物系统的稳定性,部分消费者可能会被引导到一个降级页面
2.2.3 Eventually Consistent 上面说软状态,不可能一直是软状态,必须有个时间期限。在期限过后,应当保证所有副本的数据一致,从而达到数据的最终一致性。这个时间期限取决于网络延时、系统负载、数据复制方案设计等等因素
三、分布式常见问题
- 分布式事务
- 分布式锁
- 分布式 session
- 分布式 ID
- 负载均衡
- 分布式缓存
推荐阅读
- 编程习题集|JAVA-jmu-Java-03面向对象基础-04-形状-继承
- #|基于改进的蚂蚁群算法求解最短路径问题、二次分配问题、背包问题【Matlab&Python代码实现】
- Java|大厂面经分享(双非五面入职字节,他都做了哪些准备())
- 面试文|【面经分享】两年经验拿到PingCAP Offer
- 设计模式|GO 常用设计模式
- 大厂钟爱的全链路压测有什么意义(四种压测方案详细对比分析)
- java|Java 修饰符 private、default、protected、public 的应用实例 (属性)
- java|java多线程-Lock对象的使用