某大型银行深化系统技术方案之十四:服务层之服务调度机制
传送门☞Android兵器谱☞转载请注明☞http://blog.****.net/leverage_1229
服务层
服务层主要体现了SOA体系下的组件复用和业务复用机制。服务的边界定义决定于粒度和耦合度。粒度表示的是一个服务的大小,它可以理解为服务操作的范围,粗粒度的服务,操作的内容广而且杂;细粒度的服务,操作的内容细而且简单。粗粒度的服务设计,可以减小服务之间的耦合性,但付出的代价就是增加服务的复杂性,服务具备了太多的功能,增加了设计的复杂性和维护的难度;细粒度的服务,可以让服务的实现变得简单,但这样会增加服务的数量,服务过细过多,这样必然有一些服务需要组合才能实现一定的功能,那样就增加了服务之间的耦合度,只要其中一个服务发生了变动,势必牵一发而动全身。
耦合代表的是服务与服务之间的关系。SOA的初衷就是为了降低系统各个部分之间的耦合性,使得服务可以重用。但很显然,耦合性是受到服务粒度很大的影响,而且从某种程度上讲,粒度的选择就决定了系统内部的耦合性。
服务调度机制
在SOA体系中,实现服务层的调度机制主要包括:服务注册与发现、服务调用、服务监控等。
一、服务注册与发现——UDDI
UDDI 提供了一组基于标准的规范用于描述和发现服务,还提供了一组基于因特网的实现。UDDI 构建于网络传输层和基于 SOAP 的 XML 消息传输层之上。诸如 Web 服务描述语言(Web Services Description Language,WSDL)之类的服务描述语言提供了统一的 XML 词汇(与交互式数据语言(Interactive Data Language,IDL)类似)供描述 Web 服务及其接口使用。
系统通过添加分层的功能搭起整个基础,比如使用 Web 服务流程语言(Web Services Flow Language,WSFL)的 Web 服务业务流程描述、安全性、管理和服务质量功能,从而解决系统可靠性和可用性问题。
下图说明了 UDDI 消息的传输,通过 HTTP 从客户机的 SOAP 请求传到注册中心节点,然后再反向传输。注册中心服务器的 SOAP 服务器接收 UDDI SOAP 消息、进行处理,然后把 SOAP 响应返回给客户机。就注册中心条例而言,客户机发出的要修改数据的请求必须确保是安全的、经过验证的事务。
针对不同的服务模型,可以有下列两类调度方式:
1.Mashup--Ajax
Ajax(Asynchronous JavaScript and XML)是一个Web应用模型。它包括几种关注内容的异步加载和呈现的技术:XHTML和用于确定呈现风格的CSS;浏览器为动态显示和交互所提供的文档对象模型(DOM)API; 异步数据交换,通常是XML数据;浏览器端的脚本,主要是JavaScript。
将这些技术结合在一起使用时,它们的目标是通过与内容服务器交换少量的数据为用户创造平滑、良好的Web体验,而不用在用户执行某些操作之后重新加载并重新呈现整个页面。我们可以使用各种Ajax工具包和库为mashup构建Ajax引擎。
2.UUDI查询API与发布API
查询API包含两类调用,使程序能快速地定位候选Web服务及其调用规范,然后在最初调用获得的初始信息的基础上,获得进一步的相关信息的细节。这类以find_xx命名的API提供了多种搜索标准,从而能对注册中心中的数据进行广泛地搜索。另一方面,如果事先已经知道所需数据的关键字,则可以通过直接调用get_xx API得到相应的结构数据(如:businessEntity、businessService、bindingTemplate、tModel)。
发布API包括四个save_xx 函数和四个delete_xx 函数,每个对应于一个UDDI主要结构(businessEntity,binsinessService,bindingTemplate,tModel)。一旦得到授权,一个独立的机构可以注册任意数量的businessEntity 或tModel信息,也可以修改原先发布的信息。API 设计模型很简单:可以更改特定的相关信息,也可以使用save功能来保存新信息。要删除整个结构则可以调用delete功能。详细信息请参见程序员API 规范(Programmer's API Specification)。
三、服务监控
UDDI注册服务中,利用WEB服务管理和安全来监控各项服务:
Web服务管理为Web服务提供了可见性和管理。监控服务可用性,以确保服务质量、执行SLA(服务级别协议)。还负责处理负载均衡、故障替换及Web服务可靠消息传送。
Web服务安全为外部用户或者应用程序访问的Web服务提供了安全环境。包括加密、数字签名、验证、授权、机密性、数据完整性和不可否认性。