路由数据的方法和装置的制作方法

文档序号:7972644阅读:273来源:国知局
专利名称:路由数据的方法和装置的制作方法
技术领域
本发明一般地涉及网络、分布式应用系统和面向应用的连网。更具体地,本发明涉及用于通过网络将请求路由到分布式应用的方法和装置。
背景技术
针对计算机通信的国际标准组织(ISO)开放系统互连(OSI)模型包含七层(1)物理层、(2)数据链路层、(3)网络层、(4)传输层、(5)会话层、(6)表示层和(7)应用层。该模型的目的是提供计算机网络,借此可以连接终端系统(客户机、主机、节点、服务器等)来交换信息。一般地对所有人可用的泛在网络已经被称为因特网,而限制性更强的网络被称为内联网。与已被典型地用于公共电话网中的电路交换技术相比,这些类型的网络典型地使用分组交换技术在端点之间传输信息。
作为在两个通信点之间建立专用通信线路的替代,分组交换鼓励共享通信链路。在分组交换中,待传输的信息被分成片,每一片通过通常由连接迷宫组成的网络独立传输。每一片被称为分组,它是可以通过网络传输的最小信息单元。所有传输一个统一信息实体所需的分组不必要必须采用从源到目的地的相同路径,在电路交换网络中就是这种情况。
因此,当使用分组交换时,在源端或其附近,信息被分解为数据分组;每一个数据分组通过网络独立地流动;并且在目的地或其附近,数据分组被重新组合,以产生在源端被分派的原始信息。
OSI网络和传输层的常规实施分别是传输控制协议(TCP)和网际协议(IP),合称为TCP/IP。TCP在端到端的基础上控制信息流,比如在两个终端系统之间。IP在逐跳基础上控制信息流,比如在当分组从初始节点到最终目的地节点遍历网络时其访问的节点(或系统)序列中的两个中介之间。IP层提供无连接的、不可靠的分组传递。TCP层使用IP层来提供可靠、虚拟的电路。
在网络层,经常使用路由器来做出关于分组在网络之间移动所采用的路径的决策。路由器根据四种基本算法类型做出路由决策静态路由;分离动态路由;集中式动态路由和分布式动态路由。在所有情况下,所述算法追求优化面向网络的属性,例如网络性能、网络吞吐量,网络服务质量等等。
在现有技术中相对较新,但仍然已知的是用于以感知内容方式来路由请求的方法。这些技术不仅仅考虑网络拓扑和网络相关问题(网络性能、网络可靠性等等),并且还考虑所传送的净荷-比如应用层属性。
软件应用(例如按需路由器(ODR))作为客户机和服务器中间的中介,提供检查各请求并且根据策略和按照度量来路由每个请求的能力。该软件路由器为在合格的服务器池之间进行所考虑的请求的分发提供基本值,以获得想要的结果,比如改善的应用层性能、满足应用层服务协议质量、加强应用层安全边界等等。
按需路由器被认为是一种代理,即一种特定类型的应用服务器,其把HTTP请求路由到接着执行工作的应用服务器。应用服务器被包括在软件中。参见http//publib.boulder.ibm.com/infocenter/wxddoc51/index.jsp?topic=/com.ibm.wasxd.doc.todoecnfgodr.html。
一不可编程的流量管理器(就像它的软件对应部分ODR)具有内嵌的负载均衡算法,基于该算法可以做出路由决策,比如最快传送用户连接到响应最快的可用服务器;轮询按照预定的次序把流量发送到下一个可用的服务器;最少连接把用户连接到具有最少数目的当前连接的服务器;比率根据为各种因子(例如服务器容量)分配权重的系统,对最适合请求的服务器来执行“比率计算”。
参见http//www.f5.com/f5products/products/bigip/ltm/lb1.html。一可编程的流量管理器允许(例如)在用户定义的算法基础上做出决策。对路由器的编程被留下为用户练习。
然而,虽然这些解决方案是有利的,但是它们可以被大幅度提高。软件路由器获取和维护成本昂贵,常常配置复杂,不是标准化的,与固件/硬件路由器相比一般来说执行起来很慢。此外,该专有软件路由器使得实际上不可能同时使用多于一家厂商的服务器和路由器平台。

