一种分布式系统定时方法、装置及系统的制作方法

文档序号:6573433阅读:151来源:国知局
专利名称:一种分布式系统定时方法、装置及系统的制作方法
技术领域
本发明涉及通信技术领域,尤其涉及一种分布式系统定时方法、装置及系统。
背景技术
近年来,随着互联网技术的日益成熟,公众及商业企业正享受着高速、低价网络信息传输所带来的高品质数字生活。但是,由于网络规模的不断扩大以及计算机软硬件技术水平的飞速提高,给传统的应用软件系统的实现方式带来了巨大挑战。传统的客户/服务器(C/S)模式的应用方式越来越显示出在运行效率、系统网络安全性和系统升级能力等方面的局限性。
目前的分布式系统解决了不同硬件设备和软件系统的互联问题,增强了网络间软件的互操作性,主要具有以下特点分布式数据、处理、控制并不驻留在某个站点,而是比较均匀的分布在整个互联网上;并行性不同任务可以并行执行,通过数据计算迁移实现多站点并行执行;透明性分布式系统隐藏许多了内部实现细节,包括物理位置、并发控制、错误处理;共享性软件、硬件的各种资源高度共享;强健性数据、处理和控制的分布,使系统故障得以分散;分布式系统屏蔽了底层的通讯细节,业务模块可以象使用本地服务一样使用远端的服务,远端服务可以是跨进程、跨节点的,这给业务开发带来了极大的便利。但是在分布式的系统中,在跨进程、跨节点进行调用过程中不可避免的会出现通讯失败、或网络延时等问题,影响了分布式系统的可靠性和稳定性,如果不对该类错误进行处理,就会出现客户端等待远程端服务返回,而所述远程端服务的应答消息丢失,将导致客户端由于等待所述服务返回而无法执行后续操作的吊死现象。

发明内容
本发明实施例提供一种分布式系统定时方法、装置及系统,解决现有技术分布式系统由于远程端服务返回失败,而导致的客户端吊死的问题。
本发明实施例是通过以下技术方案实现的本发明实施例提供一种分布式系统定时方法,包括根据接收的业务请求设置用户态定时器;接收到根据业务特性设置的核心态定时器发送的定时器消息后,检测所述设置的用户态定时器中是否有某一用户态定时器到点;若有,则发送定时事件通知;若没有,则不发送定时事件通知。
本发明实施例提供一种核心态定时器管理装置,包括空闲定时器队列,用于存储预留的可用核心态定时器对象;未激活定时器队列,用于存放利用所述空闲态定时器队列中的定时器对象设置的核心态定时器;活动定时器队列,用于存放所示未激活定时器队列中到点的核心态定时器;检测线程,用于按照预设的时间间隔检测所述未激活定时器队列中的核心态定时器是否到点,并将到点消息发送给通知线程;通知线程,用于在所述检测线程检测出有到点的核心态定时器时,从所述活动定时器队列中取出所述到点的核心态定时器,并发送定时器消息。
本发明实施例提供一种用户态定时器管理装置,包括空闲用户态定时器队列,用于存储预留的可用用户态定时器对象;未触发用户态定时器队列,用于存放根据业务特性,利用所述空闲用户态定时器队列中的定时器对象设置的用户态定时器;消息队列,用于接收核心态定时器发送的定时器消息;调度线程,用于从所述消息队列中获取所述核心态定时器消息,并在获取到所述消息后,检测所述未触发用户态定时器队列中是否有到点的用户态定时器,在有到点的用户态定时器时,调度所述用户态定时器,并发送相应的定时事件通知。
本发明实施例提供一种分布式系统中的定时系统,包括多个实现底层的线程驱动的核心态定时器;及用于对所述多个核心态定时器进行管理及设置的核心态定时器管理装置;多个由所述核心态定时器触发,实现高层消息驱动的用户态定时器;及用于对所述多个用户态定时器进行管理及设置的用户态定时器管理装置。
由上述本发明实施例提供的技术方案可以看出,本发明实施例通过采用设置多个核心态定时器和多个用户态定时器分层的设计方案,实现了分布式系统高效的定时机制,在不影响系统性能的情况下,扩大定时器的数量,而且业务模块可以根据业务的特性定制定时器,增强了定时器的实用性,提高了系统实用性能,彻底解决了现有技术分布式系统由于远程端服务返回失败,而导致的客户端吊死的问题。


