一种分布式对象的调度方法和系统的制作方法

文档序号:7688150阅读:192来源:国知局
专利名称:一种分布式对象的调度方法和系统的制作方法
技术领域
本发明涉及计算机领域,尤其涉及一种分布式对象的调度方法和系统。
背景技术
分布式对象是一种典型的独立于特定的程序设计语言和应用系统、可重用 和自包含的软件成分。它可以存在于网络的任何地方,可被远程客户应用,以 方法调用的形式访问。基于分布对象技术的分布式应用开发就是分布式对象的 开发和组装。
分布对象技术采用面向对象的多层客户/服务器计算模型,该模型将分布在 网络上的全部资源(无论是系统层还是应用层)都按照对象的概念来组织,每 个对象都有定义明晰的访问接口 。创建和维护分布对象实体的应用称为服务器, 按照接口访问该对象的应用称为客户端。服务器中的分布对象不仅能够被访问, 而且自身也可能作为其他对象的客户。因此在分布对象技术中,客户与服务器 的角色划分是相对的或多层次的。支持客户访问异地分布对象的核心机制称为
对象请求代理(Object Request Broker, ORB) 。 ORB处于分布对象技术的核心位置。
一般的,分布式对象技术的过程为
IOI客户端根据目标分布式对象提供的接口存根获得服务端在本机的代理。
102该代理根据服务名在全局命名服务中获取该分布式对象对应的唯一分 布式对象标识。分布式对象标识能唯一确定分布式对象的具体位置。
103客户端获得接口代理后发起对具体接口 、方法的调用。104对象请求代理根据分布式对象对应的分布式对象标识构造套接字 socket请求消息,并发往分布式对象所在的分布式系统。该socket请求消息中包 含有请求的接口、方法名以及对应的参数列表。该sockect请求消息由对象请求 代理封装为方法,用户调用时不需要直接构造socket连接,直接指定接口名、方 法创建请求消息并写入参数即可。
105目标分布式系统根据该分布式对象标识找到对应的软件的服务器端骨 架skeleton,并构造对象请求消息调用目标分布式对象对应的接口方法。
应用上述分布式对象管理系统,用户不必关心很多的网络协议细节,就可 以实现请求消息交互的过程。
电信级应用中,对分布式系统服务间交互速率要求很高,上述步骤105中请 求消息调度策略或者分布式对象的调度方法为非常重要的一环,对分布式系统 性能有重要的影响。

发明内容
本发明要解决的技术问题是提供一种分布式对象的调度方法,提高分布式 系统的性能。
本发明要解决的另一技术问题是提供一种分布式对象的调度系统,提高分 布式系统的性能。
一种用于调度分布式对象的系统,该系统包括调度器,所述调度器用于根 据接收到的请求消息,解析出所述请求消息中携带的目标分布式对象标识ID; 根据所述目标分布式对象ID找到所述目标分布式对象ID唯一对应的调度线程; 将所述请求消息发送到所述调度线程对应的调度队列中。
一种分布式对象调度的方法,接收请求消息,所述请求消息携带有目的分 布式对象ID;根据接收到的该请求消息解析出目的分布式对象ID,并根据该解 析出的目的分布式对象ID,查找到该目标分布式对象ID唯一对应的调度线程; 将该请求消息发送给所述调度线程对应的调度队列,该请求消息用于触发调度线程根据目的分布式对象ID找到对应的分布式对象并调用所述找到的分布式对
象对应的方法。
上述分布式对象的调用系统中,至少包括以下有益效果由于将分布式对 象ID和线程——对应,使得在处理时不会出现两个以上线程对同一个分布式对 象进行调用,这样避免了频繁的对分布式对象进行加锁以及解锁的处理,相对 于现有技术节省了系统资源的开销。


