当前位置:文档之家› 第2章 分布式系统体系结构

第2章 分布式系统体系结构


没有边界服务器
用户提供增强型Web服务器,包含如下3种组件

可重定位客户请求到其他服务器 可分析访问模式
可管理Web页复制
28
1.3 体系结构与中间件

中间件在体系结构中的位置

中间件如何适应于应用需要

中间件的多种版本 中间件可重新配置和定制
29
拦截器(Interceptor)
13
P2P技术

P2P 应用




文件内容共享和下载,例如Napster、Gnutella、eDonkey、 eMule、Maze、BT等; 计算能力和存储共享,例如SETI@home、Avaki、Popular Power等; 协同与服务共享平台,例如JXTA、Magi、Groove等; 即时通讯工具,包括ICQ、QQ、Yahoo Messenger、MSN Messenger等; P2P通讯与信息共享,例如Skype、Crowds、Onion Routing等; 网络电视:沸点、PPStream、 PPLive、 QQLive、
第2章 分布式系统体系结构
东北大学信息学院 于戈 2009年9月
第二章 主要内容
2.1 2.2 2.3 2.4 2.5 体系结构的样式 系统体系结构 体系结构与中间件 自主管理 客户/服务器模型
2
2.1 体系结构的样式
• 软件体系结构(Software Architecture)
• 软件的组件,以及组件之间的相互关系
第2层 第1层 第N层 第N-1层
4
面向对象的体系结构
• 基于对象模型
• 每个组件对应一个对象;
• 组件之间通信通过远程方法调用(RMI) 实现;
对象 对象 对象 对象
5
对象
以数据为中心的体系结构
• 组件间的通信,通过基于一个公用的存储 (如共享的分布式文件系统)实现 • 例如,基于Web的分布式系统,组件使用 共享的基于Web的数据服务
分散型无结构拓扑(Decentralized Unstructured Topology);
分散型结构化拓扑(Decentralized Structured Topology, 也称作DHT网络); 半分散型拓扑(Partially Decentralized Topology)。
15


P2P网络的拓扑结构
SopCast等。
14
P2P技术

覆盖网络(overlay network): 建立在另一个网 络上的网络,属于应用层网络,面向应用层的,不 考虑或很少考虑网络层,物理层的问题。


P2P网络是建立在Internet之上一种覆盖网络。
P2P网络的拓扑结构

集中型(Centralized Topology);
20
P2P网络的拓扑结构

分散式结构化拓扑结构




例:MIT的Chord 系统 网络结点按照一定的方式 分配一个唯一结点标识符 (Node ID) 通过散列运算为对象产生 一个唯一的对象标识符 (Object ID) 分布式查找协议,将指定 的关键字(Key) 映射到对 应的结点(Node) 时间复杂性O(log(N))

集中型拓扑结构

例, MP3共享软件Napster,通过一个中央索引 服务器保存所有Napster用户上传的音乐文件索 引和存放位置的信息。 中心节点的单点失效 中心节点的维护成本 可伸缩性

存在问题

16
P2P网络的拓扑结构

分散型无结构拓扑结构

例, Gnutella协议。基于完全随机图的Flooding 搜索算法。

拦截器 (Interceptor)

软件结构 可中断正常执行的 控制流,插入执行 其他代码

例:远程对象调用

请求级拦截器 消息级拦截器
30
自适应软件


自适应软件
可以地自动适应环境变化,如移动、QoS、故障、 能耗 随着环境变化而变化


1.
三种方案
分离关注点(Separation of concerns) 把主要功能与附加功能分离开 面向方面的软件开发(aspect-oriented software development)
P2P网络的拓扑结构

分散式结构化拓扑结构





