用以支持分布式的技术的3个层次:

ad hoc网络编程,可以参考:http://baike.baidu.com/link?url=eF7jZV0BWQMUd7EfM8F7Ia77Oy0YlO9yY1tSaUy2Gkco0yfpSxwnCAz5Q1FzhChH2DveRsOEguBL5t6Dnm0h6K

结构化通信:通过提供较高层次的通信机制,避免了应用代码与底层IPC机制的直接耦合,从而解决ad hoc网络比编程的限制。最有名的结构化通信实例时远程过程调用RPC平台,如sun rpc以及分布式计算环境DCE、ACE等。

中间件:

    1、 分布式对象计算中间件,用来构建分布式系统应用的CORBA2.x和java rmi是分布式对象计算中间件技术的典范。

    2、 组件中间件,EJB和CORBA组件模型CCM是组件中间件技术的典型代表。

    3、 发布/订阅中间件和面向消息的中间件,支持异步通信。如IBM的MQ系统、BEA的message q,及java消息服务JMS、数据发布服务DDS等等。

    4、面向服务架构和web服务,如websercie、mule、apache web服务调用框架(web service invocation framework,WSIF)等等。

模式语言

    分布式计算的模式语言一共包含114个模式,分为13组问题域。每个问题域描述一个和构造分布式系统相关的特定技术主题,并包含模式语言中针对该问题的所有模式。

   (1) 从混沌到结构,该问题域包括了分布式模式语言的基础模式。它们帮助我们从需求和限制的混沌中得到粗粒度的软件结构,进而产生清晰而独立的实体部件以构成整个要开发的系统。Domain model,Layer,Modele-View-Controller,Presentation-Abstract-Controll,Microkernel,Reflection,pipes and filters,shared repository,blackboard,domain object.

  (2)分布式基础设施,该问题域描述了中间件相关的模式。中间件是分布式软件的基础设施,帮助我们简化分布式系统中的应用开发。这里的模式可以帮助开发人员理解常用中间件产品和平台所支持的基础通信范式,以及其软件架构的关键方面。Messaging,Message channel,Message Endpoint,Message Translator,Message Router,Broker,Client Proxy,Requestor,Invoker,Client Request Handler,Server Request Handler,publisher-subscriber.

  (3) 事件分离和分发,不管应用使用一个多么负责的通信模型,比如同步请求-响应,异步消息或者发布/订阅传播机制,分布式计算的核心仍然是处理和响应网络中接收到的事件。事件驱动的内核扮演着至关重要的角色,正因为如此,它绝不能成为系统的性能瓶颈。Reactor、Proactor、Acceptor-Connector、Asynchronous Completion Token。

  (4) 接口划分,接口时组件的"名片",客户端可以通过它来了解组件的功能和使用协议。Explicit Interface,Extension Interface,Introspective interface,Dynamic Invocation Interface,Proxy,Business Delegate ,Facade ,Combined Method, Iterator,Enumeration Method和batch method.

   (5) 组件划分,组件是基本实现单元,它为客户提供定义清晰的服务。Encapsulated Inplementation、whole part、Composite 、Master-slave、Half-Object plus protocol、Replicated Component group.

  (6)应用控制,首先是将应用程序的用户输入转换成具体的功能服务请求,然后执行这些请求,最后再将结果转换成对用户有用的输出。Page Controller、Front Controller、Application Controller、CommandProcessor、Template View、Transform View、Firewall Proxy、Authorization。

   (7) 并发,分布式系统软件经常能从并发中受益,尤其是那些需要同时处理多个客户请求的服务器和服务器端的应用。Half-Sync/half_aysnc、Leader/Followers、Active Object、Monitor Object。

  (8) 同步,同步访问共享组件、对象和资源,并避免死锁、竞争和其他并发问题是构建分布式系统最困难的任务之一。此外,同步会产生很大的开销,因此设计应用程序时应尽量减少或者避免不必要的同步。Guarded Suspension、future、Thread-safe Interface、Double-Checked Locking、Strategized Locking、scope Locking、Thread-specific storage、Copied Value、Immutable Value。

  (9) 对象交互,在独立程序中,对象间的协作主要包含相互调用方法和服务、传递调用参数已经同步等待被调用对象返回结果。Observer、Double Dispatch、Mediator、Memento、Context Object、Data Transfer Object、Command、Message。

 (10) 适配与扩展:会长期存在的分布式系统中组件应当是可配置的、自适应的和便于改进的。Bridge、Object Adapter、Interceptor、Chain of Responsibility、Interpreter、Visitor、Decorator、Template Method、Strategy、Null Object、Wrapper Facade、Execute-Around Object、Declarative Component Configuration。

 (11) 状态行为:在实践中,开发人员经常会面对使用状态机的情形,某些情况下,这样做会导致实现上不必要的复杂性。Objects For states、Methods For States、Collection for states。

 (12) 资源管理:资源管理对分布式系统的成功至关重要。Object manager、Container、Component Configuration、lookup、Virtual Proxy、Lifecycle Callback、Task Coordinator、Resource Pool、resource Cache、lazy acquisition、eager acquisition、partial acquisition、activator、evictor、leasing、automated garbage collection、counting handle、abstract factory、Builder、factory method、disposal method。

 (13) 数据库访问: 许多分布式系统使用数据库来存储持久化数据,越来越多的系统正使用面向对象的技术的同时使用关系数据库模型。Database Access Layer、Data Mapper、Row Data Gateway、Table Data Gateway和active record。

它们之间的关系如下图所示:

 

小结:

我们关于分布式计算的模式语言一共包含114个模式,分为13组问题域,每个问题域描述一个和构造分布式系统相关的特定技术主题,并包含模式语言中针对该问题的所有模式。

posted on 2015-05-04 13:29  一天不进步,就是退步  阅读(789)  评论(0编辑  收藏  举报