随着大型网站的各种高并发访问、海量数据处理等场景越来越多,如何实现网站的高可用、易伸缩、可扩展、安全等目标就显得越来越重要。为了解决这样一系列问题,大型网站的架构也在不断发展。提高大型网站的高可用架构,不得不提的就是分布式。
一、集中式系统
在学习分布式之前,先了解一下与之相对应的集中式系统是什么样的。
集中式系统用一句话概括就是:一个主机带多个终端。终端没有数据处理能力,仅负责数据的录入和输出。而运算、存储等全部在主机上进行。现在的银行系统,大部分都是这种集中式的系统,此外,在大型企业、科研单位、军队、政府等也有分布。集中式系统,主要流行于上个世纪。
集中式系统的最大的特点就是部署结构非常简单,底层一般采用从IBM、HP等厂商购买到的昂贵的大型主机。因此无需考虑如何对服务进行多节点的部署,也就不用考虑各节点之间的分布式协作问题。但是,由于采用单机部署。很可能带来系统大而复杂、难于维护、发生单点故障(单个点发生故障的时候会波及到整个系统或者网络,从而导致整个系统或者网络的瘫痪)、扩展性差等问题。
二、分布式系统(distributed system)
在《分布式系统概念与设计》一书中,对分布式系统做了如下定义:
分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统
简单来说就是一群独立计算机集合共同对外提供服务,但是对于系统的用户来说,就像是一台计算机在提供服务一样。分布式意味着可以采用更多的普通计算机(相对于昂贵的大型机)组成分布式集群对外提供服务。计算机越多,CPU、内存、存储资源等也就越多,能够处理的并发访问量也就越大。
从分布式系统的概念中我们知道,各个主机之间通信和协调主要通过网络进行,所以,分布式系统中的计算机在空间上几乎没有任何限制,这些计算机可能被放在不同的机柜上,也可能被部署在不同的机房中,还可能在不同的城市中,对于大型的网站甚至可能分布在不同的国家和地区。
在今天这篇文章中,我将带你了解分布式的起源,是如何从单台计算机发展到分布式的,进而帮助你深入理解什么是分布式。为了方便你更好地理解这个演进过程,我将不考虑多核、多处理器的情况,假定每台计算机都是单核、单处理器的。
说明:完整的《分布式核心原理解析》学习文档篇幅较长,共有330页,这里限于篇幅,故只展示一部分的文档
前言
一,分布式何而起
分布式起源
- 单兵模式:单机模式
- 游击队模式:数据并行或数据分布式
- 集团军模式:任务并行或任务分布式
- 分布式是什么?
- 总结
二,分布式系统的指标
分布式系统的指标
- 性能(Per formance)
- 资源占用(Resource Usage)
- 可用性( Availability)
- 可扩展性(Sealabi1ity)
- 不同场景下分布式系统的指标
- 总结与思考
三,分布式协调与同步
分布式互斥
- 什么是分布式互斥?
- 霸道总裁:集中式算法
- 民主协商:分布式算法
- 轮值CE0:令牌环算法
- 总结
分布式选举
- 为什么要有分布式选举?
分布式选举的算法
- 长者为大: Bully 算法
- 民主投票: Raft 算法
- 具有优先级的民主投票: ZAB算法
- 三种选举算法的对比分析
- 总结
分布式共识
- 什么是分布式共识?
分布式共识方法
- PoW
- PoS
- DPoS
- 三种分布式共识算法对比分析
分布式事务
- 什么是分布式事务?
- 如何实现分布式事务?
- 基于XA协议的二阶段提交方法
三阶段提交方法
- 第一,CanCommit阶段
- 第二,FreCommit阶段
- 第三,DoCommit阶段
- 基于分布式消息的最终一致性方案
- 三种实现方式对比
分布式锁
- 为什么要使用分布锁?
- 分布式锁的三种实现方法及对比
- 基于缓存实现分布式锁
- 基于ZooKeeper实现分布式锁
- 三种实现方式对比
四,分布式技术是如何引爆人工智能的?
- 什么是人工智能?
- 数据处理
- 分布式模型训练
- 数据分布式训练
- 模型分布式训练
- 混合模型训练
分布式资源管理与负载调度
分布式体系结构一- 集中式结构
- 什么是集中式结构?
经典集中式结构
- Google Borg
- Kubernetes
- Mesos
- 分析对比
分布式体系结构一一非集中式结构
- 什么是非集中式结构?
- Akka集群
- Redis集群
- Cassandr s集群
- 对比分析
分布式调度架构一- -单体调度
- 什么是单体调度?
- 单体调度设计
- Bor e调度设计
- Bor g调度算法
分布式调度架构一-两层调度
- 什么是两层调度?
- 两层调度设计
- 资源分配算法
分布式调度架构一一共享状态调度
- 什么是共享状态调度?
- 共享状态调度设计
- 0mega调度架构
- 0mega共享调度工作原理
分布式事务与分布式锁相关问题
- 分布式事务的相关问题
- 分布式锁的相关问题
五,分布式计算技术
分布式计算模式- -MR
- 什么是分而治之?
- 分治法的原理
- 抽象模型
- MapReduce工作原理
- MapReduc e实践应用
分布式计算模式--Stream
- 什么是Stream?
- Stream工作原理
- Storm的工作原理
分布式计算模式- - - Aector
- 什么是Actor?
- Actor计算模式
- Actor工作原理
- Actor关键特征
- Actor模型的应用
分布式计算模式- - 流水线
- 什么是流水线模式?
- 流水线计算模式
- 流水线计算模式的原理
- 实践:构建机器学习流水线
六,分布式通信技术
分布式通信- - 远程调用
- 什么是远程调用?
- 远程调用的原理及应用
- RPC的原理及应用
- RMI的原理及应用
- RPC与MI对比分析
分布式通信一-发布订阅
- 什么是发布订阅?
- 发布订阅的原理及应用
- 发布订阅的基本工作原理
- Kafka发布订阅原理及工作机制
- 发布订阅实践应用
分布式通信- -消息队列
- 什么是消息队列?
- 消息队列的原理
- 消息队列工作原理
- Rocke tMQ消息队列原理及工作机制
分布式体系架构与分布式计算相关问题
- 分布式体系架构相关问题
- 分布计算技术相关问题
七,分布式数据存储
CAP理论
- 什么是CAP?
CAP选择策略及应用
- 保CA弃P
- 保CP弃A
- 保aP弃C
布式数据存储系统一一三要素
- 什么是分布式数据存储系统?
分布式数据存储系统三要素
- 生产和消费数据
- 确定数据位置
- 存储数据
数据分布方式一一哈希与一 致性哈希
- 数据分布设计原则
- 数据分布方法
- 哈希
分布式数据复制技术
- 什么是数据复制技术?
- 数据复制技术原理及应用
- 同步复制技术原理及应用
- 异步复制技术原理及应用
- 半同步复制技术原理及应用
- 三种数据复制技术对比
分布式数据一 缓存技术
- 什么是分布式缓存?
- 分布式缓存原理
- Redi s分布缓存原理
- Memcache d分布式缓存原理
八,分布式高可靠
分布式高可靠一-负载均衡
- 什么是负载均衡?
- 服务请求的负载均衡方法
- 轮询策略
- 随机策略
- 哈希和一致性哈希策略
分布式高可靠一- 流量控制
- 什么是流量控制?
分布式系统流量控制策略
- 漏桶策略
- 令牌桶策略
- 两种策略对比
- Sentine1流量控制工作原理
分布式高可用- -故障隔离
- 分布式高可用- -故障隔离
- 分布式故障隔离策略
- 线程级隔离
- 进程级隔离
- 资源隔离
- 故障隔离策略综合对比
分布式故障基础知识
- 故障类型
- 故障检测
- 故障恢复
- 分布式故障检测原理
- 故障恢复策略
如何判断并解决网络分区问题?
- 什么是网络分区?
- 如何判断是否发生了网络分区?
- 网络分区最微妙的地方在哪里?
- 网络分区出现概率较高的场景是什么?
- 网络分区有哪些常见的处理方法?
当下微服务架构越来越流行,分布式的处理成为项目中一个绕不过去的坎,在中高级开发的面试中,分布式也成了必选项,很多人在项目中忙于业务实现,忽略了或者没有机会对分布式进行了解。