text: 分布式系统是若干独立计算机的集合，这些计算机对于用户来说像是单个系统。
  分布式系统，包括基于对象的分布式系统、分布式文件系统、基于文档的分布式系统以及基于协作的分布式系统。
  中间件是高层的用户应用程序与低层的操作系统之间的软件层。
  体系结构是各个独立指定组件的结构。
  整体目标：确保结构能满足现在和将来可能的需求。
  主要关心：系统可靠性、适应性、可管理型和性价比。
  第一步，体系结构元素——通信实体。
  1）面向系统的角度：线程、进程、结点。
  2）面向问题的角度：对象（自然单元）、组件（提供的接口和所需接口）、Web服务（经常跨越组织边界）。
  3）进程间通信：相对底层支持（套接字、多播、消息传递）。
  4）远程调用：最常见的通信范型，双向交换。
  请求——应答协议（RR）：一对消息的交换。
  远程过程调用（RPC）：远程计算机上进程中的过程能被调用。
  远程方法调用（RMI）：一个发起调用的对象可以调用一个远程对象中的方法。
  进程通信及远程调用的限制：
  发送者需要知道接收者（空间耦合）；
  发送者和接收者同时存在（时间耦合）。
  5）间接通信（时间空间解耦合）。
  组通信：一对多通信范型。
  发布——订阅系统：提供一个中间服务，有效确保生产者生成的消息被路由到需要这个消息的消费者（体系结构生产者消费者问题特化，特对特）。
  消息队列：提供点到点服务。
  元组空间：进程可把任意结构化数据存放在一个持久化元组空间，其他进程可读可删除。
  分布式共享内存：用于支持在不共享物理内存的进程间共享数据。
  第二步，体系结构元素——中间件内容补充。
  中间件提供一个编程抽象来屏蔽异构问题，主要解决下列问题：
  1）硬件。
  数据类型在不同硬件平台上表示不同。
  存储方式不同（PowerPC采用big-endian，X86采用little-endian）。
  2）通信协议。
  独立于网络底层的传输协议（底层无关）。
  在操作系统上提供更高级的抽象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 间传递）。
  网络计算机。