发明内容
一个突出的优点是,本发明没有上述的任何限制。本发明使得对可编程流量管理设备的使用更加便利,以便仅通过专用软件解决方案(例如按需路由器)来产生之前可获得的结果。通过这些操作,实现了现有技术的所有优点,此外还实现了新的且理想的特征,包括改善的性能;降低的成本;增强的灵活性和互换性;应用层中间件所引导的路由;和用于路由可调节性的应用层反馈。
本发明是对可编程路由器(以硬件或软件实现)进行编程的一种方式,所以应用自身(或某些代表或委托)通过面向应用指令来控制路由。本发明是与使用软件或硬件或固件或以上某种组合的实现都无差别的路由器。任意可编程路由器就已足够。重要的是,路由器实现提供一个可编程接口,因此引入的请求根据用户/应用所提供的、考虑面向应用指令的算法而被路由。
本发明的一个方面是提供考虑面向应用指令的流量管理算法。根据本发明,后端群集把“可执行代码”馈送到路由器中,而不是馈送运行时状态信息到预定义的路由算法。本发明提供把算法本身插进到路由器。通过使中间件/应用如此插进算法,路由器可以更容易地执行面向应用的路由任务。
根据下面对图示实施例的详细描述,并与附图结合起来阅读,本发明的教导将会变得清晰。


