一种控制并发错误的方法及装置的制作方法

文档序号:7922885阅读:138来源:国知局
专利名称:一种控制并发错误的方法及装置的制作方法
技术领域
本发明涉及数据处理技术领域,特别是涉及一种控制并发错误的方法及 装置。
背景技术
分布式对象(Distributed Object)技术为网络计算平台上软件的开发提供 了强有力的解决方案,目前,分布式对象技术已经成为建立服务应用框架和 软件构件的核心技术。在分布式对象计算(Distributed Object Computing, DOC ) 环境中,网络中的每个分布式对象,在作为服务提供者时,彼此是相互独立 的,因此,主叫应用端(User Application, UA)在调用服务时,由不同的提
供者提供的应用服务(程序)可能会被同时触发。
对于原本需要按顺序被触发才能获得正确结果的多个应用服务,如果被
同时触发,就可能会引起并发错误。例如应用服务P1的作用是将变量x的
值自加5,即x=x+5;应用服务P2的作用是令变量y的值等于变量x的值
加10,即y=x+10。正常情况下,我们希望P1、 P2顺序被触发,假设x的
初始值为1,那么顺序触发P1、 P2后,其结果应该是x=6、 y=16;
而在分布式环境下,PI和P2可能出现同时被触发(或者P2在PI触发
后立即被触发),PI被触发后得到的结果是x二6;而P2被触发时,其读取的
变量x值尚未被Pl所更新,依然是x^,因此P2被触发后得到的结果将是
是y:ll。
可见,如果不同的应用服务,其处理的对象相同或部分相同(例如上述 的P1和P2,其处理对象都涉及变量x),那么同时被触发就会引起并发错误。 在现有技术中, 一种控制并发错误的方案是,当某个应用服务被触发时,对 其要处理的对象加排它锁,禁止其他应用服务对这些对象的访问。例如在上 面的例子中,Pl在执行时,将对变量x加排它锁,这样如果在P1执行过程中 触发了 P2, P2在试图读取变量x时会收到失败响应,并等待x被释放后再继续执行,从而保证最终结果的正确性。
在实现本发明的过程中,发明人发现有技术中至少存在如下问题对数 据加排它锁的方法可以从一定程度上避免并发错误,但是当应用服务需要处 理的数据量比较大,而且并发量较大时,将会导致经常性的执行失败,从而 对整个系统的稳定性和处理效率造成影响。

发明内容
有鉴于此,本发明实施例提供了一种控制并发错误的方法及装置,以解 决现有的控制并发错误的方案所导致的系统稳定性和处理效率低下的问题, 技术方案如下
一种控制并发镅-误的方法,包括
为所调用的应用服务添加触发标识;
将添加触发标识后的应用服务加入任务队列;
当满足触发条件时,根据所述触发标识,触发所述任务队列中的应用服务。
一种应用服务管理器,包括
触发标识添加单元,用于为所调用的应用服务添加触发标识; 任务添加单元,用于将所述封装单元封装后的应用服务加入任务队列; 触发单元,用于当满足触发条件时,根据所述触发标识,触发所述任务 队列中的应用服务。
以上所提供的技术方案,通过应用服务管理器,定义任务队列表,将原 本直接调用应用服务的形式改为向任务队列中添加一项任务,服务管理中心 根据任务先后顺序,依次调用相应的服务,不仅能够避免程序并发操作数据 所引起的错误,而且不会导致应用服务经常性的执行失败,有效地提高了系 统的稳定性和处理效率。


