Wednesday 2 March 2005

分布式模式笔记(三)

Broker(代理程序)



上下文:   



许多复杂的软件系统运行在多个处理器或分布式计算机上。将软件分布在多台计算机上的原因有多种,例如:

l 分布式系统可以利用多个 CPU 或一群低成本计算机的计算能力。

l 某个软件可能仅在特定计算机上可用。

l 出于安全考虑,软件的各部分可能必须运行在不同的网段上。

l 一些服务可能是由业务合作伙伴提供的,并且只能通过 Internet 进行访问。

但是,实现分布式系统是不容易的,因为您必须处理诸如并发性、跨平台连接和不可靠网络连接之类的问题。



问题:



如何构建分布式系统以便应用程序开发人员不必关心远程通信的细节?(设计目标就是将底层的细节隐藏。)



解决方案:



使用 Broker 模式可以隐藏远程服务调用的实现细节,方法是将这些细节封装到一个与业务组件自身不同的层.(分层可以有效的解决隐藏实现细节的问题。但牺牲了灵活性和优化的能力。)





ServiceInterface可以在服务器端不必公开实现细节的情况下由服务器来提供服务。代理将完成所有数据封送和拆收、安全控制、传输通道配置和任何其他附加工作。代理将完成所有数据封送和拆收、安全控制、传输通道配置和任何其他附加工作。



服务器查找:



(目的:为了克服避免公开服务器的确切位置的问题。)



      而应当将新组件(即代理程序组件)部署在一个众所周知的位置,然后向客户端公开该位置。此后,代理程序组件负责为

客户端查找服务器。代理程序组件还会实现一个用于添加和删除服务器组件的储存库,这样就有可能在运行时添加、删除或交换服

务器组件。这种类型的功能通常称为"名称服务"。查找远程对象是企业计算中的一项常见要求。例如,Microsoft 使用 Active Directory® 目录服务。(我们的命名服务,除了应当提供这种类似的远程对象查找来适应remoting外,还需要提供web service 的创建和查找服务。

   



       代理程序驻留在一个不应该频繁更改的、众所周知的位置。已被激活并且准备接收请求的任何服务器都将向代理程序注册自己,以便下一次客户端向代理程序请求这种类型的服务器时,代理程序能够使用它。这还可能提高系统的性能和可用性,因为它使您可以拥有多个同时运行并服务于多个客户端的、完全相同的服务器组件。这种机制有时称为负载平衡。下图显示了一个这些组件之间的交互方案示例。