分布式系统是若干独立计算机的集合,这些计算机对于用户来说像是单个系统。
分布式系统,包括基于对象的分布式系统、分布式文件系统、基于文档的分布式系统以及基于协作的分布式系统。
中间件是高层的用户应用程序与低层的操作系统之间的软件层。
体系结构模型
体系结构是各个独立指定组件的结构。
整体目标:确保结构能满足现在和将来可能的需求。
主要关心:系统可靠性、适应性、可管理型和性价比。
第一步,体系结构元素——通信实体。
1)面向系统的角度:线程、进程、结点。
2)面向问题的角度:对象(自然单元)、组件(提供的接口和所需接口)、Web服务(经常跨越组织边界)。
3)进程间通信:相对底层支持(套接字、多播、消息传递)。
4)远程调用:最常见的通信范型,双向交换。
请求——应答协议(RR):一对消息的交换。
远程过程调用(RPC):远程计算机上进程中的过程能被调用。
远程方法调用(RMI):一个发起调用的对象可以调用一个远程对象中的方法。
进程通信及远程调用的限制:
发送者需要知道接收者(空间耦合);
发送者和接收者同时存在(时间耦合)。
5)间接通信(时间空间解耦合)。
组通信:一对多通信范型。
发布——订阅系统:提供一个中间服务,有效确保生产者生成的消息被路由到需要这个消息的消费者(体系结构生产者消费者问题特化,特对特)。
消息队列:提供点到点服务。
元组空间:进程可把任意结构化数据存放在一个持久化元组空间,其他进程可读可删除。
分布式共享内存:用于支持在不共享物理内存的进程间共享数据。
第二步,体系结构元素——中间件内容补充。
中间件提供一个编程抽象来屏蔽异构问题,主要解决下列问题:
1)硬件。
数据类型在不同硬件平台上表示不同。
存储方式不同(PowerPC采用big-endian,X86采用little-endian)。
2)通信协议。
独立于网络底层的传输协议(底层无关)。
3)操作系统。
在操作系统上提供更高级的抽象API,屏蔽操作系统级的异构。
4)编程语言。
CORBA通过IDL,可以使得不同的语言写的代码互相调用。
CORBA——公共对象请求代理结构。
第三步,体系结构模型——分布式系统结构的设计需求。
设计考虑:系统组件间的责任划分,组件在网络上的放置等。
1)影响1:性能问题。
响应能力:服务器和网络负载;OS中间件与代码引起的延迟。
吞吐量。
负载平衡。
2)影响2:QoS服务质量。
可靠性、安全性、适应性。
性能一般体现在响应与吞吐,但是还有一些新的解释。
强时间性数据(time-critical data)。
QoS可以在操作系统层、网络层等多个层级实现。
3)影响3:缓存和复制的使用。
缓存复用频度。
优化访问时间。
4)影响4:可靠性问题。
正确性:形式化验证;Model Checking;测试技术。
容错性:冗余是关键。
安全性:保证数据不受攻击;通过网络访问数据的权限。
第四步,体系结构模型——客户-服务器模式。
客户端Client发出Invocation,服务端Server返回Result。
CS模式C端比较肥胖,分担了S端一些任务,但result计算却又只在S端进行。
S端和网络也是瓶颈。
第五步,体系结构模型——层次化体系化结构。
层次化与分层体系结构互补,是一项组织给顶层功能的技术。
层次化应用功能分解如下:
1)表示逻辑:用户交互与用户应用视图逻辑。
2)应用逻辑:设计应用相关(业务逻辑)详细的应用特定储存。
3)数据逻辑:涉及应用的持久存储,通常在一个数据库管理系统中。
第六步,体系结构模型——P2P体系化结构。
1)结构化P2P(分布式哈希表DHT映射);
2)非结构化P2P;
3)混合P2P。
第七步,体系结构模型变体。
1)思路。
使用多个服务器和缓存,增加性能和灵活性。
使用移动代码和移动代理。
用户硬件喜好。
弹性扩展删除的需求。
2)方式。
服务器组。
代理服务器与缓存。
移动代码(服务器与客户端传递)。
移动代理(Server 间传递)。
网络计算机。