图1为实现本发明方法具体实施例一的流程图; 图2为实现本发明方法具体实施例二的流程图; 图3为本发明实施例应用服务管理器的结构示意图;图4为本发明实施例应用服务管理器的另一种结构示意图。
具体实施例方式
首先对本发明实施例的控制并发错误的方法进行说明,包括 为所调用的应用服务添加触发标识; 将添加触发标识后的应用服务加入任务队列;
当满足触发条件时,根据所述触发标识,触发所述任务队列中的应用服务。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图对本发 明作进一步的详细说明。 实施例一
图1所示为本发明实施例的一种控制并发错误的方法流程图,包括以下 步骤
SlOl,当主叫应用端UA调用应用服务时,对所调用的应用服务进行封 装处理,添加触发标识。
在本发明技术方案中,应用服务被调用后,不会立刻执行,而是先送至 UA本地的AM (Application Manager,应用服务管理器)进行处理。为了令 AM能够对应用服务进行正确调度,需要首先对应用服务进行封装,封装的主 要内容包括为所述应用服务添加触发标识。
我们可以为应用服务添加顺序触发标识,使得AM能够按照一定的顺序 对应用服务进行调度。顺序触发标识可以由1开始,并由系统自动累加生成。 例如,在前面所述的例子中,我们可以为Pl添加标识"1",为P2添加标识 "2",用以标明两个应用服务的触发顺序。
S102,将封装后的应用服务加入任务队列。
一般来说,我们将封装后的应用服务按照所添加标识的序号,加入任务 队列。为了便于管理,我们可以构建一张任务队列表。任务队列表中的每一 条记录都代表一个UA所调用的应用服务,除了标识序号之外,每条记录中 还应该包括一个服务调用标识字段,字段类型为布尔型,用于标识该应用服务是否已成功触发并正确执行。
此外,在每条记录中,还可以包含以下字^殳
1) 任务编码,类型为数字,AM才艮据编码决定调用哪个功能
2) 参数列表,类型为字符,为应用服务在处理任务时需要的参数。
3) 建立时间,类型为日期,用于记录任务建立时间。
4) 处理时间,类型为日期,用于记录任务实际处理时间。
5) 处理用时,类型为数字,用于记录处理本次任务所用时长,单位可以 是毫秒或秒。
6) 任务处理标志,类型为布尔,用于标识本次任务是否已处理。
7) 异常记录,类型为字符,用于记录处理异常的详细描述。
S103,当满足触发条件时,按照任务队列中的顺序,触发应用服务。
由于在S101中,我们为应用服务添加了时序触发条件,因此我们仅需按 照添加标识的序号,依次触发应用服务,就可以有效避免并发错误。
例如,在前面所述的例子中,AM首先会触发任务列表中标识序号最小且 服务调用标识二false的应用服务,即Pl,当Pl执行完毕后,AM会将P1所 对应的服务调用标识字段更新为true,然后AM再次触发任务列表中标识序 号最小且服务调用标识字段为false的应用服务,此时满足该条件的应用服务 为P2, P2执行完毕后,任务列表中已经没有服务调用标识字段为false的应 用服务,本次任务处理完毕。
在上面的实施例中,通过建立一种集中队列式处理机制,将原本可能并 发的任务做了串行化处理,避免了并发错误,由于应用服务是按照AM的调 度依次被调用,因此不会出现应用服务执行失败的情况,有效地提高了系统 的稳定性和处理效率。
实施例二
在本发明的优选实施例中,服务管理中心可以通过对应用服务的功能进 行分析,得知哪些应用服务可以并发执行而不会产生错误,进一步可以在封 装处理过程中,为这些应用服务添加事件触发条件,使得这些应用服务可以 并行被调用,从而进一步提供系统的处理效率。以下假设P1、 P2、 P3、 P4、 P5、 P6为不同的应用服务,其对应功能如下:
Pl:x=x+5;
P2:y二x+10;
P3:a=x+y;
P4:b=x-y;
P5:c=x/y;
P6:d=a+b+c。
当UA调用以上服务时,UA本地的AM除了为Pl-P6添加顺序触发标识 (即标识序号)外,还会对每个应用服务进行分析(由于PI之前没有其他应 用服务,因此对于PI可以不进行分析),检查该应用服务的输入变量是否会 被该应用月良务的前一个应用月l务所更新。例如 对于P2,其输入变量为x, x会被Pl所更新; 对于P3,其输入变量为x和y,其中y会被P2所更新; 对于P4,其输入变量为x和y, x和y都不会^皮P3所更新; 对于P5,其输入变量为x和y, x和y都不会^皮P4所更新; 对于P6,其输入变量为a、 b和c,其中c会被P6所更新。 由于P4所用的输入变量x和y都不会净皮P3所更新,说明P4可以与P3 同时执行,而不会引起并发错误。我们在封装过程中,可以进一步为P4添加 事件触发标识,例如"P3",或者仅是一个布尔值"true",表明P4可以与其 上一个应用服务P3同时#1触发。
同理,由于P5所用的输入变量x和y都不会^皮P4所更新,因此也可以 为P5添加事件触发标识,表明P5可以与其上一个应用服务P4同时被调用。 相应的,AM在触发一个服务后,会立即查询列表中的下一个服务是否具 有事件触发标识,如果有,则立即触发下一个服务,无需等待当前服务执行 完毕。在上面所举的例子中,AM在触发P3后,查询到P4具有事件触发标 识,因此可以立即触发P4;由于P5也具有事件触发标识,因此在触发P4后 还会立即触发P5。 P6不具有事件触发标识,因此不会立即被触发,待P5执 行完毕后,AM会触发任务列表中标识序号最小,且服务调用标识字段为false 的应用力良务,此时P6满足该触发条件而^皮触发。为便于理解,本实施例的方法流程可以参见图2所示,具体步骤描述如

