随着大型网站的各种高并发访问、海量数据处理等场景越来越多,如何实现网站的高可用、易伸缩、可扩展、安全等目标就显得越来越重要。为了解决这样一系列问题,大型网站的架构也在不断发展。提高大型网站的高可用架构,不得不提的就是分布式。

一、集中式系统

在学习分布式之前,先了解一下与之相对应的集中式系统是什么样的。
集中式系统用一句话概括就是:一个主机带多个终端。终端没有数据处理能力,仅负责数据的录入和输出。而运算、存储等全部在主机上进行。现在的银行系统,大部分都是这种集中式的系统,此外,在大型企业、科研单位、军队、政府等也有分布。集中式系统,主要流行于上个世纪。
集中式系统的最大的特点就是部署结构非常简单,底层一般采用从IBM、HP等厂商购买到的昂贵的大型主机。因此无需考虑如何对服务进行多节点的部署,也就不用考虑各节点之间的分布式协作问题。但是,由于采用单机部署。很可能带来系统大而复杂、难于维护、发生单点故障(单个点发生故障的时候会波及到整个系统或者网络,从而导致整个系统或者网络的瘫痪)、扩展性差等问题。

二、分布式系统(distributed system)

在《分布式系统概念与设计》一书中,对分布式系统做了如下定义:

分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统

简单来说就是一群独立计算机集合共同对外提供服务,但是对于系统的用户来说,就像是一台计算机在提供服务一样。分布式意味着可以采用更多的普通计算机(相对于昂贵的大型机)组成分布式集群对外提供服务。计算机越多,CPU、内存、存储资源等也就越多,能够处理的并发访问量也就越大。
从分布式系统的概念中我们知道,各个主机之间通信和协调主要通过网络进行,所以,分布式系统中的计算机在空间上几乎没有任何限制,这些计算机可能被放在不同的机柜上,也可能被部署在不同的机房中,还可能在不同的城市中,对于大型的网站甚至可能分布在不同的国家和地区。

在今天这篇文章中,我将带你了解分布式的起源,是如何从单台计算机发展到分布式的,进而帮助你深入理解什么是分布式。为了方便你更好地理解这个演进过程,我将不考虑多核、多处理器的情况,假定每台计算机都是单核、单处理器的。

说明:完整的《分布式核心原理解析》学习文档篇幅较长,共有330页,这里限于篇幅,故只展示一部分的文档

前言

一,分布式何而起

分布式起源

  1. 单兵模式:单机模式
  2. 游击队模式:数据并行或数据分布式
  3. 集团军模式:任务并行或任务分布式
  4. 分布式是什么?
  5. 总结

二,分布式系统的指标

分布式系统的指标

  1. 性能(Per formance)
  2. 资源占用(Resource Usage)
  3. 可用性( Availability)
  4. 可扩展性(Sealabi1ity)
  5. 不同场景下分布式系统的指标
  6. 总结与思考

中央集成与分布式融合架构的优缺点_分布式

三,分布式协调与同步

分布式互斥

  1. 什么是分布式互斥?
  2. 霸道总裁:集中式算法
  3. 民主协商:分布式算法
  4. 轮值CE0:令牌环算法
  5. 总结

分布式选举

  1. 为什么要有分布式选举?

分布式选举的算法

  1. 长者为大: Bully 算法
  2. 民主投票: Raft 算法
  3. 具有优先级的民主投票: ZAB算法
  4. 三种选举算法的对比分析
  5. 总结

分布式共识

  1. 什么是分布式共识?

分布式共识方法

  1. PoW
  2. PoS
  3. DPoS
  4. 三种分布式共识算法对比分析

分布式事务

  1. 什么是分布式事务?
  2. 如何实现分布式事务?
  3. 基于XA协议的二阶段提交方法

三阶段提交方法

  1. 第一,CanCommit阶段
  2. 第二,FreCommit阶段
  3. 第三,DoCommit阶段
  4. 基于分布式消息的最终一致性方案
  5. 三种实现方式对比

分布式锁

  1. 为什么要使用分布锁?
  2. 分布式锁的三种实现方法及对比
  3. 基于缓存实现分布式锁
  4. 基于ZooKeeper实现分布式锁
  5. 三种实现方式对比

中央集成与分布式融合架构的优缺点_后端_02

中央集成与分布式融合架构的优缺点_后端_03

四,分布式技术是如何引爆人工智能的?

  1. 什么是人工智能?
  2. 数据处理
  3. 分布式模型训练
  4. 数据分布式训练
  5. 模型分布式训练
  6. 混合模型训练

分布式资源管理与负载调度

分布式体系结构一- 集中式结构

  1. 什么是集中式结构?

经典集中式结构

  1. Google Borg
  2. Kubernetes
  3. Mesos
  4. 分析对比

分布式体系结构一一非集中式结构

  1. 什么是非集中式结构?
  2. Akka集群
  3. Redis集群
  4. Cassandr s集群
  5. 对比分析