图1为本发明实施例定时器队列的双向链表关系示意图;图2为本发明实施例设置核心态定时器流程图;图3为本发明实施例未激活定时器队列插入定时器示意图;图4为本发明实施例检测线程检测流程图;图5为本发明实施例通知线程工作流程图;图6为本发明实施例初始化用户态定时器流程图;图7为本发明实施例设置用户态定时器流程图;图8为本发明实施例调度线程调度流程;图9为本发明实施例方法总体流程图。
具体实施例方式
本发明实施例提供的分布式系统中的定时系统,采用设置多个核心态定时器和多个用户态定时器分层的设计方案。本实施例提供的定时系统包括多个核心态定时器、多个用户态定时器、一个核心态定时器管理装置、一个用户态定时器管理装置。
所述核心态定时器为用于实现少量的底层线程驱动的定时器,由所述核心态定时器管理装置统一管理。
所述用户态定时器由所述核心态定时器触发,用于实现大量的高层消息驱动的定时器,由所述用户态定时器管理装置统一管理。
所述核心态定时器管理装置一种实施例包含空闲定时器队列、活动定时器队列、未激活定时器队列、检测线程、及通知线程、。
所述空闲定时器队列,用于存储预留的可用核心态定时器对象;所述未激活定时器队列,用于存放利用所述空闲态定时器队列中的定时器对象设置的核心态定时器;所述活动定时器队列,用于存放所示未激活定时器队列中到点的核心态定时器。
所述空闲定时器队列、活动定时器队列、及未激活定时器队列都是以双向链表方式存在的,如图1所示,采用所述双向链表方式可以从节点本身直接找到该节点的前驱节点和后继节点;所述检测线程,用于按照预设的时间间隔检测所述未激活定时器队列中的核心态定时器是否到点,并将到点消息发送给通知线程;所述通知线程,用于在所述检测线程检测出有到点的核心态定时器时,从所述活动定时器队列中取出所述到点的核心态定时器,并发送定时器消息。所述定时通知先以定时器消息的形式发送给用户态定时器管理装置,之后到达业务模块,具体过程见后续介绍。
本发明实施例提供一种核心态定时器管理装置的实现方法,包括首先,根据业务需要设置一个核心态定时器,由核心态定时器管理装置从空闲态定时器队列中取出一个定时器对象,填充相关信息后,放到未激活的定时器队列中;核心态定时器管理装置控制所述核心态定时器中的检测线程检测所述未激活定时器队列中是否有定时器到点,如果有,则核心态定时器管理装置将所述到点的核心态定时器移到活动定时器队列中;由所述通知线程从所述活动定时器队列中取出定时器消息,发送定时通知。
其中核心态定时器管理装置设置核心态定时器及将所述核心态定时器放到未激活定时器队列中的具体方法如图2所示,包括步骤1根据业务需要设置一个核心态定时器;步骤2核心态定时器管理装置从空闲态定时器队列头部取出一个定时器对象,并填充所述业务模块设置核心态定时器需要的相关信息;包括填充定时次数、时间间隔等信息;步骤3核心态定时器管理装置将上述设置完成的核心态定时器放置在未激活定时器队列中;所述未激活定时器队列中的所有核心态定时器都按照距当前时间的先后顺序排序,距当前时间越近的排在前面,所以在插入新的定时器时需要按照时间先后插入到相应的位置中,如图3所示;步骤4将上述设置的核心态定时器ID信息返回给业务模块。
所述检测线程检测流程如图4所示,包括步骤1检测线程遍历未激活定时器队列;步骤2找到最后一个到点的核心态定时器,将该定时器之前的所有定时器插入到活动定时器队列的尾部;只要找到最后一个到点的定时器,之前的所有定时器都已经到点,之后的所有定时器都没有到点;步骤3检测线程休眠一个时间片,之后重复执行上述步骤1、步骤2。
所述时间片的大小为定时器的精度,可根据需要设定。
所述通知线程发送定时通知流程如图5所示,包括步骤1通知线程遍历活动定时器队列;所述活动定时器队列中存放了到点的核心态定时器;步骤2根据所述定时器的时间设定发送定时通知。
所述用户态定时器管理装置一种实施例包括空闲用户态定时器队列、未触发用户态定时器队列、消息队列、调度线程。
所述空闲用户态定时器队列,包含预留的可用用户态定时器对象;
所述未触发用户态定时器队列,用于存放业务模块根据业务特性设置的用户态定时器。
所述消息队列,用于接收核心态定时器发送的定时器消息;所述调度线程,用于从消息队列中获取所述定时器消息,并在获取到所述消息后,检测所述未触发用户态定时器队列中是否有到点的用户态定时器,在有到点的用户态定时器时,调度所述用户态定时器,向业务模块发送相应的定时事件通知。
本发明实施例提供一种用户态定时器管理装置的实现方法,包括业务模块根据业务特性需要设置一个用户态定时器管理装置,所述设置的用户态定时器包括;支持的最大定时数量(与所述空闲用户态定时器队列的长度对应)、和定时器的精度等特性;由所述用户态定时器管理装置从空闲用户态定时器队列中取出一个定时器对象,添加相应的业务特性信息后,将其放到未触发用户态定时器队列中;在设置所述用户态定时器管理装置过程中,用户态定时器管理装置会根据业务的需要设置一个核心态定时器(由用户态定时器管理装置通知核心态定时器管理装置来完成设置,其设置过程参见上述核心态定时器的描述),所述核心态定时器不断发送定时器消息给所述用户态定时器队列。在业务模块每接收到一个业务请求会通知所述用户态定时器管理装置设置一个用户态定时器,所述用户态定时器管理装置接收到所述核心态定时器发送到消息队列中的定时器消息后;用户态定时器管理装置的调度线程从所述消息队列中获取所述定时器消息,并检测所述未触发用户态定时器队列中是否有定时器到点,如果有,则调度相应的定时器,给业务模块发送相应的定时事件通知。
所述设置用户态定时器管理装置的流程如图6所示,包括步骤1业务模块根据业务需要设置用户态定时器管理装置;所述设置的用户态定时器管理装置包括支持的最大定时数量(与所述空闲用户态定时器队列的长度对应)、和定时器的精度等特性;步骤2用户态定时器管理装置根据业务的需要设置一个核心态定时器,并将所述用户态定时器管理装置的特性传递给所述核心态定时器;步骤3所述核心态定时器以预先指定的时间间隔可以按照上述实施例的方法不断发送定时器消息。
业务模块每接收到一个业务请求,用户态定时器管理装置就会设置一个用户态定时器,所述用户态定时器管理装置设置用户态定时器的流程如图7所示,包括步骤1业务模块接收到业务请求需要用户态定时器管理装置设置指定特性的用户态定时器;所述指定特性包括支持的最大定时数量(与所述空闲用户态定时器队列的长度对应)、和定时器的精度;步骤2用户态定时器管理装置从空闲用户态定时器队列中取出一个定时器对象,并填充所述特性信息;步骤3将所述设置的用户态定时器插入到未触发用户态定时器队列的适当位置;所述未触发用户态定时器队列中的所有用户态定时器都按照距当前时间的先后顺序排序,距当前时间越近的排在前面,所以在插入新的定时器对象时需要按照时间先后插入到相应的位置中;步骤4将上述设置的用户态定时器ID信息返回给业务模块。
所述调度线程调度流程如图8所示,包括步骤1调度线程不断从消息队列中取出核心态定时器消息;步骤2每取出一个消息,就遍历未触发用户态定时器队列中是否有到点的用户态定时器;步骤3如果有到点的用户态定时器,则向业务模块发送定时事件通知。
通过上述的叙述可知,所述核心态定时器为底层的定时器,所述用户态定时器为高层定时器,是根据具体业务特性而设置的定时器。因此,本发明实施例核心态定时器与用户态定时器配合,实现定时机制的总的实现过程如图9所示,包括步骤1根据业务特性设置用户态定时器管理装置;具体设置方法如前面实施例所述;步骤2在所述业务模块启动时,所述用户态定时器管理装置使用核心态定时器管理装置设置核心态定时器(具体设置方法如前面实施例所述),所述设置的核心态定时器不断发送定时器消息给所述用户态定时器管理装置;所述核心态定时器管理装置所管理的核心态定时器数量为操作系统本身具有的,每个业务所使用的核心态定时器可根据需要来选择;步骤3业务模块每接收到一个业务请求,所述用户态定时器管理装置就会从所述空闲用户态定时器队列中取出一个定时器对象,设置一个用户态定时器(设置方法可如上述实施例)放置于未触发用户态定时器队列中;步骤4所述用户态定时器管理装置每次接收到所述核心态定时器消息后,检测所述未触发定时器队列中是否有某一用户态定时器到点;若有,则执行步骤5,即发送定时事件通知给业务模块;若没有,则执行步骤6,即不发送定时事件通知。
所述核心态定时器发送定时器消息的频率比所述用户态定时器发送定时时间通知的频率高。
下面以一个具体的实例来说明核心态定时器与用户态定时器配合实现系统定时的过程。
假设有一计费模块(即上述的业务模块)需要每秒钟处理1000个计费请求,每个计费请求都会有一次远程调用,这样就需要同时有1000个定时器监控1000个远程调用,如果远程调用10秒钟没有成功,就算失败;按照上述描述的方案假设有一个最大能够使用5个核心态定时器的核心态定时器管理装置,每个定时器的精度为1秒,即最小定时时间为1秒;定时监控过程包括如下步骤1.计费模块需要设置一个用户态定时器管理装置,要求该用户态定时器管理装置最多能使用1000个用户态定时器,每个用户态定时器的定时间隔为10秒;2.计费模块启动时,其用户态定时器管理装置使用核心态定时器管理装置设置核心态的定时器,假如只需设置一个,其定时间隔为5秒,这样核心态定时器就会每隔5秒钟给用户态定时器管理装置发送一条定时器消息;3.计费模块收到一条计费请求,就会通知用户态定时器管理装置设置一个用户态的定时器,即从用户态定时器管理装置的空闲用户态定时器队列中取出一个定时器对象,并将其放到未触发用户态定时器队列中,该用户态定时器中保存的超时时间为当前时间+10秒;4.所述用户态定时器收到核心态的定时器每隔5秒发送的定时器消息后,就会遍历用户态定时器管理装置的未触发用户态定时器队列,如果发现有到点的用户态定时器,就表明有一个远程调用超时了,其对应的计费请求就失败了。
综上所述,本发明实施例通过采用设置多个核心态定时器和多个用户态定时器分层的设计方案,实现了分布式系统高效的定时机制,在不影响系统性能的情况下,扩大定时器的数量,而且业务模块可以根据业务的特性定制定时器,增强了定时器的实用性,提高了系统实用性能,彻底解决了现有技术分布式系统由于等待远程端服务应答失败,而导致的客户端吊死的问题。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
权利要求
1.一种分布式系统定时方法,其特征在于,包括根据接收的业务请求设置用户态定时器;接收到根据业务特性设置的核心态定时器发送的定时器消息后,检测所述设置的用户态定时器中是否有某一用户态定时器到点;若有,则发送定时事件通知;若没有,则不发送定时事件通知。
2.如权利要求1所述的方法,其特征在于,由根据业务特性设置的用户态定时器管理装置设置所述用户态定时器。
3.如权利要求2所述的方法,其特征在于,所述根据业务特性设置的用户态定时器管理装置包括支持的最大定时数量、和定时器的精度特性。
4.如权利要求2所述的方法,其特征在于,所述用户态定时器管理装置包括空闲用户态定时器队列、未触发用户态定时器队列、消息队列、调度线程,其设置用户态定时器的方法包括从空闲用户态定时器队列中取出一个定时器对象,根据业务的特性设置所述用户态定时器的精度和最大定时器的数量;将所述设置的用户态定时器放置于未触发用户态定时器队列中;返回所述用户态定时器ID。
5.如权利要求4所述的方法,其特征在于,所述检测所述设置的用户态定时器中是否有某一用户态定时器到点的方法包括用户态定时器管理装置中的消息队列接收所述核心态定时器发送的定时器消息;所述调度线程从所述消息队列中获取所述定时器消息后,检测未触发用户态定时器队列中是否有到点的用户态定时器。
6.如权利要求1所述的方法,其特征在于,由核心态定时器管理装置根据业务特性设置所述核心态定时器。
7.如权利要求6所述的方法,其特征在于,所述核心态定时器管理装置包括空闲定时器队列、未激活定时器队列、活动定时器队列、检测线程、通知线程,其设置核心态定时器的方法包括从空闲定时器队列中取出一个定时器对象,并填充相关信息;将所述设置的定时器放置于未激活定时器队列中;返回所述定时器ID。
8.如权利要求7所述的方法,其特征在于,所述填充的相关信息包括定时次数、时间间隔。
9.如权利要求7所述的方法,其特征在于,所述核心态定时器发送定时器消息的方法包括所述检测线程每间隔预设时间遍历未激活定时器队列中是否有核心态定时器到点,若有,则将所述到点的核心态定时器之前的所有核心态定时器移动到活动定时器队列中;通知线程从所述活动队列中取出所述到点的核心态定时器,并发送定时器消息。
10.如权利要求9所述的方法,其特征在于,所述检测线程将所述到点的核心态定时器按照距当前时间先后顺序插入到所述活动定时器队列中。
11.一种核心态定时器管理装置,其特征在于,包括空闲定时器队列,用于存储预留的可用核心态定时器对象;未激活定时器队列,用于存放利用所述空闲态定时器队列中的定时器对象设置的核心态定时器;活动定时器队列,用于存放所示未激活定时器队列中到点的核心态定时器;检测线程,用于按照预设的时间间隔检测所述未激活定时器队列中的核心态定时器是否到点,并将到点消息发送给通知线程;通知线程,用于在所述检测线程检测出有到点的核心态定时器时,从所述活动定时器队列中取出所述到点的核心态定时器,并发送定时器消息。
12.如权利要求11所述的核心态定时器管理装置,其特征在于,所述空闲定时器队列、活动定时器队列、及未激活定时器队列以双向链表方式存在。
13.一种用户态定时器管理装置,其特征在于,包括空闲用户态定时器队列,用于存储预留的可用用户态定时器对象;未触发用户态定时器队列,用于存放根据业务特性,利用所述空闲用户态定时器队列中的定时器对象设置的用户态定时器;消息队列,用于接收核心态定时器发送的定时器消息;调度线程,用于从所述消息队列中获取所述核心态定时器消息,并在获取到所述消息后,检测所述未触发用户态定时器队列中是否有到点的用户态定时器,在有到点的用户态定时器时,调度所述用户态定时器,并发送相应的定时事件通知。
14.一种分布式系统中的定时系统,其特征在于,包括多个实现底层的线程驱动的核心态定时器;及用于对所述多个核心态定时器进行管理及设置的核心态定时器管理装置;多个由所述核心态定时器触发,实现高层消息驱动的用户态定时器;及用于对所述多个用户态定时器进行管理及设置的用户态定时器管理装置。
全文摘要
一种分布式系统定时方法、装置及系统。所述方法包括根据接收的业务请求设置用户态定时器;接收到根据业务特性设置的核心态定时器发送的定时器消息后,检测所述设置的用户态定时器中是否有某一用户态定时器到点;若有,则发送定时事件通知;若没有,则不发送定时事件通知。本发明实施例实现了分布式系统高效的定时机制,彻底解决了现有技术分布式系统由于等待远程端服务应答失败,而导致的客户端吊死的问题。
文档编号G06F11/34GK101039216SQ20071006493
公开日2007年9月19日 申请日期2007年3月29日 优先权日2007年3月29日
发明者薛定胜 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1