3.1分布式系统-系统结构
系统存在的异构性 网络在性能上有很大不同 必须支持不同规模的系统
系统设计者面临的问题
内部问题
非同步的时钟 冲突的数据更新 多种软硬件故障模式 数据完整性、保密性的攻击 服务拒绝攻击
外部威胁
分布式系统模型概述
• 物理模型:从计算机和所用网络技术的特定细节
中抽象出来的分布式系统底层硬件元素的表示 – 考虑组成系统的计算机和设备的类型以及它们 的互联,不涉及特定的技术细节
分布协同计算基础
第三章:
分布式系统基础 ---系统模型
张锡哲 副教授 计算机应用技术研究所 东北大学信息科学与工程学院
1. 分布式系统模型
分布式系统---理想假设
如果网络能保证信息不丢失 如果所有发出去的消息都能在预期的时间内到达 如果每个机器上的时钟都是精准的 如果机器不会宕机,进程不会出故障
一个没有实践经验的开发者,通常会在上述 假设,很理想化一个系统的实现。只注重应 用需求,而忽略实际中会出现什么问题。 这样的系统,在实际中根本不能用。
3
可能出现的问题
什么样的结构合适?--模型
两个机器要进行消息传递,我怎么知道对方是 否收到了我的信息?我在等待一个回复,可是 它迟迟不到,怎么办?--进程间的通信 网络上异构的机器怎样进行互操作?--中间件 我的文件能不能被别人访问了--安全
系统的系统
系统的系统
节点不是简单的台式机或移动终端,而是子系 统,子系统中的节点共同完成一个或多个特定 的任务 整个分布式系统由独立控制和管理的软件子系统构 成,成为系统的系统。 典型实例:物联网系统-智能交通,智能电网 没有全局的系统设计 子系统自适应使自身利益最大化 外部社会因素具有重要的影响(socio-technical system)
分布式结构设计的需求(可依赖性)
• 可依赖性问题
正确性 容错处理
冗余是关键, 例如:消息保存以便重传, 使用副本技术进行容错。
安全性
保证数据不受攻击 通过网络访问数据的权限
基础模型
我们需要知道一个设计在特定的系统中 是否可以工作?因此需要首先弄清楚会 存在什么问题,合理的假设,可以使模 型更具通用性,不合理的假设没有价值。 清晰明确的假设使我们可以证明系统的 特性,并且知道满足这些假设的系统都 具有同样的特性。
互联网规模的分布式系统
20世纪90年代之后,可扩展的物理模型 包含大量节点,提供跨组织的分布式服务 采用额外服务提供端到端的服务质量特性
intranet ☎ ☎
ISP ☎ ☎
backbone
satellite link desktop computer: server: network link:
由大量运行在独立计算机上的对等进程组成,支持数据存储的分布和数据 复制技术 在分布式活动中协同交互、在应用层维护一致性和同步 E.g. a peer to peer whiteboard
A pplic at ion Coordination c ode A pplic at ion Coordination c ode
例子
2010年5月6日下午2时42分到2时47分之间 ,道琼斯指数从10458点跌至9869.62点, 与前一交易日收盘相比,下跌了998.5点。 这是道琼斯指数历史上第二大单日波幅 宝洁公司股价突然从每股64美元跌至39美 元,随即回升至每股60美元。 当天在纽交所交易的股票中,有8只股票出 现了交易价为零或者1美分的异常情况
体系结构模式
分层体系结构 层次化体系结构:两层和三层体系结构
Applic ations, services
Middleware
Operating s ys tem Platform Computer and network hardware
瘦客户端
本地只是一个GUI(图形用户界面),应用程序在远程计 算机上执行。早期的大型机就有哑终端的概念,只不过那 时大型机在哑终端在一个机房。现在可以是通过网络访问 服务器。 缺点:高延迟。
分布式结构设计的需求(性能)
• 响应时间
– 服务器和网络的负载 – 操作系统、中间件和代码执行引起的延迟
• 吞吐率
– 单位时间内能完成的任务量 – 它由处理速度和传输速度决定
• 负载平衡
– 多个机器同时提供服务 – 用applets在本地和客户端交互
• Cache和副本技术通常被用来提高性能
E.g. Web-caching
• 基线物理模型
– 给出分布式系统的最小物理模型 – 一组可扩展的计算机节点,这些节点通过计算 机网络相互连接进行所需的消息传递
分布式系统模型概述
• 结构模型:描述构成系统各部分的来自置、角色和它们之间的关系,定义系统中组件之间的交互方 式和它们映射到计算机基础网络的方式 – 客户/服务器模型 – 对等模型 – 客户/服务器模型的变种
Client Proxy server
Web server
Client
Web server
移动代码
将代码下载到客户端运行,可以提高交互的效率, e.g. applet
a) c lient reques t res ult s in the downl oadi ng of applet c ode
5
分布式系统的系统模型
模型是对分布式系统的一种抽象, 描述分布式系统设计中的相关的公共 特征,清楚的认识设计的本质问题。
系统设计者面临的问题
使用模式的多样性
系统的组件会承受各种工作负载。 E.g. Web页面的每天访问量 系统中某些部分的链接不稳定 一些应用对通信带宽和延迟有特殊要求
系统环境的多样性
体系结构元素
系统模型所涉及的问题
系统中主要的实体是什么? 它们如何进行通信? 它们在整个体系结构中扮演什么角色, 承担什么责任? 它们怎么样被映射到物理分布式基础 设施上?
通信实体
分布式系统中通信实体通常是进程或线程
面向问题更高层的抽象包括:
对象
代表分解给定问题领域的特定单元,通过接口访问, 使用IDL定义。
大规模复杂社会-技术系统
如何对这类系统进行建模?故障模型、性 能模型、结构模型如何表示? 如何有效地监控和预警系统故障? 社会因素是如何影响系统运行的?
体系结构模型
分布式系统的体系结构模型首先将简化和抽象系统中 单个组件的作用和功能,然后考虑:
在网络中如何部署各个组件--为数据分布和负载寻找有用的 模式定义 各个模块之间的关系—组件的功能角色和组件间通信的模式 例如:分布式存储系统的角色:用户、数据,数据的索 引。由此确定了目录服务器和数据服务器,以及它们之 间的关系和通信交互模式。 例如:门户网站:client/serve模型,因为门户网站和用 户不可能对等(应用模式)。为了减少服务器的负载, 服务器之间可以P2P连接(效率、扩展性)。
• 设计目标
– 数据和计算任务在物理节点间的合理分布 – 评估分布式系统的性能、可靠性、可扩展性以 及其它的特性,估计可能存在的问题
分布式系统模型概述
• 基础模型:对各种结构模型中的共性属性的一种
较为形式化的描述 – 交互模型: 处理消息发送的性能问题,解决在分 布式系统中设置时间限制的难题 – 故障模型: 试图给出进程和信道故障的一个精确 的约定。它定义了什么是可靠通信和正确的进 程 – 安全模型: 讨论对进程的和信道的各种可能的威 胁
4
可能出现的问题
如何分布资源,如何找到它们?在海量资源的 情况下,服务器不堪重负怎么办?--名字服务 通知其它机器我上传新的资源了,我怎么知道 其它节点是不是收到了?我收到了一个信息, 我怎么知道是真是假?--协调和商定 上传或下载文件操作执行到中途,不想做了, 能删除影响吗?--分布式事务与一致性维护
在几个主机上维护副本服务
e.g. Sun NIS, realcourse
Server Client
Server
Client Server
代理服务器和缓存
缓存(Cache)
保存最近使用过的数据,可以在本地缓存,也可以在代理服务器上 做缓存。例如Web浏览器的缓存机制 缓存可以减少不必要的网络传输,减少服务器负担,还可以代理其 它用户透过防火墙访问服务器。
远程调用
间接通信
角色和责任—客户/服务器
通信实体在交互中所扮演的角色
Client
invocation result
invocation result
Server
Server
Client Key: Proc ess : Computer:
角色与责任--对等结构
一项任务所有进程具有同样的角色,作为对等方进行协作交互,不 区分客户和服务器。以改善客户/服务器模型的伸缩性差的问题,实现 共享资源的更广泛分布。支持大量计算机访问它们共同存储和管理的 数据及其他资源。 E.g. 共享数字音乐文件的Napster系统
物理模型
在基线物理模型上,可以分为三代分布式系统 早期分布式系统(20世纪70-80年代)
基于局域网构成、10-100个节点 通常是同构的,开放式不是主要问题 支持少量服务(如共享打印机、电子邮件服务等), 与互联网连接有限
互联网规模的分布式系统 当代的分布式系统
物理模型