体系结构的样式
分布式系统的组织结构主要是组成该系统的软件组件结构
软件体系结构说明不同软件是如何组织在一起,相互作用
体系结构的样式
分层体系结构
组件组成了不同的层
控制系统是从一层到另一层
请求是从上层到底层,请求结果是从底层到上层
基于对象的体系结构
每个对象都对应一个组件,组件之间通过远程过程调用
以数据为中心的体系结构
进程之间通信需要一个公共的仓库
基于事件的体系结构
进程通信基本上是通过事件传播来通信,事件传播还可以有选择的传递数据
系统体系结构
集中式体系结构
集中式体系结构
请求-回复行为
客户是通过往服务器发送请求来请求服务,然后等待服务器回复的进程
非集中式体系结构
多层客户-服务器把应用程序分为,用户接口,处理组件和数据层
不同层直接对应应用程序层的不同逻辑组件
结构化点对点体系
结构化点对点体系
覆盖网络是用一个确定性的过程来构成,进程通过一个分布式哈希表(Distributed Hash Table)来组织进程
在DHT的系统中核心思想是
从一个大的标识符空间中选取一个随机关键值赋给数据项
例如128位的标识符,从这个标识符空间中选取一个随机数赋给该系统中的节点。
这样每个基于DHT系统的核心是实现一种高效且确定的方案,根据某种距离尺度把数据项的关键值唯一地址映射给节点标识符
重要的是,当查找数据项时,会返回对应数据项节点的网络地址
这样就可以把数据项的请求路由给相应的节点来完成
非结构化点对点体系结构
非结构化点对点体系结构
覆盖网络主要通过随机化算法来实现
主要思想是
每个结点维护一个邻近点列表,但这个列表是以一种或多或少为随机的方法构造的。
数据项也是假定随机放在结点中
当结点要定位某个特定的数据项,它所能有效地做的唯一事情就是用一个查找查询来泛红该网络。
泛洪——将某个接口收到的数据流向除该接口外的所有接口发送
超级对等体
超级对等体
相互提供资源的节点间协作
上下文传送网络(content delivery network CDN),节点可以为驻留web网页提供存储空间,让web客户能访问最近的页面,快速访问
能维护一个索引或充当一个代理程序的节点通常称为超级对等体(superpeer)
超级对等体经常也是组织在点对点系统的网络中,形成一个分层组织结构。
在这种组织结构中,每个常规的对等体作为一个客户链接到超级对等体。
所有往来于常规对等体的通信都是先通过与该对等体关联的超级对等体的。
很多情况,客户-超级对等体的关系是固定的,
一个对等体只要加入网络中,就只归依于某个超级对等体,
并一直保持不变,直到它离开该网络。
超级对等体应该是生存期较长的进程,具有较高的可用性
为了保证超级对等体HA,可以部署备选超级对等体,同时要求客户与多个超级对等体进行链接
混合体系结构
混合体系结构
边界服务器系统
接入因特网的终端服务,终端用户通过边界服务器连接到因特网
主要目的
进行过滤和编码转换后提供内容服务,
还可以用于优化内容和应用程序的分布性
协作分布式系统
可以把客户请求重定向到其他服务器的组件
用于分析访问模式的组件
用于管理Web页面复制的组件
初始服务器
可以和其他服务器协作工作,将请求转发给其他服务器,还支持分布式重定向。
集中式组件 代理程序(broker)
代理程序负责注册服务器,这些服务器能够被其他服务器认识。
服务器和代理程序之间的通信类似于客户端-服务器
来源《分布式系统原理与原型》