分布式调度架构一- -单体调度

  1. 什么是单体调度?
  2. 单体调度设计
  3. Bor e调度设计
  4. Bor g调度算法

分布式调度架构一-两层调度

  1. 什么是两层调度?
  2. 两层调度设计
  3. 资源分配算法

分布式调度架构一一共享状态调度

  1. 什么是共享状态调度?
  2. 共享状态调度设计
  3. 0mega调度架构
  4. 0mega共享调度工作原理

分布式事务与分布式锁相关问题

  1. 分布式事务的相关问题
  2. 分布式锁的相关问题

中央集成与分布式融合架构的优缺点_java_04

中央集成与分布式融合架构的优缺点_java_05

五,分布式计算技术

分布式计算模式- -MR

  1. 什么是分而治之?
  2. 分治法的原理
  3. 抽象模型
  4. MapReduce工作原理
  5. MapReduc e实践应用

分布式计算模式--Stream

  1. 什么是Stream?
  2. Stream工作原理
  3. Storm的工作原理

分布式计算模式- - - Aector

  1. 什么是Actor?
  2. Actor计算模式
  3. Actor工作原理
  4. Actor关键特征
  5. Actor模型的应用

分布式计算模式- - 流水线

  1. 什么是流水线模式?
  2. 流水线计算模式
  3. 流水线计算模式的原理
  4. 实践:构建机器学习流水线

中央集成与分布式融合架构的优缺点_学习_06

中央集成与分布式融合架构的优缺点_java_07

六,分布式通信技术

分布式通信- - 远程调用

  1. 什么是远程调用?
  2. 远程调用的原理及应用
  3. RPC的原理及应用
  4. RMI的原理及应用
  5. RPC与MI对比分析

分布式通信一-发布订阅

  1. 什么是发布订阅?
  2. 发布订阅的原理及应用
  3. 发布订阅的基本工作原理
  4. Kafka发布订阅原理及工作机制
  5. 发布订阅实践应用

分布式通信- -消息队列

  1. 什么是消息队列?
  2. 消息队列的原理
  3. 消息队列工作原理
  4. Rocke tMQ消息队列原理及工作机制

分布式体系架构与分布式计算相关问题

  1. 分布式体系架构相关问题
  2. 分布计算技术相关问题

中央集成与分布式融合架构的优缺点_中央集成与分布式融合架构的优缺点_08

中央集成与分布式融合架构的优缺点_中央集成与分布式融合架构的优缺点_09

七,分布式数据存储

CAP理论

  1. 什么是CAP?

CAP选择策略及应用

  1. 保CA弃P
  2. 保CP弃A
  3. 保aP弃C

布式数据存储系统一一三要素

  1. 什么是分布式数据存储系统?

分布式数据存储系统三要素

  1. 生产和消费数据
  2. 确定数据位置
  3. 存储数据

数据分布方式一一哈希与一 致性哈希

  1. 数据分布设计原则
  2. 数据分布方法
  3. 哈希

分布式数据复制技术

  1. 什么是数据复制技术?
  2. 数据复制技术原理及应用
  3. 同步复制技术原理及应用
  4. 异步复制技术原理及应用
  5. 半同步复制技术原理及应用
  6. 三种数据复制技术对比

分布式数据一 缓存技术

  1. 什么是分布式缓存?
  2. 分布式缓存原理
  3. Redi s分布缓存原理
  4. Memcache d分布式缓存原理

中央集成与分布式融合架构的优缺点_学习_10

中央集成与分布式融合架构的优缺点_中央集成与分布式融合架构的优缺点_11

八,分布式高可靠

分布式高可靠一-负载均衡

  1. 什么是负载均衡?
  2. 服务请求的负载均衡方法
  3. 轮询策略
  4. 随机策略
  5. 哈希和一致性哈希策略

分布式高可靠一- 流量控制

  1. 什么是流量控制?

分布式系统流量控制策略

  1. 漏桶策略
  2. 令牌桶策略
  3. 两种策略对比
  4. Sentine1流量控制工作原理

分布式高可用- -故障隔离

  1. 分布式高可用- -故障隔离
  2. 分布式故障隔离策略
  3. 线程级隔离
  4. 进程级隔离
  5. 资源隔离
  6. 故障隔离策略综合对比

分布式故障基础知识

  1. 故障类型
  2. 故障检测
  3. 故障恢复
  4. 分布式故障检测原理
  5. 故障恢复策略

如何判断并解决网络分区问题?

  1. 什么是网络分区?
  2. 如何判断是否发生了网络分区?
  3. 网络分区最微妙的地方在哪里?
  4. 网络分区出现概率较高的场景是什么?
  5. 网络分区有哪些常见的处理方法?

中央集成与分布式融合架构的优缺点_中央集成与分布式融合架构的优缺点_12

中央集成与分布式融合架构的优缺点_后端_13

当下微服务架构越来越流行,分布式的处理成为项目中一个绕不过去的坎,在中高级开发的面试中,分布式也成了必选项,很多人在项目中忙于业务实现,忽略了或者没有机会对分布式进行了解。