分布式系统组成及其运行机制
分布式系统是分布式计算机系统,是计算机操作系统发展过程中的一种形态,是对单一计算机系统局限(如存储容量、运算能力、单点故障等)的补充。操作系统的功能是:管理计算机系统资源;提供用户与计算机硬件交互的接口;提供扩充机器或虚拟机。分布式计算机系统则是在多个独立计算机系统集合的基础上,增加了分布性、并行性和协同性的计算机系统。狭义的分布式系统是指在通用操作系统基础之上的提供某种具体分布式服务或资源的软件中间件,如提供服务协调功能的zookeeper。
分布式系统是若干计算机的集合,这些计算机对于用户来说就像是单个相关系统 —— 《分布式系统原理与范型》
操作系统的主要工作内容为:进程与处理机管理、作业管理、存储管理、设备管理、文件管理。分布式系统则要在分布式场景下进行以上工作,其与单一计算机系统不同的地方就在于由多个计算机组成,而这多个计算机要协同对外提供某种服务或资源。这就是分布式系统的组成要素和基本目标。
资源共享是构造分布式系统的主要动机! —— 《分布式系统:概念与设计》
冯诺依曼模型下的计算机组成元素为:存储器、处理器(运算器、控制器)和输入输出系统。那么分布式计算机系统在数据表示、存储、传输、寻址、运算和指令控制过程中就要面对多存储空间、多运算器、多控制器、多输入输出系统和多机通信方式,因此就诞生了分布式系统独特的运行机制。
-
分布式存储机制:
- 读写分离
- 一读一写
- 一写多读
- 数据副本
- 一致性协议
- 读写分离
-
分布式运算机制:
- map-reduce模型
- 冗余运算
-
分布式控制机制:
- 节点同步
- 全局时钟
- 物理时钟
- 全球定位系统
- 时钟同步算法
- 逻辑时钟
- Lamport时钟
- 向量时钟
- 互斥
- 选举
- 全局时钟
- 分布式事务提交
- 两阶段提交
- 三阶段提交
- 节点同步
-
分布式寻址机制:
- 无层次命名
- 简单命名
- 基于宿主位置
- 分布式散列表
- 分层方法
-
结构化命名
- 命名空间
-
基于属性命名
- 无层次命名
-
分布式通信机制:
- RPC
- 基于消息
- 基于流
- 多播
对于分布式系统的开发实现,由于分布性和并行性带来的问题也有一些相应的战术。
高并发战术——主要为了性能这一软件质量属性
- 缓存
- 线程安全策略
- 加锁
- Confinement(限制数据共享-避免共享)
- 局部变量
- 避免使用全局变量
- Immutability(共享不可变数据-即使共享,也只能读/不可写)
- Threadsafe data type(共享线程安全的可变数据-即使可写 (mutable),共享的可写数据应自己具备在多线程之间协调的能力,即“使 用线程安全的mutable ADT”)
- Synchronization(同步机制共享)
- 线程池
- 扩容
- 垂直扩容
- 水平扩容
- 消息队列
- 请求队列
- 应用拆分
- 应用限流
- 计数法
- 滑动窗口
- 漏桶算法
- 令牌桶算法
- 服务降级与服务熔断
- 自动降级(超时、失败次数、故障、限流)
- 人工降级(开关)
- 数据库切库分库分表
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~