Introduction
分布式系统的定义
分布式系统是一个具有自主计算能力的计算机节点的集合,对于用户来说,这个系统就像一个单独的、统一的系统(即分布式系统屏蔽了底层的异构性)。
注:独立计算能力指的是每个计算机都可以做独立的子任务,与并行计算不同。
为什么要分布式
- 经济性:微处理机通常比大型机具有更好的性价比
- 速度:分布式系统比大型机的计算能力更强
- 固有的分布性:有一些系统本来就包含了物理上分布存在的机器
- 可靠性:当某个机器崩溃时,分布式系统仍可以正常运行
- 持续的增长能力:分布式系统具有很强的可扩展性,可以逐步增加计算能力
- 人本身就是分布式的:人平时各自干各自的事,但会合作去完成一个任务
分布式系统的目标:
- 使资源可用
- 分布式的透明性
- 开放性:不同的系统可接入
- 可扩展性: 分布式系统的容量可扩展
透明性的含义:
- 访问透明:隐藏数据表示形式以及访问方式的不同
- 资源位置透明:隐藏数据所在位置
- 迁移透明:隐藏资源可能被移动到另一个位置
- 重定位透明:隐藏资源可能在使用中被移动到另一个位置(即热迁移)
- 多副本透明:隐藏资源是否已被复制(重点是多副本的一致性问题)
- 并发透明:隐藏一个资源可能被多个用户竞争使用
- 故障透明:屏蔽资源的故障和恢复
开放性的含义:
- 能够与来自其他开放系统的服务交互,而不用考虑底层环境
- 一个良定义的接口
- 支持可移植应用(Portable Application)
- 易于互操作
- 本身可以适配不同的操作系统,至少要独立于底层环境的异构性
可扩展性的含义
- 规模的可扩展性(用户或节点数量)
- 地理位置的可扩展性(节点间的最大距离)
- 管理域的可扩展性(管理域的数量)
策略与机制
定义:策略指的是解决特定问题的具体方法和算法;机制则是指解决这些问题的具体手段和实现方式。
具体地说,机制就是做什么(类似于Interface),策略就是怎么做(类似于Implementation)。
举例:在Linux中提供了缓存的机制,通过LRU策略来对这个机制进行具体实现。
先有机制,后有策略;有了机制以后,至少需要有一个策略来实现它。策略具体,机制抽象。
分布式系统的分类
- 分布式计算系统
- 分布式信息系统
- 分布式普适系统
分布式计算系统
集群计算
通过相对高速的本地网络形成的一个高性能的集群(通常采用计算存储分离的架构。
特点:同构性(相同的OS,几乎相同的硬件)、单一管理节点
网格计算
各地的限制离散资源组成的一个算力网络。
特点:异构性、分布在多个组织、轻松跨越广域网
云计算
IaaS、PaaS、SaaS
分布式信息系统
如分布式事务处理系统。
事务
事务是对对象的状态进行的操作的集合,满足ACID属性:原子性 Atomicity, 一致性 Consistency, 隔离性 Isolation, 持久性 Durability
分布式普适系统
移动计算系统
传感器网络
Architecture
分布式系统架构风格
- 层次式
- 对象式
- 总线式(这是一种松耦合的系统架构,采用事件触发)
- 订阅-发布
- 共享数据空间
分布式系统的组织形式
- 集中式
- 非集中式
- 混合式
集中式架构(基本的C/S模型)
特点
- 有提供服务的进程(服务器)
- 有使用服务的进程(客户端)
- 客户端和服务器可以位于不同的机器上
- 客户端在使用服务时遵循请求/应答模式
多客户端-单服务器架构的问题
- 服务器存在性能瓶颈
- 服务器容易产生单点故障
- 规模难以扩展
多客户端-多服务器架构
Web Proxy Server
Web Applets
应用分层
传统的三层结构包括用户界面层、处理层和数据层
典型应用
瘦客户机
非集中式架构(P2P)
分类
- 结构化P2P:节点按特定数据结构组织
- 非结构化P2P:节点随机选择邻节点
- 混合式P2P:部分提供特定功能的节点按特定结构组织
结构化P2P
结构化P2P通常采用logical ring或hypercube的overlay来组织,每个节点提供根据ID提供特定的服务
非结构化P2P
大多数非结构化的P2P组成随机的overlay,两个节点之间按p的概率连接,查找数据时使用洪泛或随机游走。另有一种非结构化的P2P采用了簇结构,簇头直接形成全连接。
混合式P2P
如BitTorrent: Trackers,Edge-Server结构(CDN:内容分发网络)
结构化 vs 非结构化
结构化的优势在于能够快速找到信息,可以设计一种算法在有界代价下找到信息,但是结构的维护成本太高了。