图l为本发明具体实施方式
的一个应用场景示意图; 图2为一个分布式对象调度系统的具体实施方式
的结构图; 图3为一个调度器的具体实施方式
的结构示意图; 图4为另一个调度器的具体实施方式
的结构示意图; 图5为 一个分布式对象的调度方法的流程图。
具体实施例方式
参考图l,为调用分布式对象的一个应用场景的示意图,某一机器A(称为 用户)向任意一个包括分布式对象的机器C发送请求消息,该机器可以是网络 设备、服务器、计算机或者任何其它包含分布式对象的设备。该请求消息一般 携带有目的分布式对象所在的机器的标识(例如IP地址),目的分布式对象所 在的可扭^f于程序的标识(例如编号C1、 C2、 C3),目的分布式对象的标识ID (例如编号0、 1、 2、 3、 4、 5、 6、 7)。根据上述请求消息中的机器IP地址、 可执行程序编号C3,该请求消息可以到达目的分布式对象所在的该可执行程序 的接收消息线程对应的消息队列。
参考图2,为一个分布式对象调度系统的具体实施方式
的结构图,该调度系 统包括以下单元,接收消息线程12、调度器13、调度线程15、调度队列14。其 中接收消息线程12用于监听网络端口 11,如有请求消息到达接收消息线程12 对应的消息队列,则发送该请求消息至调度器13中。
调度器13用于提供分布式对象ID和调度线程之间的对应的关系(或者称映 射关系),以及调度线程和调度队列之间的对应关系,其中分布式对象ID和唯 一的调度线程对应,调度线程和调度队列——对应;根据接收到的请求消息(例 如其中的头信息),解析出该目标分布式对象ID;才艮据该目标分布式对象ID找 到该目标分布式对象(或者目标分布式对象ID)唯一对应的调度线程15;将该 请求消息发送到调度线程15对应的调度队列14中。
调度线程15用于在有请求消息到达该调度线程15对应的调度队列14时(可 以是检测知道,或者是由调度器13通知知道),取出该请求消息,以及根据该 请求消息中的目标分布式对象ID找到该目标分布式对象ID对应的分布式对象 并调用该分布式对象对应的方法。
需要解释的是,在调度系统中,每个调度线程对应一个调度队列。在另一 个具体实施方式
中,调度线程15还用于存储与该调度线程15对应的该分布式对 象ID 。例如, 一个分布式对象ID为一个编号,该编号由调度线程15保存,从 而使得分布式对象和具体线程绑定。
调度队列14用于緩存收到的请求消息。
具体的,在一个实施方式中,该调度队列14为一个数组,请求消息为数组 中的一个元素。具体的,该调度队列可以是循环队列、双向链表等。
参考图3,为一个调度器13的具体实施方式
的结构示意图,该调度器13包括 解析模块131,对应关系模块132,交互模块133、查询模块134。其中,
该解析模块131用于根据接收到的请求消息解析出目标分布式对象ID。
该对应关系模块132用于提供分布式对象ID和调度线程之间的对应的关 系,以及调度线程和调度队列之间的对应关系,其中分布式对象ID和唯一的调 度线程对应,调度线程和调度队列——对应。也就是说,对于分布式对象ID,只有一个调度线程和其对应,而一个调度线程可能对应多个分布式对象ID。对
于调度线程,只有一个调度队列与其对应;对于调度队列,也只有一个调度线 程与其对应。
查询模块134用于根据所述目标分布式对象ID找到所述目标分布式对象ID 唯一对应的调度线程。
该交互才莫块133用于接收由接收消息线程12发送的请求消息,以及发送该请 求消息至所述目标分布式对象ID唯一对应的所述调度线程15对应的调度队列14 中。
更具体的,在一个实施方式中,对应关系模块132具体用于保存一个分布式 对象ID与其唯一对应的调度线程15的对应关系列表。另一个具体实施方式
中, 该对应关系;漠块132采用运算器生成分布式对象ID和唯——个调度线程15对应 的对应关系。
在另一个具体实施方式
中,参考图4,调度器13还用于在向分布式系统加载 分布式对象时,给该分布式对象分配唯一的分布式对象ID。此时,调度器13相 对于图3所示的结构,还包括分配模块135,该分配模块135用于在分布式对象在 向分布式系统加载时,给该分布式对象分配唯一的分布式对象ID。在其它的实 施方式中,该分配分布式对象ID的步骤可由其它设备完成。
上述分布式对象调用系统至少有以下优点
一方面,上述分布式对象的调用系统中,由于将分布式对象ID和线程—— 对应,使得在处理时不会出现两个以上线程对同一个分布式对象进行调用,这 样避免了频繁的对分布式对象进行加锁以及解锁的处理,相对于现有技术节省 了系统资源的开销。例如,发明人在实施本发明的过程中发现,现有技术中一 种对同一个分布式对象调用的方法中在某一段时间,可能有两个线程同时对 某一个分布式对象进行调用,并且分布式对象提供的方法必须是多线程安全的。 因为在多线程环境下,多个线程竟争使用同一个共享资源(即分布式对象)时,线程之间会发生冲突;所以在有共享资源或共享对象的临界区的所有线程中,
接收异步请求时需要进行加锁,使得一次只允许一个线程进入临界区,确保共
享资源线程安全。另外,所有同步线程在同一个队列:取请求消息,取请求消息
也需要解锁保护。上述进行加锁、解锁保护的步骤增加了系统资源的开销,而 本发明具体实施方式
克服了上述缺点。
另一方面,上述分布式对象的调用系统中,采用调度队列即緩存队列的方 式对于用户的请求进行处理,不会出现用户请求的拥塞或者遗漏,增强了系统 在爆发用户(短时间内发生大量用户请求)的情况下的稳定性和处理能力。
本发明具体实施方式
还提供了上述系统在运行时执行的分布式对象的调度
方法,参考图5,为该分布式对象的调度方法的流程图。该方法包括
501、 接收消息线程12检测或者监听是否有请求消息到,如果有则发送该请 求消息至调度器13。
具体的,该检测可以是循环进行的,或者周期的,或者定时的,或者可以 是在没有消息到来时接收消息线程12处于休眠状态,如果有消息到则接收,接 收完毕后如果仍有消息到则循环接收,不休眠。
502、 调度器13根据接收到的该请求消息解析出目的分布式对象ID,并根 据该解析出的目的分布式对象ID,查找到该目标分布式对象唯一对应的调度线 程15。
其中,分布式对象ID和唯一的调度线程对应,也就是说,对于分布式对象 ID,只有一个调度线程和其对应,而一个调度线程可能对应多个分布式对象ID。 上述对应关系可以由调度器13或者其它设备提供。
具体的,为使分布式对象ID对应一个唯一的调度线程,可以有几种不同的 实现方式
一个实施方式中,调度器13可以保存一个分布式对象ID与其唯一对应的调 度线程15的对应关系列表。另一个实施方式中,调度器13给分布式对象分配一个唯一的编号,该编号 由唯——个调度线程15保存。
在另一个具体实施方式
中,调度器采用一个运算器或者对应规则,实现分
布式对象ID和唯——个调度线程15对应。例如,调度线程编号为O, 1, 2......n,
n^,分布式对象ID编号为O, 1, 2......m, m^,该对应规则为编号为m的对
分布式对象ID对应的调度线程15的编号为分布式对象ID的编号m对调度线程 的个数(n+l)取模的值。
下面为应用上述取漠的方法的一个具体实例,系统有三个调度线程,其编 号为0, 1, 2(n = 2);有8个分布式对象,分布式对象ID编号为O, 1, 2, 3, 4, 5, 6, 7。按照上述取模的对应规则,编号为0, 1, 2, 3, 4, 5, 6, 7的分布式 对象ID对应的调度线程的编号为0, 1, 2, 3, 4, 5, 6, 7分别对3取模的值(结 果为0, 1, 2, 0, 1, 2, 0, 1 )。
一的调度线程的实现方法仅仅是举例,而不是对技术方案的限定。
503、 调度器13将该请求消息发送给调度线程15对应的调度队列14。
或者,可以理解为调度器将该请求消息放置于调度线程15对应的调度队列 14。需要解释的是,调度线程和调度队列——对应,也就是说,对于调度线程, 只有一个调度队列与其对应;对于调度队列,也只有一个调度线程与其对应。 上述对应关系可以由调度器13或者其它设备提供。
在另 一个实施例中,调度器13在执行上述发送请求消息给调度队列14的步 骤之外,还可以通知调度线程15有请求消息到。
上述请求消息用于触发调度线程15根据目的分布式对象ID找到对应的分 布式对象并调用该找到的分布式对象对应的方法,具体包括504 - 506:
504、 当有请求消息到达调度线程15对应的调度队列14,调度线程15从该调 度队列14中取出该请求消息。具体的,在一个具体实施方式
中,调度线程15可以通过检测知道有请求消
息到达调度线程15对应的调度队列14。例如,该检测可以是循环进行的,或者 周期的,或者定时的,或者可以是在没有消息到来时调度线程15处于休眠状态, 如果有消息到则接收,接收完毕后如果仍有消息到则循环接收,不休眠。
在另一个具体实施方式
中,调度线程15也可以通过接收调度器13发来的通 知后知道有请求消息到达调度线程15对应的调度队列14。
在上述实施方式中,调度线程15可以一直阻塞在请求消息队列上,直到有 请求消息到才进行处理。在这个实施方式中,可以进一步降低资源的开销,从 而提高系统性能。
505、 调度线程15根据目的分布式对象ID找到对应的分布式对象。
506、 调度线程15调用该找到的分布式对象对应的方法。
上述调度方法实施方式中,由于将分布式对象ID和线程——对应,使得在 处理时不会出现两个以上线程对同一个分布式对象进行调用,这样避免了频繁 的对分布式对象进行加锁以及解锁的处理,相对于现有技术节省了系统资源的 开销。
在一个具体实施方式
中,上述调度队列14是一个存放请求消息的队列,其 具体格式是一个数组。可以是循环队列、双向链表等。
以该调度队列14是循环队列为例,该循环队列可以采取读写点控制请求消 息出入队判断,其判断的具体方法如下
定义两个成员,分别为读点和写点;
如果读点和写点相等,则队列为空;
读点和写点相差一个间隔,则队列为满;
请求消息入队时请求消息写入写点位置,写点后移;
读请求消息时从读点读取数据,读点后移。上述过程用程序化语言表达为 putMessage(pMsg)〃请求消息入队
如果(m—unRead == (m—unWrite + 1) % m一unMaxSize) 〃读点和写点 相差一个间隔,则队列满
返回
〃请求消息写入写点位置 〃写点后移
getMessage(pMsg)〃i青求消息出队
如果读点和写点相等,说明队列空,返回
〃从读点位置取请求消息
〃读点后移
在上述具体实施方式
中,采取分布式对象ID和线程——"对应,以及循环队 列的读写点控制请求消息出入队判断方法,从而至少有以下优点
一方面,调度线程15读取、放入请求消息至调度队列14无需加锁处理。
另一方面,循环队列可以预分配内存,在请求消息出、入队列过程中无需动态的申请和释放内存,避免了频繁的系统资源调用,保证了请求消息处理高 效执行。
还有一方面,在调度队列14非空时请求消息入队无需通知调度线程15,仅 在队列空调度线程15阻塞在调度队列14时请求消息入队才通知调度线程15;也 就是说,仅在队列空时需要阻塞等待,从而大大降低了系统开销。
另一方面,采用调度队列即緩存队列的方式对于用户的请求进行处理,不 会出现用户请求的拥塞或者遗漏,增强了系统在爆发用户(短时间内发生大量 用户请求)的情况下的稳定性和处理能力。
本领域技术人员可以知道,本发明的其它技术效果可以通过对比其它现有 技术而得到,在此不赘述。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明 可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很 多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上 或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机 软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可 以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方 法。以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此, 任何本领域的技术人员能想到的变化都应落入本发明的保护范围。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局 限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易 想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护 范围应该以权利要求的保护范围为准。
权利要求
1、一种用于调度分布式对象的系统,其特征在于,该系统包括调度器,所述调度器用于根据接收到的请求消息,解析出所述请求消息中携带的目标分布式对象标识ID;根据所述目标分布式对象ID找到所述目标分布式对象ID唯一对应的调度线程;将所述请求消息发送到所述调度线程对应的调度队列中。
2、 根据权利要求1所述的用于调度分布式对象的系统,其特征在于,所述 调度器包括解析模块,查询模块,交互模块,其中,所述解析模块用于根据接收到的请求消息解析出所述目标分布式对象ID;查询模块用于根据所述目标分布式对象ID找到所述目标分布式对象ID唯 一对应的调度线程;所述交互模块用于接收请求消息,以及发送该请求消息至所述目标分布式 对象ID唯一对应的所述调度线程对应的调度队列中。
3、 根据权利要求2所述的用于调度分布式对象的系统,其特征在于,所述调度器或者该调度分布式对象的系统还包括对应关系模块,所述对应 关系模块用于提供分布式对象ID和调度线程之间的对应的关系,以及调度线程 和调度队列之间的对应关系,其中分布式对象ID和唯一的调度线程对应,调度 线程和调度队列——对应。
4、 根据权利要求2所述的用于调度分布式对象的系统,其特征在于,该调度器或者该调度分布式对象的系统还包括分配模块,所述分配模块用 于在分布式对象在向分布式系统加载时,给该分布式对象分配一个分布式对象 ID。
5、 根据权利要求2所述的用于调度分布式对象的系统,其特征在于,所述对应关系模块具体用于保存一个分布式对象ID与其唯一对应的调度 线程的对应关系列表;或者,采用运算器生成分布式对象ID和唯一一个调度线 程对应的对应关系。
6、 根据权利要求1所述的用于调度分布式对象的系统,其特征在于, 该调度系统还包括接收消息线程、调度线程、调度队列,其中,所述接收消息线程用于监听网络端口 ,如有请求消息到达接收消息线程对应的消息队列,则发送该请求消息至所述调度器中;所述调度线程用于在有请求消息到达所述调度线程对应的调度队列时,取 出该请求消息,以及,根据该请求消息中的目标分布式对象ID找到该目标分布 式对象ID对应的分布式对象并调用该分布式对象对应的方法;所述调度队列用于緩存收到的请求消息。
7、 根据权利要求6所述的用于调度分布式对象的系统,其特征在于,所述 调度线程进一步用于存储与该调度线程对应的分布式对象ID。
8、 根据权利要求7所述的用于调度分布式对象的系统,其特征在于,所述调度器进一步用于通知所述调度线程有请求消息到达所述调度线程 对应的调度队列。
9、 一种分布式对象调度的方法,其特征在于,接收请求消息,所述请求消息携带有目的分布式对象ID;根据接收到的该请求消息解析出目的分布式对象ID,并根据该解析出的目 的分布式对象ID,查找到该目标分布式对象ID唯一对应的调度线程;将该请求消息发送给所述调度线程对应的调度队列,该请求消息用于触发 调度线程根据目的分布式对象ID找到对应的分布式对象并调用所述找到的分 布式对象对应的方法。
10、 根据权利要求9所述的分布式对象调度的方法,其特征在于, 该方法进一步包括提供分布式对象ID与唯一的调度线程对应的对应关系。
11、 根据权利要求IO所述的分布式对象调度的方法,其特征在于,所述提 供分布式对象ID与唯一的调度线程对应的对应关系具体为保存一个分布式对象ID与其唯一对应的调度线程的对应关系列表;或者,给分布式对象ID分配一个唯一的编号,该编号由唯——个调度线程保存; 或者,采用运算器实现分布式对象ID和唯一的调度线程对应。
12、 根据权利要求11所述的分布式对象调度的方法,其特征在于,所述采 用运算器实现分布式对象ID和唯一的调度线程对应具体为对分布式对象ID 对应的调度线程的编号为所述分布式对象ID的编号对系统中调度线程的个数 取模的值。
13、 根据权利要求9所述的分布式对象调度的方法,其特征在于,所述调 度队列为循环队列或者双向4连表。
14、 根据权利要求13所述的分布式对象调度的方法,其特征在于,当所述 调度队列为循环队列时,采取读写点控制所述请求消息出入队判断。
全文摘要
本发明公开了一种分布式对象调度的方法及其系统或者装置,接收请求消息,所述请求消息携带有目的分布式对象ID;根据接收到的该请求消息解析出目的分布式对象ID,并根据该解析出的目的分布式对象ID,查找到该目标分布式对象ID唯一对应的调度线程;将该请求消息发送给所述调度线程对应的调度队列,该请求消息用于触发调度线程根据目的分布式对象ID找到对应的分布式对象并调用所述找到的分布式对象对应的方法。避免了频繁的对分布式对象进行加锁以及解锁的处理,相对于现有技术节省了系统资源的开销。
文档编号H04L29/08GK101547212SQ20081006621
公开日2009年9月30日 申请日期2008年3月29日 优先权日2008年3月29日
发明者果 王 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1