采用分布式散列表(Distributed Hash Table, 简 写成DHT)技术来组织网络中的结点 。 加密散列函数,将一个对象的名字或关键词映射 为128位或160位的散列值 DHT是一个由广域范围大量结点共同维护的巨大 散列表。 散列表被分割成不连续的块,每个结点被分配给 一个属于自己的散列块,并成为这个散列块的管 理者。 Tapestry,Pastry,Chord和CAN
等待
• 集中式体系结构 请求 • 客户/服务器模型 服务器 • 服务器:实现特定服务的进程
客户
答复
• 客户:向服务器提出请求、等待答复的进程 • 请求/答复模式
8
层次型体系结构

用户接口层、处理层、数据层 例:搜索引擎
9
多层体系结构

瘦客户/胖服务器:用户接口简单,但后端负载重 胖客户/瘦服务器:能提高性能,但管理困难

存在问题


不能保证性能 网络带宽的消耗 非常大 可伸缩性差
17
P2P网络的拓扑结构

覆盖网络构造算法(Gossip-based protocols)


关于所有节点的表,称为全局视图(total view)。每 个节点维护一个部分视图(partial view),含有c个邻 接点的列表。 表项:=<IP,age> 节点之间定期交换表项。主动线程(可主动发起通信) 和被动线程完成。 与任意一个已知的节点进行视图交换
例1:文件共享系统BitTorrent



强制每个参与者,即可下载文件,也负责上载文件 全局目录:在Web站点中保存,指向下载文件的tracker。 跟踪器(tracker):记录活动节点的服务器
27
混合体系结构


协作分布式系统
例2:Globule系统 协作式CDN (collaborative content distribution network)
42
消息格式举例
struct message { long source; /* 发送者标识*/ long dest; /* 接受者标识 */ long opcode; /* 操作码:读、写、创建、删除 */ long result; /* 返回结果代码 :成功、失败*/ long offset; /* 读写位置 */ long count; /* 读写计数 */ char filename[MAX_PATH}; /* 文件名*/ char data[BUF_SIZE]; /* 数据区*/ }
21
P2P网络的拓扑结构

分散式结构化拓扑结构

例:CAN 系统 将(key, value) 对存储在拥有 该点所在区域的结点内 将请求传给当前结点四邻中 坐标最接近目标点的结点


时间复杂性O(n/d),d为系统 维数
22
P2P网络的拓扑管理

使用无结构P2P技术构造特定的结构化P2P覆 盖网络的两层结构
43
服务器程序举例
void main(void){ struct message m1,m2; /* 输入、输出的消息 */ int r; /* 返回的执行结果 */ while (1) { receive(FILE_SERVER,&m1); /* 等待客户请求 */ case(m1.opcode) { /* 执行请求的操作 */ case READ: r = do_read(&m1,&m2); break; : default: r = E_BAD_OPCODE; } m2.result = r; send(m1.source,&m2); /* 返回结果 */ } }
• 软件体系结构的要素
•组件(component):模块单元,能提供良好的接口
•连接器(connector):实现组件间通信的机制
•软件体系结构的样式
•如何表示一个体系结构 •常用的有4种
3
层次型体系结构
• 系统由自上而下的不同层 次的组件组成; • 只有相邻的层次可以通信; • 请求消息自上而下,响应 自下而上;

节点的加入


节点的删除


可自行离开,无需通知其他节点。 当其他节点发现某节点P不再响应时,将其从表中删除
18
P2P网络的拓扑结构

主动线程和被动线程的执行步骤
do forever receive bufferp from p if pull then // 0 is the initial age buffer← ((MyAddress,0)) view.permute() move oldest H items to end of view buffer.append(view.head(c/21)) send buffer to p view.select(c,H,S,bufferp) view.increaseAge() (b)
19
do forever wait(T time units) p←view.selectPeer() if push then // 0 is the initial age buffer← ((MyAddress,0)) view.permute() move oldest H items to end of view buffer.append(view.head(c/2-1)) send buffer to p else // empty view to trigger response send (null) to p if pull then receive bufferp from p view.select(c,H,S,bufferp) view.increaseAge() (a)
相关主题