专利名称:Soa架构下多级服务总线的服务调用的动态路由方法
技术领域:
本发明涉及一种SOA架构下服务之间信息共享和协作,具体地说是一种SOA架构下 分布式多级服务总线的服务调用的动态路由方法。
背景技术:
服务是处理和管理数据的单元,分布在企业的各个系统中。它通过消息与其它系统或 其它服务通信。消息的交换通过标准的数据交换协议进行。每个服务都有一个唯一的服务 代码来标识此服务,每个服务都有一个唯一的服务地址,通常是一个URL,来指明服务 所在的位置。
服务目录用于服务信息的统一管理,包括服务信息的注册、修改、删除等等,所有的 服务信息都必须在服务目录中注册。服务目录中存储了服务相关的信息,包括服务的代码、 描述、参数、QoS信息、服务地址等等。
服务总线提供对服务的调用,所有服务的调用者必须通过服务总线来调用服务,避免 服务的调用者直接调用服务,实现调用者和服务之间的松耦合。每个服务总线都有一个唯 一的总线代码。
动态路由是指服务调用者不需要知道服务的地址,他在调用服务总线时,提供服务代 码,服务总线根据服务代码查询服务目录,动态得到服务地址的过程。动态路由避免了服 务调用者和服务的紧耦合。
SOA即面向服务的架构可以使应用开发流水线化,SOA的核心架构问题是控制、质量 和管理。
在SOA架构下,服务分布在企业的各个系统中,服务目录用于服务的统一管理,一 般一个企业中只部署一个服务目录,而服务总线可以部署多个。
服务总线可以多级部署,比如省中心的系统部署一个服务总线,省中心管辖的每个地 市的系统也部署一个服务总线,每个地市管辖的二级地市系统也部署一个服务总线;服务 总线也可按照应用系统部署,比如财务系统部署一个服务总线,营销系统部署一个服务总 线;服务总线也可根据性能要求来部署,比如为性能要
求高的服务单独部署一个服务总线,其它服务使用另外一个服务总线。这样,在整个企业 中,所有的服务总线形成了一个分布式、多级的架构。
服务可以绑定在某个特定的服务总线上,如果一个服务绑定在某个服务总线上,这就 意味着只有这个特定的服务总线才能访问此服务,别的服务总线都不能访问此服务。比如 涉及到金额、机密、敏感数据等安全级别高的服务或者不想让
外部系统直接访问的服务可以绑定在特定的服务总线上,使得服务的调用者必须
调用指定的服务总线,防止安全隐患。
多个服务总线之间有联通性设置,所谓联通性设置是指,如果两个服务总线
是联通的,那么它们可以调用绑定在对方上服务,如果两个服务总线不是联通的,
那么它们无法调用绑定在对方上的服务。联通性设置信息保存在服务总线上。 服务总线的联通性使得多个总线之间形成了一个网状的连接结构。 SOA的目标之一是实现服务的动态路由,使得服务和服务调用者之间的松耦
合,对于只有单一服务总线的SOA架构来说,不存在服务总线联通性和服务绑
定的问题,很容易实现服务和服务调用者之间的松耦合,但是对于分布式多级总
线的SOA架构,动态路由存在以下问题
1. 服务调用者必须知道服务是否绑定了特定的服务总线,如果服务绑定在 特定的总线上,调用者必须调用此特定总线才能访问到此服务。如果调 用者无法直接访问此特定总线,则会产生下面第3点所描述的情况。
2. 如果服务原来绑定在服务总线A上,后来改为绑定在服务总线B上,那 么服务的调用者也要从调用服务总线A改成调用服务总线B,这样就造 成服务调用者和服务的紧耦合。
3. 在服务调用者无法直接访问服务所绑定的服务总线时,比如服务调用者 与服务处在不同的VPN中或者服务调用者没有权限直接访问服务所绑 定的服务总线,就需要知道多个服务总线联通关系。假定服务调用者由 于网络条件的限制,只能访问服务总线A,则想要调用的服务及服务所 绑定的服务总线N处在另一个VPN中,不能直接访问。由于服务总线 的联通性使得多个总线之间形成了一个网状的连接结构,服务调用者必 须计算从服务总线A连接到服务总线N的路由的最短路径,才能让服务 总线A按照最短路径传递消息,调用绑定在服务总线N上的服务。 一旦 服务总线联通性发生更改,服务调用者就需要重新计算最短路径,造成 服务调用者和服务总线联通性紧耦合。
4. 服务总线的联通性信息存放在服务总线上,使得企业没有一个直观的总 线联通图,不能一目了然,管理不方便。
发明内容
为了克服以上提及的问题而造成的服务和服务调用者的紧耦合,使得SOA 失去了应有的意义,本发明的目的是提供一种新的在SOA架构下分布式多级服
务总线的服务调用的动态路由方法,这种方法用服务目录而不是服务总线来存放 服务总线的联通性信息,服务目录提供路由的最短路径计算,服务调用者调用服 务总线时,只需提供服务代码,服务总线査询服务目录获得路由的最短路径,再 根据最短路径进行路由。这种方法能够使服务调用者和服务真正的松耦合。 本发明的目的是通过以下技术方案来实现的
一种SOA架构下分布式多级服务总线的服务调用的动态路由方法,其特征 在于它包括以下步骤
(1) 服务调用者调用指定的服务总线,并输入服务代码;
(2) 指定的服务总线接收到服务请求后,输入两个参数总线代码和服务 代码7,调用服务目录的最短路径计算功能;
(3) 服务目录根据服务代码査询出该服务代码所绑定的服务总线的位置, 然后根据总线的联通性信息,计算出指定的服务总线到所绑定服务总线的最短路 径,并把最短路径返回给指定的服务总线;
(4) 指定的服务总线接收到最短路径后,发现请求数据中有最短路径,则 判断自己是不是此最短路径的最后一个总线,如果是,则说明所调用的服务代码 绑定在自己所在的服务总线上,该服务总线把服务调用者的请求数据发送给服务 调用者所在的服务代码处;如果不是,再判断最短路径中的下个总线代码,指定 的服务总线在服务调用者的请求数据中加入最短路径,把最短路径和服务调用者 的请求数据一起发送到最短路径中的下个服务总线,回到步骤(4),进行循环操 作。
本发明中
1. 服务目录除了存放服务信息之外,还需存放服务总线的信息,服务总线 的信息包括服务总线的地址,服务总线代码,服务总线的联通性信息等 等。服务目录中还需存放服务和服务总线的绑定信息。服务目录提供对 服务总线信息、服务和服务总线绑定信息的管理功能。
2. 服务目录上提供根据总线代码和服务代码计算路由的最短路径的功能。
3. 服务调用者调用服务总线时,只需提供服务代码,服务总线査询服务目 录获得路由的最短路径。
4. 服务总线根据最短路径进行路由。
本发明在SOA架构下,部署分布式多级服务总线时,为了避免服务调用者 和服务的紧耦合,使用服务目录而不是服务总线来存放服务总线的联逋性信息,
服务目录提供路由的最短路径计算功能,服务调用者调用服务总线时,只需提供 服务代码,服务总线根据服务代码和本总线的代码来调用服务目录的最短路径计 算功能,获得路由的最短路径,再根据最短路径进行路由。
本发明实现了服务调用者和服务的松耦合;而且用服务目录存放服务总线的 信息和服务绑定服务总线的信息,对整个SOA架构的调整很小,因此具有良好 的兼容性;采用本发明所述的方法,能够减少服务调用者的开发量,不需要对服 务做任何改动;服务目录存放服务总线的信息和服务绑定服务总线的信息,能够 为企业提供一个全局统一的服务总线联通的网状视图, 一目了然,便于管理。
图1是本发明中总线联通性和服务绑定总线的示意图。 图2是本发明所述方法的流程示意图。
具体实施例方式
下面结合附图和实施方式对本发明作详细说明。
图l是本发明中总线联通性和服务绑定总线的示意图。其中,服务总线A、 B、 C相互联通,总线C和总线D、 E联通。如果有调用者想要通过服务总线B 调用服务7,则路由的最短路径为总线B》总线C》总线E》服务7。
本发明的具体实现方法如下
在图2中,假定总线联通性和服务绑定总线如图1所示,有一个服务调用者 想要通过服务总线B调用服务7,过程如下
1. 服务调用者调用服务总线B,输入服务代码7。
2. 服务总线B接收到服务请求后,调用服务目录的最短路径计算功能,输 入两个参数总线代码B和服务代码7。
3. 因为总线的联通性信息和服务绑定总线的信息现在都保存在服务目录 上,服务目录可以根据服务代码7査询出服务7绑定在服务总线E上, 然后根据总线的联通性信息,计算出服务总线B到服务总线E的最短路 径为总线B》总线。>总线E,它把最短路径B.C.E返回给服务总线B。 最短路径中的B、 C、 E是总线B、总线C、总线E的总线代码,用.分 隔。
4. 服务总线B接收到最短路径B.C.E后,判断自己不是此最短路径的最后 一个总线,再判断最短路径中的下个总线是总线C,服务总线B在服务 调用者的请求数据中加入最短路径B.C.E,把最短路径和服务调用者的
请求数据一起发送的服务总线c。
5. 服务总线C接收到请求后,发现请求数据中有最短路径B.C.E,它判断 自己不是此最短路径的最后一个总线,再判断最短路径中的下个总线是 总线E,服务总线E把最短路径和服务调用者的请求数据一起发送的服 务总线E。
6. 服务总线E接收到请求后,发现请求数据中有最短路径B.C.E,它判断 自己是此最短路径的最后一个总线,说明所调用的服务7绑定在自己即 服务总线E上,服务总线E把服务调用者的请求数据发送给服务7。
由此可见,在此过程中,服务调用者只需知道服务代码,而无需关心服务是 否绑定在特定的服务总线上,也不需要知道服务总线的联通性。采用这种方法, 使得在SOA架构下,分布式多级总线服务调用的动态路由真正做到了服务调用 者和服务的松耦合。
由于目前大多数的SOA架构都是把服务总线的联通性信息保存在服务总线 上,由服务调用者自己计算路由的最短路径,从而造成服务调用者和服务的紧耦 合,本发明通过由服务目录计算路由的最短路径,使得服务调用者只需知道服务 代码,而无需关心服务是否绑定在特定的服务总线上,也不需要知道服务总线的 联通性,真正做到了服务调用者和服务的松耦合,可以适用于所有部署分布式多 级服务总线的SOA架构,具有很高的现实意义。
用服务目录存放服务总线的信息和服务绑定服务总线的信息,对整个SOA 架构的调整很小,因此具有良好的兼容性。
采用本发明,能够减少服务调用者的开发量,不需要对服务做任何改动。
服务目录存放服务总线的信息和服务绑定服务总线的信息,能够为企业提供 一个全局统一的服务总线联通的网状视图, 一目了然,便于管理。
权利要求
1、一种SOA架构下多级服务总线的服务调用的动态路由方法,其特征在于它包括以下步骤(1)服务调用者调用指定的服务总线,并输入服务代码;(2)指定的服务总线接收到服务请求后,输入两个参数总线代码和服务代码7,调用服务目录的最短路径计算功能;(3)服务目录根据服务代码查询出该服务代码所绑定的服务总线的位置,然后根据总线的联通性信息,计算出指定的服务总线到所绑定服务总线的最短路径,并把最短路径返回给指定的服务总线;(4)指定的服务总线接收到最短路径后,发现请求数据中有最短路径,则判断自己是不是此最短路径的最后一个总线,如果是,则说明所调用的服务代码绑定在自己所在的服务总线上,该服务总线把服务调用者的请求数据发送给服务调用者所在的服务代码处;如果不是,再判断最短路径中的下个总线代码,指定的服务总线在服务调用者的请求数据中加入最短路径,把最短路径和服务调用者的请求数据一起发送到最短路径中的下个服务总线,回到步骤(4),进行循环操作。
2、 根据权利要求1所述的SOA架构下多级服务总线的服务调用的动态路由方法,其 特征在于步骤(2)中的服务目录存放服务信息、服务总线的信息、放服务和服务总线 的绑定信息,其中,服务总线的信息包括服务总线的地址、服务总线代码、服务总线的联 通性信息;服务目录对服务总线信息、服务和服务总线绑定信息进行管理。
全文摘要
本发明公开了一种在SOA架构下分布式多级服务总线的服务调用的动态路由方法,该方法使用服务目录而不是服务总线来存放服务总线的联通性信息,服务目录提供路由的最短路径计算功能,服务调用者调用服务总线时,只需提供服务代码,服务总线查询服务目录获得路由的最短路径,再根据最短路径进行路由。本发明能够使服务调用者和服务真正的松耦合,避免服务调用者和服务的紧耦合,使用服务目录而不是服务总线来存放服务总线的联通性信息。本发明具有良好的兼容性;能够为企业提供一个全局统一的服务总线联通的网状视图,便于管理。
文档编号H04L12/56GK101179505SQ20071019152
公开日2008年5月14日 申请日期2007年12月12日 优先权日2007年12月12日
发明者丁一新, 张德进, 赵俊峰 申请人:江苏省电力公司