什么是分布式系统?
分布式系统是若干独立计算机的集合,在用户看来是一个单一相关系统。
例如:分配给用户的工作站网络、机房中动态分配的处理器池、单个文件系统等。
分布式系统涉及到网络、处理器、内存、存储、协议等。
为什么采用分布式系统?
- 经济:相比于大型机,微型处理器的性价比更高
- 速度:分布式系统比大型机计算能力更强
- 内在分布:一些应用需要在不同空间的机器上运行
- 可靠性:当某一台机器挂掉时,分布式系统仍能运行
- 可增加:通过增加分布式系统的组件使其计算能力增强
分布式系统的目标?
- 使资源可访问
- 透明性
- 开放性
- 可扩展性
使资源可访问
DS最主要目标是使用户能够方便地访问远程资源,并且以一种受控方式与其他用户共享这些资源。
透明性
DS重要目标是讲它的进程和资源实际上在多台计算机上分布这样的事实隐藏起来。能够在用户和用程序面前呈现为当个计算机系统。
隐藏资源 主要包括访问、位置、迁移、重定位、复制、并发(锁或事务处理机制)、故障、wen缓存与主服务器完全同步。
完全透明性很难:用户可能位于不同的大陆,完全隐藏网络故障和节点故障基本不可能、无法分清速度慢的计算机和故障计算机。
开放性
能与其他开放的系统进行交互,不考虑底层环境:要求系统有良好说明的接口、支持程序的可移植性、系统容易交互
至少使分布式系统与底层环境相独立
分布式系统要实现策略与机制的分离,我们仅仅实现机制,让用户自定义实现某个策略,因此需要定义一些接口、支持移动代码、提供加密算法、提供参数和数据流。
可扩展性
三个方面衡量:规模上可扩展(用户和处理器数目)、地域上可扩展(节点最大距离)、管理上可扩展(管理域数)。目前后两者挑战性更大。
同步通信不方便、广域网通信不可靠。技术:隐藏通信等待时间(异步通信、中断)、分布技术(DNS)、复制技术(缓存技术,但存在一致性问题)。
分布式系统的类型
- 分布式计算系统
- 集群计算系统:本质上是通过告诉局域网连接的一组高端系统,每个节点运行相同的操作系统,硬件几乎相同,只有一个管理节点,同构性
- 网格计算系统:异构性,硬件、操作系统、网络、管理域都不尽相同,可以跨广域网
云平台
- 分布式信息系统
- 事务处理系统:对数据库的操作,邮件系统、财务系统,事务处理有以下几个特性:(ACID)
- 原子性:对于外部来说,事务处理不可见
- 一致性:事务处理不会违反系统的不变性
- 独立性:并发的事务不会相互干扰
- 持久性:事务处理一旦提交,所发生改变是永久性的
- 事务处理系统:对数据库的操作,邮件系统、财务系统,事务处理有以下几个特性:(ACID)
事务处理监视器(TP监视器):
通过如图所示的事务处理编程模式,允许应用程序访问多个服务器/数据库。
- 企业应用集成:通信中间件:远程过程调用、远程方法调用。
分布式普适系统
体积小,电池供电、可移动,通常嵌入到更大的系统中,其特点是系统可以自然地融入用户的环境。
-
- 家庭系统(智能家居?)
- 电子健保系统
- 传感器网络
- 移动计算系统
例子:
分布式系统架构
分布式系统由各种复杂的系统组成,分布式系统的组织结构主要是指组成该系统的软件组件。分布式系统的重要目标是提供一个中间件层,把应用程序与底层平台分开,目的是提供分布式透明性。
体系结构样式
根据和组件和链接器的使用可以划分不同的体系结构:空间(“匿名”)和时间(“异步”)上的解耦过程导致了可选的样式。
- 分层体系结构
组件组成了不同的层,控制系统从一层到另一层
- 基于对象的体系结构
每个对象对应一个组件,组件通过远程调用机制来连接
- 以数据为中心的体系结构
思想:进程通信需要一个公用仓库(共享的分布式文件系统)
- 基于事件的体系结构
进程通过事件的传播来通信,事件传播可以有选择地携带数据,分布式系统的事件传播通常与发布/订阅系统有关,空间解耦。
将基于事件的体系结构与以数据为中心的体系结构组合形成共享数据空间。在时间和空间上都解耦。
共享数据空间的体系结构
系统体系结构(组织形式)
- 集中式体系结构
客户端服务器模式:
-
- 提供服务器的进程
- 提供客户端的进程
- 客户端和服务器可以在不同的机器上运行
- 客户端遵守请求/回复行为来使用服务
客户端与服务器间的常见交互
多客户端/单服务器
多客户端/单服务器问题:
- 服务器形成了瓶颈
- 服务器发生单点错误
- 系统扩展困难
多客户端/多服务器
网络代理服务器
网络小程序:
客户端请求小程序代码下载???
客户端和小程序交互
客户端-服务器模型中,如何在用户和服务器之间划分一个明显的界限
应用分层
- 用户接口层:含有与用户交互所需的一切如显示管理
- 处理层:应用程序
- 数据层:使用的实际数据
例:搜索引擎
物联网搜索引擎简化成三个不同的层
多层体系结构(三层体系结构)
- 单层:哑终端/主机
- 双层:客户端/单服务器
- 三层:每一层都在不同的机器上运行
各种客户-服务器组织结构
abc为瘦客户,de为胖客户。
三层体系中服务器作为客户的例子:
- 非集中式体系结构
1.结构化的点对点系统
节点以特定的分布式数据结构组织。在一个结构化的覆盖网络(如逻辑环或超立方体)中组织节点,并使特定节点仅根据其ID负责某些服务。
2.非结构化的点对点系统
依靠随机化的算法来构造覆盖网络。查找某个特定的数据项时,使用查询来泛洪该网络。每个节点都维护一个含有c个邻接节点的列表。
随机选择一个邻居v,如果v有答案,它会回答,否则v随机选择它的一个邻居。(维护一个超级节点)
- 混合体系结构
将客户-服务器体系结构和非集中式结构组合在一起
-
- 边界服务器系统:用于内容分发网络,在进行过滤和编码转换后提供内容服务,还可用于优化内容和应用程序的分布性。
将英特网看成一系列边界服务器
-
- 协作分布式系统:BitTorrent文件共享系统,点对点文件下载。
BitTorrent工作原理
一旦一个节点确定了从哪里下载文件,它就加入了一群下载者的行列,这些下载者并行地从源文件获取文件块,但也在彼此之间分发这些文件块。
中间件与体系结构
中间件在应用程序和分布式平台之间形成了一个层,可以提供分布式透明性。
方式之一为中断器:作为一种软件结构,能中断正常的控制流,从而允许其他代码运行。
2.4 分布式系统自我管理
当需要自适应完成时,在系统体系结构与软件体系结构之间有很强的相互作用。自我管理、自我恢复、自我配置、自我优化。
反馈控制系统的逻辑组织结构