用于可扩展和冗余电信系统的进程间通信方法和装置的制作方法

文档序号:7937931阅读:193来源:国知局
专利名称:用于可扩展和冗余电信系统的进程间通信方法和装置的制作方法
技术领域
本公开总体上涉及电信系统。更具体地,本公开涉及用于构建可扩展/ 冗余电信系统的进程间通信方法和装置。
背景技术
当构建分布式和冗余电信系统时,某种消息层被用于提供进程间(或 线程间)通信。这允许分布式的软件有限状态机进行通信以便提供服务。 . 典型的消息系统提供一种在部件之间发送点对点消息的方式。有时提 供多播或广播消息的能力,但并非总是提供。
许多进程间通信方案也是特定的操作系统和/或背板(backplane)。 这使得难于移植它们的服务并影响该系统的整个软件架构,因为消息传送 通常是基本的服务,它是编写所有其他软件的基础。
许多其他的系统提供诸如名称解析、网络时间分布、和位于消息传送 之上的作为另一应用的分布式心跳分层这样的服务。这也导致处理中的低 效率。


图1说明了在分布式计算系统中实现的消息系统的一个示例; 图2说明了示出软件部件可以如何向消息系统注册的一个示例; 图3说明了示出消息实体可以如何促成在注册的软件部件之间的单播 通信的一个示例;
图4说明了示出软件部件可以如何为多播事件进行注册的一个示例;
11图5说明了示出消息实体可以如何促成在注册的软件部件之间的多播
通信的一个示例;
图6说明了可以由消息服务器所执行的一些功能;
图7说明了可以由消息服务器所执行的进程间通信方法的一个示例;
图7A说明了对应于图7的方法的装置加功能框;
图8说明了可以由消息实体所执行的进程间通信方法的一个示例;
图8A说明了对应于图8的方法的装置加功能框;
图9-11说明了示出可以如何实现本文描述的消息系统的数个示例;
图12说明了用于促成在分布式计算系统中的软件部件之间的进程间通
信的装置的部分硬件实现。
具体实施例方式
公开了用于进程间通信的装置。该装置可以用作消息系统中的消息实 体。该装置可以包括处理器和耦合到所述处理器的电路。该电路可以被配 置为促成由软件部件向该消息系统的注册,促成在注册的软件部件之间的 单播通信,促成由软件部件为多播事件进行的注册,以及促成在注册的软 件部件之间的多播通信。
公开了用于进程间通信的装置。该装置可以用作消息系统中的消息服 务器。该装置可以包括处理器和耦合到所述处理器的电路。该电路可以被 配置为在分布式计算系统中发现新的消息客户端,验证注册的消息客户端 在运行,保持注册的消息客户端之间的同步,管理资源位置高速缓存的主 版本,以及管理多播注册数据结构的主版本。
公开了可以由消息系统中的消息实体所执行的用于进程间通信的方 法。该方法可以包括促成由软件部件向该消息系统的注册。该方法还可以 包括促成在注册的软件部件之间的单播通信。该方法还可以包括促成由软 件部件为多播事件进行的注册。该方法还可以包括促成在注册的软件部件 之间的多播通信。
公开了可以由消息系统中的消息服务器所执行的用于进程间通信的方 法。该方法可以包括在分布式计算系统中发现新的消息客户端。该方法还 可以包括验证注册的消息客户端在运行。该方法还可以包括保持这些注册
12的消息客户端之间的同步。该方法还可以包括管理资源位置高速缓存的主 版本。该方法还可以包括管理多播注册数据结构的主版本。
公开了包含被配置为促成分布式计算系统中软件部件之间的进程间通 信的消息实体的硬件单元。该消息实体可以包括被配置为促成由软件部件 向该消息系统注册的注册部件。该消息实体还可以包括被配置为促成在注 册的软件部件之间的单播通信的资源位置服务器。该消息实体还可以包括 被配置为促成由软件部件为多播事件进行的注册的多播注册部件。该消息 实体还可以包括被配置为促成在注册的软件部件之间的多播通信的多播通 信部件。
公幵了包含被配置为促成分布式计算系统中软件部件之间的进程间通 信的消息服务器的硬件单元。该消息服务器可以包括被配置为在分布式计 算系统中发现新的消息客户端的客户端发现部件。该消息服务器还可以包 括被配置为验证注册的消息客户端在运行的验证部件。该消息服务器还可 以包括被配置为保持注册的消息客户端之间的同步的同步部件。该消息服 务器还可以包括被配置为管理资源位置高速缓存的主版本的高速缓存管理 器。该消息服务器还可以包括被配置为管理多播注册数据结构的主版本的 多播注册管理器。
还公开了包含被配置为促成分布式计算系统中软件部件之间的进程间 通信的消息实体的装置。该消息实体可以包括用于促成由软件部件向该消 息系统注册的模块。该消息实体还可以包括用于促成在注册的软件部件之 间的单播通信的模块。该消息实体还可以包括用于促成由软件部件为多播 事件进行的注册的模块。该消息实体还可以包括用于促成在注册的软件部 件之间的多播通信的模块。
还公开了包含被配置为促成分布式计算系统中软件部件之间的进程间 通信的消息服务器的装置。该装置可以包括用于在分布式计算系统中发现 新的消息客户端的模块。该装置还可以包括用于验证注册的消息客户端在 运行的模块。该装置还可以包括用于保持这些注册的消息客户端之间的同 步的模块。该装置还可以包括用于管理资源位置高速缓存的主版本的模块。 该装置还可以包括用于管理多播注册数据结构的主版本的模块。还公幵了用于促成分布式计算系统中软件部件之间的进程间通信的计 算机程序产品。该计算机程序产品可以包括在其上具有指令的计算机可读 介质。这些指令可以包括用于促成由软件部件向该消息系统的注册的代码。 这些指令还可以包括用于促成在注册的软件部件之间的单播通信的代码。 这些指令还可以包括用于促成由软件部件为多播事件进行的注册的代码。 这些指令还可以包括用于促成在注册的软件部件之间的多播通信的代码。
公开了用于促成分布式计算系统中软件部件之间的进程间通信的计算 机程序产品。该计算机程序产品可以包括在其上具有指令的计算机可读介 质。这些指令可以包括用于在分布式计算系统中发现新的消息客户端的代 码。这些指令还可以包括用于验证注册的消息客户端在运行的代码。这些 指令还可以包括用于保持注册的消息客户端之间的同步的代码。这些指令 还可以包括用于管理资源位置高速缓存的主版本的代码。这些指令还可以 包括用于管理多播注册数据结构的主版本的代码。
本公开涉及提供能够单播和多播(包括广播)消息的消息层的分布式 软件架构。该消息系统能够隐藏该系统的分布式性质,提供用于将逻辑名 解析成物理地址的方法,以及向分布式模块分布网络时间并验证这些分布 式模块是否仍然在运行。
本文描述的一些方案的优势是能够被移植到许多不同的系统(例如,
*NIX、 Sun Solaris、 RTOS、 DSP)的消息系统,以提供能够隐藏该系统的 分布式性质的公用软件层。这提供了一种灵活的软件架构。在没有任何其 他部件的信息的情况下,指定的软件部件能够在所述硬件/软件架构中移 植。
本文描述的消息系统可以提供单个的统一的接口,以提供在软件部件 之间执行单播、多播或广播消息中的至少一种的能力。此外,单播、多播 或广播消息中的至少一种能够得到确认。发送方或许不知道多播消息接收 方。这将多播消息的发送方与接收方去耦。该去耦允许构建一种非常灵活 的软件架构,该软件架构能够很好地演进。接收方可以在不需修改发送方 的情况下自由地来去。这很适合于事件驱动有限状态机软件开发模型。
该消息系统中的所有或数个软件部件可由逻辑名来识别。可以当软件 部件向该消息系统注册时在运行期间构建逻辑名的系统范围位置。该注册可以导致新的条目进入名字高速缓存。当将新的条目添加进该名字高速缓 存时,也可以将它们向能够运行该消息软件的所有硬件实体进行广播。每 当该高速缓存被修改时,序列号可以增加以表明该高速缓存的当前级别。 该序列号可以用在心跳操作中以确保所有的硬件实体都具有一致的名字高 速缓存。为了效率,名字高速缓存的更新可以是全部的或者是渐进的。该 消息系统可以被配置为尝试渐进更新,除非请求方太过时以致于全部更新 将更快。
发送给特定部件的所有消息可以使用该部件的逻辑名。当对所述消息 进行用于发送的处理时,该消息系统自身可以将该逻辑名解析成物理位置。 该特征隐藏了该系统的分布式特性并允许将部件在该系统中进行移动而不 影响任何软件。
当被用在分布式硬件架构上时,所述消息层还可以提供"心跳"机制 以确保所有需要的部件都回应。该心跳消息可以包括主网络时间、以及代 表所述名字高速缓存的整数。该网络时间可被用于时间同步该系统中的所 有实体。所述名字高速缓存序列号可用于确定是否每个从高速缓冲器都是 最新的。被确定为过期的高速缓存可以请求全部的或渐进的更新以重新与 主高速缓存同步。
所述消息层还可以是可配置的以允许它在单操作系统类型的环境中
(诸如基于Sim Solaris的服务器)或者在分布式多CPU环境典型电信设 备中使用。该性能允许在某个环境中写的软件仅仅重新编译就可以在不同 的环境中使用。该性能给予在所述消息层上构建的软件很高水平的可移植 性。
图1示出了分布式计算系统100。分布式计算系统100包括多个硬件单 元102,硬件单元102通过通信总线104相互进行电子通信。硬件单元102 可以用在电信和数据通信设备中。例如,硬件单元102可以是包含在路由 器、交换机、基站等中的各种处理模块或板。硬件单元102包括各种一起 工作以执行一个或多个任务的软件部件106。
消息系统108在分布式计算系统100中实现。消息系统108包括消息 服务器110a和一个或多个消息客户端110b。本文中术语"消息实体"110 可用于指代消息服务器110a或者消息客户端110b。消息系统108允许分布式计算系统100中的软件部件106相互通信。 软件部件106可以是有限状态机,而消息系统108的目的可以是使通信的 有线状态机保持同步。
软件部件106之间的通信可以是单播、多播或广播。有利地,消息系 统108能够隐藏分布式计算系统100的分布式特性。可以由逻辑名而不是 物理地址来识别分布式计算系统100中的软件部件106。这样,软件部件 106能够相互通信而不必考虑在分布式计算系统100拓扑中的它们的各自位 置。
消息服务器110a管理资源位置高速缓存的主版本114a和多播注册数 据结构的主版本116a。每个消息客户端110b与资源位置高速缓存的本地副 本114b和多播注册数据结构的本地副本116b —起工作。
每个消息实体110 (即,消息服务器110a或者消息客户端110b)可以 被配置为允许分布式计算系统100中的软件部件106向消息系统108注册。 每个消息实体110也可以促成在注册的软件部件106之间的通信。
除了执行这些功能,消息服务器110a也可以被配置为在分布式计算系 统100中发现新的消息客户端110b。消息服务器110a也可以验证注册的消 息客户端110b是否在运行。消息服务器110a也可以保持在注册的消息客 户端110b之间的同步。消息服务器110a还可以管理资源位置高速缓存的 主版本114a和多播注册数据结构的主版本116a。
图2示出了软件部件106可以如何向消息系统108注册的一个示例。 软件部件106可以向消息服务器110a发送注册消息222。注册消息222可 以包括软件部件106的物理地址224。注册消息222还可以包括软件部件 106的逻辑名226。注册消息222还可以包括逻辑名226的一个或多个别名 228。
响应于接收到注册消息222,消息服务器110a可以在资源位置高速缓 存的主版本114a中为软件部件106创建条目230。条目230可以将软件部 件106的物理地址224、软件部件106的逻辑名226、逻辑名226的别名228
关联起来。
消息服务器110a还可以向消息系统108中的所有消息客户端110b发 送广播消息232。广播消息232可以包括被添加到资源位置高速缓存的主版本114a的条目230。响应于接收到广播消息232,每个消息客户端110b可 以更新它的资源位置高速缓存的本地副本114b,以便包括已经被添加到资 源位置高速缓存的主版本114a的条目230。
示出的消息服务器110a具有注册部件234。注册部件234可以被配置 为促成由软件部件106向消息系统108的注册。更具体地,注册部件234 可以被配置为处理注册消息222,向资源位置高速缓存的主版本114a添加 适当的条目230,以及向消息系统108中的所有消息客户端110b发送具有 条目230的广播消息232。
在图2的示例中,软件部件106向消息服务器110a发送注册消息222。 可替换地,软件部件106可以向消息客户端110b发送注册消息222,并且 消息客户端110b可以向消息服务器110a转发相关信息(例如,物理地址 224、逻辑名226和别名228)。
图3示出了消息实体110 (即,消息服务器110a或者消息客户端110b) 可以如何促成在注册的软件部件106之间的单播通信的一个示例。在该示 例中,将假设消息系统108中的软件部件106a发送最终被消息系统108中 的另一软件部件106b所接收的消息336。然而,发送方软件部件106a并不 需要知道接收方软件部件106b的物理地址224。相反地,由发送方软件部 件106a所发送的消息336的目的地由软件部件106b的逻辑名226来识别。
当接收到来自发送方软件部件106a的消息336时,消息实体110将接 收方软件部件106b的逻辑名226解析成接收方软件部件106b的物理地址 224。这可以通过参考资源位置高速缓存114 (如果消息实体110是消息服 务器110a则参考资源位置高速缓存的主版本114a,或者如果消息实体110 是消息客户端110b则参考资源位置高速缓存的本地副本114b)来实现。然 后,消息实体110可以向接收方软件部件106b转发消息336。
示出的消息实体110具有资源位置服务器340。资源位置服务器340可 以被配置为促成在注册的软件部件106之间的单播通信。更具体地,资源 位置服务器340可以被配置为处理来自发送方软件部件106a的消息336, 将接收方软件部件106b的逻辑名226解析成接收方软件部件106b的物理 地址224,以及向接收方软件部件106b转发消息336。接收方软件部件106b可以确认消息336的接收。接收方软件部件106b 可以向消息实体110返回确认消息338。消息实体110可以向发送方软件部 件106a转发确认消息338。
消息系统108可以促成分布式计算系统100中的软件部件106之间的 多播通信。图4示出了软件部件106可以如何为多播事件进行注册的一个 示例。
软件部件106可以向消息服务器110a发送多播注册消息442。多播注 册消息442可以包括软件部件106的物理地址224。多播注册消息442还可 以包括软件部件106正在注册的多播事件的逻辑名444。
响应于接收到多播注册消息442,消息服务器110a可以在多播注册数 据结构的主版本116a中为软件部件106创建条目446。条目446可以将软 件部件106的物理地址224和软件部件106正在注册的多播事件的逻辑名 444关联起来。
消息服务器110a还可以向消息系统108中的所有消息客户端110b发 送广播消息448。广播消息448可以包括被添加到多播注册数据结构的主版 本116a中的条目446。响应于接收到广播消息448,每个消息客户端110b 可以更新它的多播注册数据结构的本地副本U6a,以便包括已经被添加到 多播注册数据结构的主版本116a的条目446。
示出的消息服务器110a具有多播注册部件450。多播注册部件450可 以被配置为促成由软件部件106为多播事件进行的注册。更具体地,多播 注册部件450可以被配置为处理多播注册消息442,向多播注册数据结构的 主版本116a添加适当的条目446,以及向消息系统108中的所有消息客户 端110b发送具有条目446的广播消息448。
在图4的示例中,软件部件106向消息服务器110a发送多播注册消息 442。可替换地,软件部件106可以向消息客户端110b发送多播注册消息 442,并且消息客户端110b可以向消息服务器110a转发相关信息(例如, 软件部件106的物理地址224和软件部件106正在注册的多播事件的逻辑 名444)。
图5示出了消息实体110(g卩,消息服务器110a或者消息客户端110b) 可以如何促成在注册的软件部件106之间的多播通信的一个示例。在该示例中,将假设消息系统108中的软件部件106a发送最终被消息系统108中 的多个软件部件106b-d所接收的多播消息552。然而,发送方软件部件106a 并不需要知道接收方软件部件106b-d的物理地址224b-d。相反地,由发送 方软件部件106a所发送的多播消息552的目的地由多播事件的逻辑名444 来识别。
当接收到来自发送方软件部件106a的多播消息552时,消息实体110 识别已经为该多播事件进行了注册的软件部件106b-d的物理地址224b-d。 这可以通过参考多播注册数据结构116来实现。然后,消息实体110可以 向接收方软件部件106b-d转发多播消息552。
每个接收方软件部件106b-d可以通过向消息实体110返回确认消息 554来响应多播消息552。在试图接收多播消息552的所有软件部件106b-d 都已经用确认消息554做出响应后,消息实体110可以向发送方软件部件 106a返回单个确认消息556。
示出的消息实体110具有多播通信部件558。多播通信部件558可以被 配置为促成在注册的软件部件106之间的多播通信。更具体地,多播通信 部件558可以被配置为处理从发送方软件部件106a接收的多播消息552, 识别已经为该多播事件进行了注册的软件部件106b-d的物理地址224b-d, 以及向这些物理地址224b-d转发多播消息552。多播通信部件558还可以 被配置为处理从接收方软件部件106b-d接收的确认消息554,并向发送方 软件部件106a返回单个确认消息556。
图6示出了可以由消息服务器110a所执行的一些功能。示出的消息服 务器110a具有验证部件680。验证部件680可以被配置为验证注册的消息 客户端110b在运行。
消息服务器110a可以周期性地向消息系统108中的所有消息客户端 110b发送心跳消息662。所有注册的消息客户端110b可以被配置为通过向 消息服务器110a发送心跳应答664来响应所接收的每个心跳消息662。只 要特定的消息客户端110a继续响应所发送的心跳消息662,那么消息服务 器110a就可以推断消息客户端110b仍然在运行。然而,如果特定的消息 客户端110b未能响应特定数目的连续的心跳消息662 (例如,3个连续的心跳消息662),那么消息服务器110a可以推断该消息客户端110b不再运行。
示出的消息服务器110a还具有同步部件682。同步部件682可以被配置为保持在注册的消息客户端110b之间的同步。为了保持在注册的消息客户端110b之间的同步,由消息服务器110a所发送的心跳消息662可以包括用于消息系统108的主时间666。每个消息客户端110b可以基于所接收的在心跳消息662中的主时间666来更新它的本地时间668 (g卩,使得本地时间668与主时间666相同)。
示出的消息服务器110a还具有高速缓存管理器684。高速缓存管理器684可以被配置为管理资源位置高速缓存的主版本114a。高速缓存管理器684可以被配置为每当资源位置高速缓存114a被改变时,就通知消息系统108中的消息客户端110b。然后,每个消息客户端110b可以更新它的资源位置高速缓存的本地副本114b。
由消息服务器110a所发送的心跳消息662可以包括高速缓存序列号672a。高速缓存序列号672a可由消息客户端110b所使用以确保资源位置高速缓存的本地副本U4b相对于资源位置高速缓存的主版本114a是最新的。
每当资源位置高速缓存的主版本U4a得到更新,消息服务器110a可以增加高速缓存序列号672a。每个消息客户端110b可以将本地高速缓存序列号672b与包含在心跳消息662中的主高速缓存序列号672a进行比较。如果本地高速缓存序列号672b与主高速缓存序列号672a匹配,那么消息客户端110b可以推断资源位置高速缓存的本地副本114b是最新的。然而,如果本地高速缓存序列号672b与主高速缓存序列号672a不匹配,那么消息客户端110b可以推断资源位置高速缓存的本地副本114b是过时的。然后,消息客户端110b可以向消息服务器110a发送更新请求674。
当从消息客户端110b接收到更新请求674时,消息服务器110a可以向消息客户端110b发送资源位置高速缓存更新676。资源位置高速缓存更新676可以是完全更新的,即可以将资源位置高速缓存114a的整个主版本的副本都发送给消息客户端110b。可替换地,资源位置高速缓存更新676可以是渐进的更新,即只有自从上次本地高速缓存114b被更新以来所发生的对高速缓存114a的改变才可以被发送。
示出的消息服务器110a还具有客户端发现部件678。客户端发现部件678可以被配置为在分布式计算系统100中发现新的消息客户端110b。通过向分布式计算系统100中的所有消息客户端110b发送心跳消息662,新的消息客户端110b能够确定消息服务器110a的身份。然后,新的消息客户端110b可以就向消息系统108注册方面联系消息服务器110a (例如,通过向消息服务器110a发送应答664)。
示出的消息服务器110a还具有多播注册管理器686。多播注册管理器686可以被配置为管理多播注册数据结构的主版本116a。多播注册管理器686可以被配置为每当多播注册数据结构116a被改变时,就通知消息系统108中的消息客户端110b。然后,每个消息客户端110b可以更新它的多播注册数据结构116b的本地副本。
图7示出了可以由消息系统108中的消息服务器110a执行的进程间通信方法700的一个示例,该消息系统108在分布式计算系统100中实现。
根据所描绘的方法700,消息服务器110a可以发现702在分布式计算系统100中的新的消息客户端110b。这可以通过向分布式计算系统100中的所有消息客户端110b发送心跳消息662来实现。当接收到心跳消息662时,新的消息客户端110b能够确定消息服务器110a的身份。然后,新的消息客户端110b可以就向消息系统108注册方面联系消息服务器110a。
消息服务器110a还可以验证704注册的消息客户端110b在运行。这可以通过周期性地向分布式计算系统100中的所有消息客户端110b发送心跳消息662来实现。所有注册的消息客户端110b可以被配置为通过向消息服务器110a发送应答664来响应所接收的每个心跳消息662。只要特定的消息客户端110a继续响应所发送的心跳消息662,那么消息服务器110a就可以推断消息客户端110b仍然在运行。然而,如果特定的消息客户端110b未能响应特定数目的连续的心跳消息662(例如,3个连续的心跳消息662),那么消息服务器110a可以推断该消息客户端110b不再运行。
消息服务器110a还可以保持706在注册的消息客户端110b之间的同步。由消息服务器110a所发送的心跳消息662可以包括用于消息系统108的主时间666。每个消息客户端110b可以基于所接收的在心跳消息662中的主时间666来更新它的本地时间668。
消息服务器110a还可以管理708消息资源位置高速缓存的主版本114a。消息服务器110a可以通知消息系统108中的消息客户端110b关于对消息资源位置高速缓存的主版本114a作出的改变(例如,当新的软件部件106向消息系统108注册时)。
消息服务器110a还可以管理710多播注册数据结构的主版本116a。消息服务器110a可以通知消息系统108中的消息客户端110b关于对多播注册数据结构的主版本116a作出的改变(例如,当软件部件106为多播事件进行了注册时)。
上面描述的图7的方法700可以由对应于图7A所示的装置加功能框700A的各种硬件和/或软件部件和/或模块来执行。换言之,图7所示的框702至710对应于图7A所示的装置加功能框702A至710A。
图8示出了可以由消息系统108中的消息实体110 (即,消息服务器110a或者消息客户端110b)执行的进程间通信方法800的一个示例,该消息系统108在分布式计算系统100中实现。
根据所描绘的方法800,消息实体110可以促成802由软件部件106向消息系统108的注册。软件部件106可以向消息实体110发送注册消息222。响应于接收到注册消息222,消息实体110可以使得在资源位置高速缓存的主版本114a中创建用于软件部件106的条目230。条目230可以将软件部件106的物理地址224、软件部件106的逻辑名226、以及用于逻辑名226的任何别名228关联起来。可以向消息系统108中的所有消息客户端110b通知被添加到资源位置高速缓存的主版本114a的条目230。
消息实体110还可以促成804在注册的软件部件106之间的单播通信。消息实体110可以接收消息336,其中目的地由接收方软件部件106b的逻辑名226来识别。消息实体110可以将接收方软件部件106b的逻辑名226解析成接收方软件部件106b的物理地址224。这可以通过参考资源位置高速缓存114来实现。然后,消息实体110可以向接收方软件部件106b的物理地址224转发消息336。200880014655.7
软件部件106为多播事件进行的注册。响应于接收到多播注册消息442,消息实体110可以使得在多播注册数据结构的主版本116a中创建用于软件部件106的条目446。条目446可以将软件部件106的物理地址224和软件部件106正在注册的多播事件的逻辑名444关联起来。
消息实体110还可以促成808在注册的软件部件106之间的多播通信。当接收到包含用于多播事件的逻辑名444的多播消息552时,消息实体110可以识别己经为该多播事件进行了注册的软件部件106b-d的物理地址224b-d。这可以通过参考多播注册数据结构116来实现。然后,消息实体110可以向适当的接收方软件部件106b-d转发多播消息552。
上面描述的图8的方法800可以由对应于图8A所示的装置加功能框800A的各种硬件和/或软件部件和/或模块来执行。换言之,图8所示的框802至808对应于图8A所示的装置加功能框802A至808A。
图9示出了本文描述的消息系统可以如何在基于UNIX的系统上实现的一个示例。在所描绘的示例中,该消息系统在以太网底板上进行分层,并且用套接字(socket)层来实现用户-内核接口。这种结构允许可承载UNIX的内核模块是该消息系统的一部分并且模糊了内核和用户空间部件之间的区别。该消息系统包括消息内核模块902、资源位置服务器904、资源位置高速缓存906和多播消息确认处理部件908。
图10示出了本文描述的消息系统可以如何在Sun Solaris系统上实现的一个示例。即使该系统正运行在单OS系统上,它仍然可以保持部件之间的相同的消息接口。在该结构中,诸如心跳和本地高速缓存维护这样的消息特征可以自动失效。如果消息内核模块被重写并且为Linux重新编译用户空间软件,那么相同的软件系统可以运行在基于Linux的系统上。该消息系统包括控制消息部件1002、资源位置高速缓存1006和多播消息确认处理部件1008。
图ll示出了本文描述的消息系统可以如何在实时操作系统(RT0S)上实现的一个示例。该消息系统包括资源位置服务器1104、资源位置高速缓存1106和多播消息确认处理部件1108。在该系统中冗余也可以得到支持,因为所有的消息目的地都可以被动态地构建与解析。这意味着当特定的硬件单元失效时,该消息系统可以不注册那些逻辑名并更新任何的分布的高速缓存。当产生在线替换时,该新的单元可以注册相同的逻辑名但使用新的物理位置。无需对任何应用做任何改变,该新的单元可以准备完全地加入该系统。通过使备用单元注册特定的逻辑名,还能够使备用单元保持"活跃(hot)"。这允许活动单元确定它们的存在(通过能够解析名字)并向它发送更新消息以使备用单元保持同步。当备用单元检测到活动单元已经不运行时,它能够注册所有的活
动单元逻辑名。这允许实现热(hot)冗余和温(warm)冗余。
图12示出了用于促成前面描述的分布式计算系统100中的软件部件106之间的进程间通信的装置的部分硬件实现。该电路装置用标号1200表示,并且能够在包含在路由器、交换机、基站等中的各种处理模块或板中实现。
装置1200包括将若干电路连接在一起的中央数据总线1202。这些电路包括CPU (中央处理单元)或控制器1204、接收电路1206、发送电路1208、和存储单元1210。
如果装置1200是无线设备的一部分,那么接收和发送电路1206和1208能够连接到RF (射频)电路上,但RF电路在图中未示出。接收电路1206在将接收到的信号发送给数据总线1202之前,处理并缓存这些信号。另一方面,发送电路1208在将来自数据总线1202的数据从设备1200发送出去之前,处理并缓存该数据。如果装置1200不是无线设备的一部分,那么接收和发送电路1206和1208可被配置用于通过有线连接来接收来自其它装置(例如,其它的硬件单元102)的数据和向其它装置(例如,其它的硬件单元102)发送数据。CPU/控制器1204执行数据总线1202的数据管理的功能,并且还执行一般的数据处理功能,包括执行存储单元1210的指令内容。
可替换地,发送电路1208和接收电路1206可以是CPU/控制器1204的一部分,而不是如图12所示的分开布置。
存储单元1210包括用标号1212统一表示的一组模块和/或指令。在该实施例中,模块/指令1212包括,除了其它方面之外,用于促成由软件部件106向消息系统108注册的注册功能1234,用于促成在注册的软件部件106之间的单播通信的单播通信功能1218,用于促成由软件部件106为多播事件进行的注册的多播注册功能1220,用于促成在注册的软件部件106之间的多播通信的多播通信功能1222,用于在分布式计算系统100中发现新的消息客户端110b的发现功能1224,用于验证注册的消息客户端110b在运行的验证功能1226,用于保持注册的消息客户端110b之间的同步的同步功能1228,用于管理资源位置高速缓存1214的高速缓存管理功能1230,以及用于管理多播注册数据结构1216的多播管理功能1232。注册功能1234、单播通信功能1218、多播注册功能1220、多播通信功能1222、发现功能1224、验证功能1226、同步功能1228、高速缓存管理功能1230和多播管理功能1232包括用于执行图1-11所示和所描述的处理步骤的计算机指令或代码。
可以选择性地实现特定于实体的特定指令。例如,如果装置1200提供消息客户端110b的功能,那么可以实现注册功能1234、单播通信功能1218、多播注册功能1220和多播通信功能1222。如果装置1200提供消息服务器110a的功能,那么可以实现所有描绘的功能。
此外,资源位置高速缓存1214和多播注册数据结构1216也可以被包含在存储单元1210中。可替换地,资源位置高速缓存1214和多播注册数据结构1216可以被存储在除了单元1210之外的一个或多个其它存储单元中。
在该实施例中,存储单元1210是RAM (随机存取存储器)电路。这些示例性的功能(如注册功能1234、单播通信功能1218、多播注册功能1220、多播通信功能1222、发现功能1224、验证功能1226、同步功能1228、高速缓存管理功能1230和多播管理功能1232)是软件例程、模块和/或数据集。存储单元1210能够被连接到易失性或非易失性类型的另一存储电路(未示出)上。可替换地,存储单元1210能够由其它电路类型制成,诸如EEPROM(电可擦可编程只读存储器)、EPROM (电可编程只读存储器)、ROM (只读存储器)、ASIC (专用集成电路)、磁盘、光盘、和本领域公知的其它电路类型。
还应注意的是,所描述的发明性过程也能够被编码为在本领域已知的任何计算机可读介质上携带的计算机可读指令。在该说明书和所附权利要求书中,术语"计算机可读介质"指的是参与向诸如图12所示和所描述的
CPU/控制器1204的任何处理器提供用于执行的指令的任何介质。这种介质可以是存储类型的,并且可以采取如前面(例如,在图12的存储单元1210的描述中)描述的易失性或非易失性存储介质形式。这种介质也可以是传输类型的,并且可以包括同轴电缆、铜线、光缆、以及传递能够携带机器或计算机可读信号的声波、电磁波或光波的空中接口。该计算机可读介质可以是与装置1200分离的计算机产品的一部分。
如本文所使用的,术语"确定"涵盖广泛的各种动作,因此,"确定"可以包括运算、计算、处理、推导、研究、査找(例如,在表格、数据库或另一数据结构中查找)、断定等。此外,"确定"可以包括接收(例如,接收信息)、存取(例如,存取存储器中的数据)等。此外,"确定"可以包括解析、选择、选取、建立等。
短语"基于"并不意味着"仅仅基于",除非另外明确指定。换言之,短语"基于"即描述了 "仅仅基于"又描述了 "至少基于"。
除了上面所述,可以用通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或晶体管逻辑、分立硬件部件或设计来执行本文所描述的功能的它们的任何组合来实现或执行结合本公开描述的各种其它说明性逻辑框、模块和电路。
结合本公开所描述的方法或算法的步骤可直接在硬件中、在由处理器执行的软件模块中或者在这两者的组合中体现。软件模块可以驻留在本领域已知的任何形式的存储介质中。如之前所描述的,可以使用的存储介质的一些示例包括RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动盘、CD-ROM等。软件模块可以包括单一指令或者许多指令,并且可以分布在若干个不同的代码段上、不同的程序中以及跨越多个存储介质。存储介质可以耦合到处理器,以使得该处理器能够从该存储介质读取信息和向该存储介质写入信息。可替换地,存储介质可集成到处理器。
此外,应该意识到,用于执行诸如图7-8所示的那些本文描述的方法和技术的模块和/或其它适当的装置能够由适用的移动设备和/或基站进行下载和/或以其他方法获取。例如,这种设备能够耦合到服务器以促成用于 执行本文描述的方法的装置的传送。
应当理解,权利要求书并不受限于上面所示的精确配置和部件。在不 背离权利要求书范围的情况下,可以对本文描述的系统、方法和装置的布 置、操作和细节作出各种修改、改变和变化。
权利要求
1、一种用于进程间通信的装置,包括处理器;以及耦合到所述处理器的电路,用于促成由软件部件向消息系统的注册、促成在注册的软件部件之间的单播通信、促成由软件部件为多播事件进行的注册、以及促成在注册的软件部件之间的多播通信。
2、 根据权利要求1所述的装置,其中,为了促成由软件部件向所述消息系统的注册,所述耦合到所述处理器的电路还用于确定所述软件部件的逻辑名、确定所述软件部件的物理地址、以及促使将所述软件部件的所述逻辑名与所述软件部件的所述物理地址关联起来的条目被添加到资源位置高速缓存。
3、 根据权利要求1所述的装置,其中,为了促成在注册的软件部件之间的单播通信,所述耦合到所述处理器的电路还用于接收去往软件部件的消息、将标识所述软件部件的逻辑名解析成物理地址—、-以及向所述物理地址发送所述消息。
4、 根据权利要求1所述的装置,其中,为了促成由软件部件为多播事件进行的注册,所述耦合到所述处理器的电路还用于接收对应于多播事件的多播注册消息,以及促使在多播注册数据结构中创建条目,其中,所述条目将所述软件部件的物理地址与所述多播事件的逻辑名关联起来。
5、 根据权利要求1所述的装置,其中,为了促成在注册的软件部件之间的多播通信,所述耦合到所述处理器的电路还用于从发送方软件部件接收对应于多播事件的多播消息、通过参考多播注册数据结构来确定哪些软件部件已经为所述多播事件进行了注册、向己经为所述多播事件进行了注册的软件部件发送所述多播消息、从接收到所述多播消息的软件部件接收确认消息、以及向所述发送方软件部件发送确认消息。
6、 一种用于进程间通信的装置,包括处理器;以及耦合到所述处理器的电路,用于在分布式计算系统中发现新的消息客户端、验证注册的消息客户端在运行、保持所述注册的消息客户端之间的同步、管理资源位置高速缓存的主版本、以及管理多播注册数据结构的主版本。
7、 根据权利要求6所述的装置,其中,为了发现新的消息客户端、验证注册的消息客户端在运行、以及保持所述注册的消息客户端之间的同步,所述耦合到所述处理器的电路还用于向所述消息系统中的消息客户端发送心跳消息并处理对所述心跳消息的应答。
8、 根据权利要求6所述的装置,其中,为了管理所述资源位置高速缓存的主版本,所述耦合到所述处理器的电路还用于每当所述资源位置高速缓存被改变时就通知所述消息系统中的消息客户端,并且其中,为了管理所述多播注册数据结构的主版本,所述耦合到所述处理器的电路还用于每当所述多播注册数据结构被改变时就通知所述消息系统中的消息客户端。
9、 一种用于进程间通信的方法,所述方法由消息系统中的消息实体执行,所述方法包括促成由软件部件向所述消息系统的注册;促成在注册的软件部件之间的单播通信;促成由软件部件为多播事件进行的注册;以及促成在注册的软件部件之间的多播通信。
10、 根据权利要求9所述的方法,其中,促成由软件部件向所述消息系统的注册包括-确定所述软件部件的逻辑名;确定所述软件部件的物理地址;以及促使将所述软件部件的所述逻辑名与所述软件部件的所述物理地址关联起来的条目被添加到资源位置高速缓存。
11、 根据权利要求9所述的方法,其中,促成在注册的软件部件之间的单播通信包括接收去往软件部件的消息,其中,所述软件部件由逻辑名识别;将所述逻辑名解析成物理地址;以及向所述物理地址发送所述消息。
12、 根据权利要求9所述的方法,其中,促成由软件部件为多播事件进行的注册包括接收对应于多播事件的多播注册消息;以及促使在多播注册数据结构中创建条目,其中,所述条目将所述软件部件的物理地址与所述多播事件的逻辑名关联起来。
13、 根据权利要求9所述的方法,其中,促成在注册的软件部件之间的多播通信包括从发送方软件部件接收对应于多播事件的多播消息;通过参考多播注册数据结构来确定哪些软件部件已经为所述多播事件进行了注册;向已经为所述多播事件进行了注册的软件部件发送所述多播消息;从接收到所述多播消息的软件部件接收确认消息;以及. 向所述发送方软件部件发送确认消息。
14、 一种用于进程间通信的方法,所述方法由在分布式计算系统中实现的消息系统中的消息服务器执行,所述方法包括在所述分布式计算系统中发现新的消息客户端;验证注册的消息客户端在运行;保持所述注册的消息客户端之间的同步;管理资源位置高速缓存的主版本;以及管理多播注册数据结构的主版本。
15、 根据权利要求14所述的方法,其中,发现新的消息客户端、验证注册的消息客户端在运行、以及保持所述注册的消息客户端之间的同步包括向所述消息系统中的消息客户端发送心跳消息;以及处理对所述心跳消息的应答。
16、 根据权利要求14所述的方法,其中,管理所述资源位置高速缓存的主版本包括每当所述资源位置高速缓存被改变时就通知所述消息系统中的消息客户端,并且其中,管理所述多播注册数据结构的主版本包括每当所述多播注册数据结构被改变时就通知所述消息系统中的消息客户端。
17、 一种包括消息实体的硬件单元,所述消息实体用于促成分布式计算系统中软件部件之间的进程间通信,所述消息实体包括-用于促成由软件部件向消息系统的注册的注册部件;用于促成在注册的软件部件之间的单播通信的资源位置服务器;用于促成由软件部件为多播事件进行的注册的多播注册部件;以及用于促成在注册的软件部件之间的多播通信的多播通信部件。
18、 根据权利要求n所述的硬件单元,其中所述注册部件还用于-确定所述软件部件的逻辑名;确定所述软件部件的物理地址;以及 促使将所述软件部件的所述逻辑名与所述软件部件的所述物理地址关联起来的条目被添加到资源位置高速缓存。
19、 根据权利要求17所述的硬件单元,其中,所述资源位置服务器还用于接收去往软件部件的消息,其中,所述软件部件由逻辑名识别;将所述逻辑名解析成物理地址;以及向所述物理地址发送所述消息。
20、 根据权利要求17所述的硬件单元,其中,所述多播注册部件还用于接收对应于多播事件的多播注册消息;以及促使在多播注册数据结构中创建条目,其中,所述条目将所述软件部件的物理地址与所述多播事件的逻辑名关联起来。
21、 根据权利要求17所述的硬件单元,其中,所述多播通信部件还用于从发送方软件部件接收对应于多播事件的多播消息;通过参考多播注册数据结构来确定哪些软件部件已经为所述多播事件进行了注册;向已经为所述多播事件进行了注册的软件部件发送所述多播消息;从接收到所述多播消息的软件部件接收确认消息;以及向所述发送方软件部件发送确认消息。
22、 一种包括消息服务器的硬件单元,所述消息服务器用于促成分布式计算系统中软件部件之间的进程间通信,所述消息服务器包括客户端发现部件,用于在所述分布式计算系统中发现新的消息客户端;验证部件,用于验证注册的消息客户端在运行;同步部件,用于保持所述注册的消息客户端之间的同步;高速缓存管理器,用于管理资源位置高速缓存的主版本;以及多播注册管理器,用于管理多播注册数据结构的主版本。
23、 根据权利要求22所述的硬件单元,其中,所述客户端发现部件、所述验证部件、和所述同步部件各自用于向所述消息系统中的消息客户端发送心跳消息;以及处理对所述心跳消息的应答。
24、 根据权利要求22所述的硬件单元,其中,所述高速缓存管理器用于每当所述资源位置高速缓存被改变时就通知所述消息系统中的消息客户端,并且其中,所述多播注册管理器用于每当所述多播注册数据结构被改变时就通知所述消息系统中的消息客户端。
25、 一种包括消息实体的装置,所述消息实体用于促成分布式计算系统中软件部件之间的进程间通信,所述消息实体包括用于促成由软件部件向消息系统的注册的模块;用于促成在注册的软件部件之间的单播通信的模块;用于促成由软件部件为多播事件进行的注册的模块;以及用于促成在注册的软件部件之间的多播通信的模块。
26、 根据权利要求25所述的装置,其中,所述用于促成由软件部件向消息系统的注册的模块包括用于确定所述软件部件的逻辑名的模块;用于确定所述软件部件的物理地址的模块;以及用于促使将所述软件部件的所述逻辑名与所述软件部件的所述物理地址关联起来的条目被添加到资源位置高速缓存的模块。
27、 根据权利要求25所述的装置,其中,所述用于促成在注册的软件部件之间的单播通信的模块包括用于接收去往软件部件的消息的模块,其中,所述软件部件由逻辑名识别;用于将所述逻辑名解析成物理地址的模块;以及用于向所述物理地址发送所述消息的模块。
28、 根据权利要求25所述的装置,其中,所述用于促成由软件部件为多播事件进行的注册的模块包括用于接收对应于多播事件的多播注册消息的模块;以及用于促使在多播注册数据结构中创建条目的模块,其中,所述条目将所述软件部件的物理地址与所述多播事件的逻辑名关联起来。
29、 根据权利要求25所述的装置,其中,所述用于促成在注册的软件部件之间的多播通信的模块包括用于从发送方软件部件接收对应于多播事件的多播消息的模块;用于通过参考多播注册数据结构来确定哪些软件部件已经为所述多播事件进行了注册的模块;用于向己经为所述多播事件进行了注册的软件部件发送所述多播消息的模块;用于从接收到所述多播消息的软件部件接收确认消息的模块;以及用于向所述发送方软件部件发送确认消息的模块。
30、 一种包括消息服务器的装置,所述消息服务器用于促成分布式计算系统中软件部件之间的进程间通信,所述装置包括用于在所述分布式计算系统中发现新的消息客户端的模块;用于验证注册的消息客户端在运行的模块;用于保持所述注册的消息客户端之间的同步的模块;用于管理资源位置高速缓存的主版本的模块;以及用于管理多播注册数据结构的主版本的模块。
31、 根据权利要求30所述的装置,其中,所述用于发现新的消息客户端的模块、所述用于验证注册的消息客户端在运行的模块、以及所述用于保持所述注册的消息客户端之间的同步的模块各自包括用于向所述消息系统中的消息客户端发送心跳消息的模块;以及用于处理对所述心跳消息的应答的模块。
32、 根据权利要求30所述的装置,其中,所述用于管理所述资源位置高速缓存的主版本的模块包括用于每当所述资源位置高速缓存被改变时就通知所述消息系统中的消息客户端的模块,并且其中,所述用于管理所述多播注册数据结构的主版本的模块包括用于每当所述多播注册数据结构被改变时就通知所述消息系统中的消息客户端的模块。
33、 一种用于促成分布式计算系统中软件部件之间的进程间通信的计算机程序产品,所述计算机程序产品包括在其上具有指令的计算机可读介质,所述指令包括用于促成由软件部件向消息系统的注册的代码;用于促成在注册的软件部件之间的单播通信的代码;用于促成由软件部件为多播事件进行的注册的代码;以及用于促成在注册的软件部件之间的多播通信的代码。
34、 根据权利要求33所述的计算机程序产品,其中,所述用于促成由软件部件向所述消息系统的注册的代码包括用于确定所述软件部件的逻辑名的代码;用于确定所述软件部件的物理地址的代码;以及用于促使将所述软件部件的所述逻辑名与所述软件部件的所述物理地址关联起来的条目被添加到资源位置高速缓存的代码。
35、 根据权利要求33所述的计算机程序产品,其中,所述用于促成在注册的软件部件之间的单播通信的代码包括用于接收去往软件部件的消息的代码,其中,所述软件部件由逻辑名识别;用于将所述逻辑名解析成物理地址的代码;以及用于向所述物理地址发送所述消息的代码。
36、 根据权利要求33所述的计算机程序产品,其中,所述用于促成由软件部件为多播事件进行的注册的代码包括用于接收对应于多播事件的多播注册消息的代码;以及用于促使在多播注册数据结构中创建条目的代码,其中,所述条目将所述软件部件的物理地址与所述多播事件的逻辑名关联起来。
37、 根据权利要求33所述的计算机程序产品,其中,所述用于促成在注册的软件部件之间的多播通信的代码包括用于从发送方软件部件接收对应于多播事件的多播消息的代码;用于通过参考多播注册数据结构来确定哪些软件部件已经为所述多播事件进行了注册的代码;用于向已经为所述多播事件进行了注册的软件部件发送所述多播消息的代码;用于从接收到所述多播消息的软件部件接收确认消息的代码;以及用于向所述发送方软件部件发送确认消息的代码。
38、 一种用于促成分布式计算系统中软件部件之间的进程间通信的计算机程序产品,所述计算机程序产品包括在其上具有指令的计算机可读介质,所述指令包括用于在所述分布式计算系统中发现新的消息客户端的代码;用于验证注册的消息客户端在运行的代码;用于保持所述注册的消息客户端之间的同步的代码;用于管理资源位置高速缓存的主版本的代码;以及用于管理多播注册数据结构的主版本的代码。
39、 根据权利要求38所述的计算机程序产品,其中,所述用于发现新的消息客户端的代码、所述用于验证注册的消息客户端在运行的代码、以及所述用于保持所述注册的消息客户端之间的同步的代码各自包括-用于向所述消息系统中的消息客户端发送心跳消息的代码;以及用于处理对所述心跳消息的应答的代码。
40、 根据权利要求38所述的计算机程序产品,其中,所述用于管理所述资源位置高速缓存的主版本的代码包括用于每当所述资源位置高速缓存被改变时就通知所述消息系统中的消息客户端的代码,并且其中,所述用于管理所述多播注册数据结构的主版本的代码包括用于每当所述多播注册数据结构被改变时就通知所述消息系统中的消息客户端的代码。
全文摘要
公开了用于可扩展和冗余电信系统的进程间通信方法和装置。用于消息系统(108)中的进程间通信的消息实体(服务器110a或者客户端110b)促成由软件部件向所述消息系统的注册、促成在注册的软件部件之间的单播通信、促成由软件部件为多播事件进行的注册、以及促成在注册的软件部件之间的多播通信。消息服务器(110a)在分布式计算系统(100)中发现新的消息客户端(110b)、验证注册的消息客户端(110b)在运行、保持所述注册的消息客户端(110b)之间的同步、管理资源位置高速缓存(114a)的主版本、以及管理多播注册数据结构(116a)的主版本。
文档编号H04L12/58GK101675424SQ200880014655
公开日2010年3月17日 申请日期2008年5月2日 优先权日2007年5月4日
发明者D·R·马齐克, J·凯勒曼, R·J·戴纳斯基 申请人:高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1