图1是示出通过根据应用期望进行编程的流量管理器,把请求路由到分布式应用的运行时体系结构的图。
图2是示出对流量管理器进行编程的方法的图。
图3是示出根据外部应用的配置标准进行流量管理器请求路由的方法的图。
具体实施例方式
下面将通过使用以基于因特网的客户机-服务器模型为主题的图示例子来描述本发明。然而,应该理解的是,本发明不是仅限于此,对于任意基于请求的环境都是适用的,借此,面向应用的路由能力是所希望的。
“面向应用的或应用层指令”可能是应用响应于某种刺激而产生的自主反射。例如,如果应用确定其服务质量标准在节点A上无法满足,但在节点B上远超过要求,则它可产生“面向应用的指令”把所选应用预定的流量从节点A路由到节点B。
首先参考图1,根据本发明的实施例示出了一种体系结构。客户机提交用于处理的多个请求110。所述请求可来源于不同的客户机集合(个人计算机、个人数字助理、蜂窝电话等等),并且可通过多种路径(无线和/或有线通信、内联网、因特网、广域网、局域网等等)发现它们到数据中心的路径以便进行处理。本发明没有被限制在任一特定通信网络。
客户机请求110也可来源于托管应用服务器的节点。应用服务器150-152可包括托管一个或多个应用的通用服务器。节点140-142可托管一个或多个应用服务器150-152。请求可以或可以不导致被返回请求者的信息。尽管为了清楚,下文的例子描述了一种可以应用本发明来路由客户机发起的HTTP请求到处理此类请求的服务器上的应用,但是本发明对请求类型、节点140-142的类型或者处理请求的应用服务器150-152没有要求。
在某些边界条件下,继任何外部路由之后,客户请求110到达流量管理器120。流量管理器120负责路由每一个到达请求到在群集130中的对应节点140-142上部署的多个应用实例150-152。根据本发明的实施例,通过咨询已编程规则,流量管理器120将每个客户机请求110路由到所希望的应用实例150-152。已编程规则是可被应用本身和/或被其他合适的供应者指定的可执行策略(指令)。
应该理解的是,本发明不会被限制在出于说明目的而提供的任意特定的配置,比如图1所图示的那样。例如,多个流量管理器120或多个群集130可能被利用。本领域技术人员可以容易地预期到这些和其他合适的配置。
可编程流量管理器120被赋予了多种能力。通过已公布的应用程序接口(API),它能接收和存储支配它应该如何路由请求的规则。此外,在请求处理期间,流量管理器120能够读取、解释和应用这些规则,这些规则在到达请求的特定内容方面,指导流量管理器120来进行检查,以便用来确定将每个请求路由到哪里。流量管理器120按照已编程规则和每个请求的内容来相应地路由每个请求。
在没有已编程规则的情形中,流量管理器120不具备智能。也就是说,流量管理器120不知道如何检查或路由请求,直到向它提供了指导它行为的一个或多个规则。与现有技术在TCP/IP网络和传输层进行路由无法考虑应用层路由不同,本发明根据目标应用的需要和要求来使得用于引导网络流量的已编程规则更便利。也就是说,本发明通过对流量管理器进行基于规则的编程来提供应用层(或面向应用)的路由。
例如,最初应用A可能希望对交易IBM股票的请求被引导至节点1上的应用A实例。稍后应用A可提供新的规则,因此新到达的对交易IBM股票的请求被引导至节点2上的应用A实例。“目标应用程序的需要和要求”被包括在当前有效的应用所提供的算法(规则)集合中。应用提供的算法可以和能够通过其API接受它的可编程路由器一样简单或复杂。应用提供的算法可以在它允许的程度上检查到达可编程路由器的请求的内容(考虑到请求应该被路由到的地方)。应用本身不是必须直接提供该算法,而是代理或代表可以这样做。
被编程到流量管理器120中的应用层规则实际上可以是静态的或动态的。应用层已编程规则一旦被设置后就会保持长时期不变,或者它们可能频繁变化。路由改变的控制可直接来自应用,或来自应用监视器,或来自应用分析器,或来自应用代理和/或其他实体。应该理解的是,本发明不被限制在任意特定的应用层路由控制权限。
作为将被通篇使用的具体例子,假设目标应用程序是股票报价服务器,客户机基于用户输入的订单代号就能够请求股票报价。客户机可以发布HTTP请求110来获得对于订单代号IBM的股票报价。另外,假设任意应用A实例150都可以满足IBM股票报价请求。在某些情况下,下述情况是理想的,即在能够对报价请求进行服务的多个应用A实例150中轮询每一个客户机发起的IBM股票报价请求110。但是在某些情况下,下述情况可以是理想的,即把所有这些请求110路由到恰好一个应用A实例,即在节点1(140)上运行的应用A实例。
可编程流量管理器120能够询问每一个请求来获得一个或多个属性,比如与请求相关联的股票订单代号,以及相应地应用已编程规则以确定目的地节点。已编程规则可以动态地变化,以影响修改过的路由决策,比如把原来指定为节点1(140)的请求重新路由到节点2(141)。
在用于在应用实例150-152中划分请求110的本发明的一实施例中,为应用提供了用于通过一个或多个正则表达式(RE)来指示所希望的路由的功能,这在本领域内是公知的。例如,应用可指定RE,因而所有股票订单代号为IBM的请求被路由到运行在节点1(140)上的应用实例A(150)。面向应用的路由信息(无论是静态或动态的、一维还是多维的)都可以通过可扩展标记语言(XML)数据和/或API调用来指定。这些数据包括度量和策略160。
本发明对可以被考虑为度量和策略160的静态和动态的、面向应用的数据类型没有限制。这些数据本身不必被限制于应用。度量可包括可用的磁盘空间、CPU利用、存储器利用、优先级以及在应用层、系统层或某些其他抽象层上的无数其他尺度。策略可指向一个或多个应用。独立的策略可适用于多个应用。
本发明的一个重要方面是能够将适当形成的可执行策略部署在路由器(流量管理器120)中。该新颖的方面极大地提高了技术状态,例如对于某公知的策略,框架可以简单地更新状态变量。由于所部署的人工算法实际上是可执行的,所以本发明在做出运行时路由决策时提供了非常高级的灵活性和表达。
在被规则管理器180转换到合适的形式后,路由调度器170提供了用于被部署在一个或多个流量管理器120上的应用策略和度量160的工具。
在影响路由期间,路由调度器170可接收面向应用的反馈。继续上述例子,假设初始股票订单代号已被划分,因而IBM股票报价请求110被一个或多个流量管理器120引导到节点1(140)上的应用A 150来进行服务。在某些情况下应用决定把IBM分段转移到节点2(141),可能是试图获得改善的响应时间。该修改过的应用度量和策略160信息被提供给路由调度器170,该路由调度器170接着使用规则管理器180把相应进行升级的规则转换并部署到一个或多个流量管理器120。随后,到达所述重新编程的流量管理器120的IBM股票报价请求110被引导到节点2(141)来服务。
在一特定的实施例中,F5 BIG-IP应用管理流量设备被用作流量管理器120。包括指示分段名IBM的串的单一的度量160以及用来从每个请求110中提取股票订单代号的单一的策略160被使用。路由调度器170使用规则管理器180来阐明被部署到流量管理器120的已编程规则,因而订单代号为IBM的股票报价请求被路由到节点1(140)。
应该理解的是,本发明不被限制在任意特定的流量管理器实现。应该进一步理解的是,本发明没有受到用来控制流量管理器行为的已编程规则的使用的限制。本领域技术人员可以容易地使用其他合适的可变性机制,比如用来代替或补充已编程规则的数据库或实用分类系统。
本发明通过其面向应用的路由能力,使自己在服务质量网络路由和TCP/IP分布式应用网络路由两个方面与众不同。原有的这些技术都不提供准确应用所引导的路由所必要的控制类型。
现在参考图2,图示了对流量管理器进行编程的方法。一种或多种格式的来自一个或多个面向应用的源的多种度量和策略210-250被递交给路由调度器170。例如,这些源可包括被附加到规定应用策略的应用上的XML数据和被附加到描述系统属性的系统上的XML数据。该面向应用的信息可被路由调度器推送或拉动。面向应用的度量和策略信息可以在每次部署时汇编一次,或可以始终运行。路由调度器编译面向应用的度量和策略,以到达已估计的、面向应用的、所希望的路由。在正在运行的、可动态调整的路由的情况下,随着更多信息的到达,这些信息被编译,以生成新的面向应用的、所希望的路由估计。
面向应用的度量和策略包括面向应用的指令。这些指令可包括应用层度量和策略,例如,对诸如“IBM”、“GE”、和“EBAY”这样的股票订单代号的定义,以及对应的、所希望的交易响应时间;系统层度量和策略,例如每个节点上的应用CPU消耗限制;以及企业层度量和策略,例如在全企业中被分配给每个应用的存储器相对份额。
面向应用的度量与应用运行所基于的系统相比,可以更加是应用所关注或有用的度量。例如,股票订单代号可以对一个应用有用,但很可能对系统和其他应用不是所关心的或有用的。非面向应用的度量可以是系统度量,例如CPU占用率。
面向应用的路由策略是受应用影响或引导的路由策略,而不仅仅是受系统影响或引导的。例如,系统负载均衡策略可把每个新到达请求路由到CPU占用率最低的节点,而不管正在那些节点上运行的应用的需要和要求。因此,面向应用的路由策略可把IBM股票交易请求路由到节点1,把GE股票交易请求路由到节点2。
在前一种情况下,由于每个IBM股票交易请求可被发送至不同的节点,则应用可能不能使用主动式高速缓存技术。在后一种情况下,由于知道所有IBM股票交易请求将会到达节点1,则应用可使用主动式高速缓存技术。
下面是路由用户的股票交易请求的、面向应用的策略的XML表示。IBM股票交易请求将会被路由到节点1,而GE股票交易的请求将会被路由到节点2,等等。
<策略StockTicker=IBM Node=1/>
<策略StockTicker=GE Node=2/>
<策略StockTicker=EBAYNode=3/>
<策略StockTicker=GOOGNode=4/>
下面示出了XML格式的用于路由用户的IBM股票交易请求的策略的另一例子,在此情况下为动态策略。在此情况下,路由器将尝试只把请求路由到响应时间小于0.5秒的节点。
<策略StockTicker=IBM ResponseTime<0.5sec/>
路由调度器170可作为Java程序来实现,该Java程序对应用提供的度量和策略进行分析,以产生一个或多个路由请求方案。比如,分析器可确定大量的IBM和eBay股票交易请求正在到达,而相对少量的GE和Google交易请求也在到达。另外,应用可具有高优先级的最小化队列延迟的策略。分析器可确定最佳方案是把IBM和GE股票交易请求路由到节点1上的应用A,并且把eBay和Google股票交易请求路由到节点2上的应用A。
规则管理器180可作为Java程序来实现,该Java程序依照其API,把路由调度器170产生的方案转换成可编程路由器(即,流量管理器120)可执行的形式。例如,在一实现中,路由调度器170产生一个或多个在本领域中公知的正则表达式(RE),作为将由路由器来执行的、路由规则的表示。规则管理器180接受所述一个或多个RE并且把其转换成(如果有必要的话)流量管理器120所识别的形式,然后调用相应的流量管理器120API来添加和/或修改和/或移除它在运行时所执行的路由规则,以对到达的应用服务请求进行路由。
在一实施例中,路由调度器170是Java程序,该Java程序简单地接受XML格式的被指定为RE的应用策略,并将其按原样传递到规则管理器180。在另一实施例中,Java程序通过应用指定的API检索使用对应用特定的格式指定的应用策略,然后在所述应用策略被传送到规则管理器180之前使用一个或多个插入式组件把策略和度量的表示转换成常用形式。
一旦已达到面向应用的所希望的估计,路由调度器170就使用转换器180来产生可部署的规则。路由调度器也可以通过预订或按需请求直接地或通过某种中介把面向应用的、所希望的路由估计传递给其他感兴趣方,例如应用管理器265。一旦被转换,所述规则就可以被部署,以便配置流量管理器120。
“面向应用的、所希望的路由估计”是应用所希望的路由,这可能在实际中是不可行的。例如,一个“估计”可以把IBM股票交易请求路由到节点1,并且把GE股票交易请求路由到节点2。然而,当请求到达时,节点1可能已经停机。在这种情况下,请求可被路由到另一个用于服务的节点,而不是应用所希望的那一个。
流量管理器120期望特定的格式的路由规范,以便根据它的API进行编程;并且应用可指定和流量管理器所理解的格式不精确匹配的格式的策略;并因而规则管理器180在这些格式之间进行转换。然后流量管理器120接收并实现由规则管理器部署的、面向应用的路由规范。
例如,应用所指定的一种特定格式是XML的正则表达式,这些正则表达式被转换成适合于F5的流量管理器使用的格式,并且这些正则表达式通过调用流量管理器的API来部署,以加载转换后的RE。
现在参考图3,图示了根据外部应用的配置标准进行流量管理器请求路由的方法。流量管理器接收请求(310),并按照规则管理器180产生的所生成规则配置将其路由到合适的应用实例(320)。
外部应用的配置标准可包括控制对请求的路由如何发生的算法(或“规则”),所述配置标准在路由器之外被适当地构造,然后通过路由器的API被馈送到路由器中。
根据流量管理器120的API,规则管理器180的输出被传递给流量管理器120。然后,对于此后所有适用的对请求的路由,流量管理器使用这样所传递的添加/改变/删除。
虽然以上所述的内容涉及本发明的图示实施例,但可以在不偏离本发明基本范围的情况下设计出本发明的其他和进一步的实施例。
权利要求
1.一种在具有多个节点的通信网络中通过所述网络路由数据的方法,所述方法包括使用至少一个应用层指令对可编程流量管理器进行编程;以及使用所述可编程流量管理器,通过所述网络路由所述数据,其中根据所述应用层指令对所述数据进行路由,并且其中所述可编程流量管理器使得所述数据被路由到所述节点中的一个。
2.根据权利要求1的方法,其中所述节点是托管应用的服务器,并且所述数据是来自客户机的请求。
3.根据权利要求1的方法,其中所述应用对所述流量管理器进行动态地编程。
4.根据权利要求1的方法,其中下列中的至少一个建立所述应用层指令应用、应用监视器、应用代理和应用分析器。
5.根据权利要求1的方法,其中所述应用层指令使用下列中的至少一个应用层度量、系统层度量和企业层度量。
6.根据权利要求1的方法,其中所述应用层指令包括下列中的至少一个应用层策略、系统层策略和企业层策略。
7.根据权利要求1的方法,其中所述应用层指令对所述数据进行询问,以获得至少一种属性,以确定所述数据将被路由到的一个所述节点。
8.根据权利要求1的方法,其中通过应用程序接口对所述可编程流量管理器进行动态地再编程,用来对所述应用层指令进行动态再配置。
9.根据权利要求8的方法,其中所述再编程导致路由目的地针对所述数据的改变。
10.根据权利要求1的方法,其中至少一个应用层指令包括被指定为至少一个正则表达式的策略和度量。
11.一种用于使用可编程流量管理器将请求路由到多个服务器的、面向应用的路由方法,所述方法包括以下步骤使用至少一个应用层度量和至少一个面向应用的策略来估计至少一个请求路由;把所述所估计的路由转换成适合于所述可编程流量管理器的形式;把所述转换后的所估计路由部署到所述可编程流量管理器上;以及根据所述已部署的估计路由,通过所述可编程流量管理器路由至少一个请求。
12.一种数字处理装置可读并具有指令程序的程序存储设备,所述指令程序有形地包括在所述存储设备上,并且可被所述处理装置执行用来执行通过通信网络路由数据的方法,所述方法包括使用至少一个应用层指令对可编程流量管理器进行编程;以及使用所述可编程流量管理器,通过所述网络路由所述数据,其中根据所述应用层指令对所述数据进行路由,并且其中所述可编程流量管理器使得所述数据被路由到所述节点中的一个。
13.一种用于在具有多个节点的通信网络中路由数据的装置,所述装置包括可编程流量管理器;以及通过至少一个应用层指令对所述流量管理器进行编程的处理器,其中所述已编程的流量管理器使得所述数据被路由到所述节点中的一个。
全文摘要
一种用于通过通信网络路由数据的方法、装置和已编程存储设备。更具体地,使用至少一个应用层指令对可编程流量管理器进行编程,并且使用所述可编程流量管理器通过网络把数据路由到网络节点中的一个,根据应用层指令对所述可编程流量管理器进行编程。在本发明的一个特定的例子中,可编程流量管理器把来自客户机的请求路由到多个托管应用的服务器中的一个,在所述服务器中,所述可编程流量管理器根据应用层指令被路由。
文档编号H04L29/08GK1933452SQ20061015380
公开日2007年3月21日 申请日期2006年9月12日 优先权日2005年9月13日
发明者L·R·迪根那罗, A·F·罗德里格兹 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1