CC BY 4.0 (除特别声明或转载文章外)
如果这篇博客帮助到你,可以请我喝一杯咖啡~
分布式系统案例
- 局域网络
- Tair 分布式数据库架构
- Elasticsearch 搜索集群
- 边缘计算
- 大规模深度学习系统
产生背景
计算机的小型化以及计算性能的提升
Enslow 的系统设计模型
发展趋势
- 2005 年前:封闭集中的 IT 基础设施
- 今天:开放集中的云环境
- 2020 年以后: 开放分布式的普适计算环境
定义
分布式系统是若干独立自主计算机的集合,这些计算机对于用于来说像是单个 耦合系统。
物理分布,逻辑集中,个体独立,整体统一
特性
- 构成组件并被所有用户共享;
- 系统资源可能不允许访问;
- 软件运行在不同处理器上的多个并发进程上;
- 允许多点控制;
- 允许多点失效
集中式系统特性
- 仅由单个组件构成;
- 单个组件被用户一直占用;
- 所有的资源都是可访问的;
- 软件运行在单个进程中;
- 单点控制;
- 单点失效;
自主性
计算节点硬件或者软件进程是独立的;
耦合性
用户或者应用程序感觉系统是一个系统——节点之间需要相互协作;
八大谬论
- 网络可靠。 The network is reliable.
- 延迟为零。 Latency is zero.
- 带宽是无限的。 Bandwidth is infinite.
- 网络是安全的。 The network is secure.
- 拓扑不会改变。 Topology doesn’t change.
- 只有一个管理员。 There is one administrator.
- 运输成本为零。 Transport cost is zero.
- 网络是同质的。The network is homogeneous.
自主节点集合
节点独立行为
- 每个节点都是独立的,有自己的本地时间;
- 没有全局锁;
- 存在基本的同步和协同的问题;
节点集合行为
- 如何管理集合中的节点之间的关系?— 开放集合、封闭集合;
- 如何知道确实是在跟一个授权(非授权的)成员通信? — 信任、安全机制
节点间的组织形式
覆盖网络(Overlay network)
- 实践表明覆盖网络最为常用
- 每个节点仅和邻居节点通信
- 邻居节点是动态的甚至只能通过查询获得
覆盖网络类型
- P2P 网络(Peer-toPeer)
- 结构型的 P2P 网:节点之间的连接具有特定规则的结构
- 非结构性的 P2P 网络:节点之间的连接具有随机和任意性;
一致(Coherent)系统
本质
节点无论在什么地方,用户无论何时访问,节点集合对于 用户来讲是一个整体;
挑战
部分失效: 不可避免地,分布式系统的某一部分会失效, 部分失效以及恢复很难做到对用户的透明性
例子
- 终端用户不知道计算发生在什么地方;
- 用户也不知道与应用相关的数据存储在什么地方;
- 数据拷贝完全是隐藏的;(核心是分布式透明性)
分布式系统的目标
使资源可访问
让用户方便地访问资源
透明性
隐藏资源在网络上的分布,隐藏进程和资源在多台计算机上分布这一事实
透明的类型
透明性 | 说明 |
---|---|
访问 | 隐藏数据表示形式的不同以及资源访问方式的不同 |
位置 | 隐藏资源所在位置 |
迁移 | 异常资源是否移动到另一个位置 |
重定位 | 隐藏资源是否在使用过程中移动到另一个位置 |
复制 | 隐藏是否对资源进行复制 |
并发 | 隐藏资源是否由相互竞争的用户共享 |
故障 | 隐藏资源的故障和恢复 |
持久化 | 隐藏数据在主存和磁盘这一事实 |
观点
完全透明性是不可取的也是难以实现的,主要因为:
- 可能隐含通信的性能问题
- 完全隐藏网络和节点的失效是不可能的;
- 不能区分失效和性能变慢的节点;
- 不能确定系统失效之前的操作是什么
- 完全的透明性可能牺牲性能,暴露系统分布特征
- 保证复制节点与主节点的一致性需要时间(一致性问题)
- 为了容错需要立即将内存修改的内容同步到磁盘上;
开放性
访问接口的标准化
可扩展性
系统在规模、地域、管理上的可扩展性