5201, 主叫应用端UA调用应用月良务时,为所调用的应用J良务添加顺序 触发标识。
5202, 通过对所调用的应用服务进行分析,为其添加事件触发标识。
5203, 将添加触发标识后的应用服务力。入任务队列。
S204,当触发一个应用服务后,判断该应用服务的下一个应用服务是否 具有事件触发标识,如果是,则执行S205,否则执行S206. S205,立即触发下一个应用月良务。
S206,当该应用服务执行完毕后,触发任务队列中顺序触发标识值最小 且未被触发过的应用服务。
应用本实施例的方案,由于预先对每个服务进行了分析,因此可以在保 证不会产生并发错误的前提下,实现P3、 P4和P5几乎并行的触发,从而进 一步提高了系统的整体处理效率。
相应于上面的方法实施例,本发明实施例还提供一种应用服务管理器, 参见图3所示,包括
触发标识添加单元310,用于为所调用的应用服务添加触发标识; 任务添加单元320,用于将所述封装单元封装后的应用服务加入任务队
列;
触发单元330,用于当满足触发条件时,根据所述触发标识,触发所述任
务队列中的应用服务。
其中,所述触发标识添加单元可以为顺序触发标识添加单元,用于为应
用月良务添加顺序触发标识;
则所述触发单元330,用于当一个应用服务执行完毕后,触发任务队列中
顺序触发标识值最小且未被触发过的应用服务。
参见图4所示,所述触发标识添加单元310可以包括 顺序触发标识添加子单元311,用于为应用力l务添加顺序触发标识; 事件触发标识添加子单元312,用于对所述应用服务进行分析,如果所述应用服务能够与该应用服务的前一个应用服务并发执行,则为所述应用服务
添加事件触发标识;
则所述触发单元330,用于当一个应用服务被触发后,检查任务队列中该 应用服务的下一个应用服务是否具有事件触发标识,如果有,则触发所述下 一个应用服务;和,当一个应用服务执行完毕后,触发任务队列中顺序触发 标识值最小且未被触发过的应用服务。
对于装置实施例而言,由于其基本相应于方法实施例,所以描述得比较 简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例 仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是
以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要 选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术
人员在不付出创造性的劳动的情况下,即可以理解并实施。
可以理解的是,本发明可用于众多通用或专用的计算系统环境或配置中。 例如个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、 多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网 络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环 境等等。
以上所述仅是本发明的具体实施方式
,应当指出,对于本技术领域的普 通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润 饰,这些改进和润饰也应视为本发明的保护范围。
权利要求
1、一种控制并发错误的方法,其特征在于,包括为所调用的应用服务添加触发标识;将添加触发标识后的应用服务加入任务队列;当满足触发条件时,根据所述触发标识,触发所述任务队列中的应用服务。
2、 根据权利要求1所述的方法,其特征在于,所述为应用服务添加触发 标识,具体实现为为应用服务添加顺序触发标识。
3、 根据权利要求2所述的方法,其特征在于,所述当满足触发条件时, 根据触发标识,触发所述任务队列中的应用服务,具体实现为当一个应用服务执行完毕后,触发任务队列中顺序触发标识值最小且未 被触发过的应用服务。
4、 根据权利要求2所述的方法,其特征在于,在为应用服务添加顺序触 发标识之后,还包括对所述应用服务进行分析,判断所述应用服务是否能够与该应用服务的 前一个应用服务并发执行,如果是,则为所述应用服务添加事件触发标识。
5、 根据权利要求4所述的方法,其特征在于,所述判断所述应用服务是 否能够与该应用服务的前一个应用服务并发执行,具体实现为判断所述应用服务的输入变量是否会被所述前一个应用服务更新,如果 否,则所述应用服务能够与该应用服务的前一个应用服务并发执行。
6、 根据权利要求4或5所述的方法,其特征在于,所述当满足触发条件 时,根据触发标识,触发所述任务队列中的应用服务,具体实现为当 一个应用服务被触发后,检查任务队列中该应用服务的下一个应用服 务是否具有事件触发标识,如果有,则触发所述下一个应用服务;和,当一个应用服务执行完毕后,触发任务队列中顺序触发标识值最小且未 被触发过的应用服务。
7、 一种应用服务管理器,其特征在于,包括 触发标识添加单元,用于为所调用的应用月l务添加触发标识; 任务添加单元,用于将所述封装单元封装后的应用服务加入任务队列; 触发单元,用于当满足触发条件时,根据所述触发标识,触发所述任务队列中的应用服务。
8、 根据权利要求7所述的应用服务管理器,其特征在于,所述触发标识 添加单元为顺序触发标识添加单元,用于为应用服务添加顺序触发标识;则所述触发单元,用于当一个应用服务执行完毕后,触发任务队列中顺 序触发标识值最小且未被触发过的应用服务。
9、 根据权利要求7所述的应用服务管理器,其特征在于,所述触发标识 添加单元包4舌顺序触发标识添加子单元,用于为应用服务添加顺序触发标识; 事件触发标识添加子单元,用于对所述应用服务进行分析,如果所述应用服务能够与该应用服务的前一个应用服务并发执行,则为所述应用服务添加事件触发标识;则所述触发单元,用于当一个应用服务被触发后,检查任务队列中该应 用服务的下一个应用服务是否具有事件触发标识,如果有,则触发所述下一 个应用服务;和,当一个应用服务执行完毕后,触发任务队列中顺序触发标 识值最小且未被触发过的应用服务。
全文摘要
本发明公开了一种控制并发错误的方法及装置。一种控制并发错误的方法包括为所调用的应用服务添加触发标识;将添加触发标识后的应用服务加入任务队列;当满足触发条件时,根据所述触发标识,触发所述任务队列中的应用服务。应用本发明技术方案,不仅能够避免程序并发操作数据所引起的错误,而且不会导致应用服务经常性的执行失败,有效地提高了系统的稳定性和处理效率。
文档编号H04L29/08GK101442549SQ20081018514
公开日2009年5月27日 申请日期2008年12月11日 优先权日2008年12月11日
发明者王成明 申请人:金蝶软件(中国)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1