CN101442549B - 一种控制并发错误的方法及装置 - Google Patents
一种控制并发错误的方法及装置 Download PDFInfo
- Publication number
- CN101442549B CN101442549B CN200810185145A CN200810185145A CN101442549B CN 101442549 B CN101442549 B CN 101442549B CN 200810185145 A CN200810185145 A CN 200810185145A CN 200810185145 A CN200810185145 A CN 200810185145A CN 101442549 B CN101442549 B CN 101442549B
- Authority
- CN
- China
- Prior art keywords
- application service
- sign
- triggers
- triggered
- service
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种控制并发错误的方法及装置。一种控制并发错误的方法包括:为所调用的应用服务添加触发标识;将添加触发标识后的应用服务加入任务队列;当满足触发条件时,根据所述触发标识,触发所述任务队列中的应用服务。应用本发明技术方案,不仅能够避免程序并发操作数据所引起的错误,而且不会导致应用服务经常性的执行失败,有效地提高了系统的稳定性和处理效率。
Description
技术领域
本发明涉及数据处理技术领域,特别是涉及一种控制并发错误的方法及装置。
背景技术
分布式对象(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;
而在分布式环境下,P1和P2可能出现同时被触发(或者P2在P1触发后立即被触发),P1被触发后得到的结果是x=6;而P2被触发时,其读取的变量x值尚未被P1所更新,依然是x=1,因此P2被触发后得到的结果将是是y=11。
可见,如果不同的应用服务,其处理的对象相同或部分相同(例如上述的P1和P2,其处理对象都涉及变量x),那么同时被触发就会引起并发错误。在现有技术中,一种控制并发错误的方案是,当某个应用服务被触发时,对其要处理的对象加排它锁,禁止其他应用服务对这些对象的访问。例如在上面的例子中,P1在执行时,将对变量x加排它锁,这样如果在P1执行过程中触发了P2,P2在试图读取变量x时会收到失败响应,并等待x被释放后再继续执行,从而保证最终结果的正确性。
在实现本发明的过程中,发明人发现有技术中至少存在如下问题:对数据加排它锁的方法可以从一定程度上避免并发错误,但是当应用服务需要处理的数据量比较大,而且并发量较大时,将会导致经常性的执行失败,从而对整个系统的稳定性和处理效率造成影响。
发明内容
有鉴于此,本发明实施例提供了一种控制并发错误的方法及装置,以解决现有的控制并发错误的方案所导致的系统稳定性和处理效率低下的问题,技术方案如下:
一种控制并发错误的方法,包括:
为所调用的应用服务添加触发标识;
将添加触发标识后的应用服务加入任务队列;
当满足触发条件时,根据所述触发标识,触发所述任务队列中的应用服务。
一种应用服务管理器,包括:
触发标识添加单元,用于为所调用的应用服务添加触发标识;
任务添加单元,用于将所述封装单元封装后的应用服务加入任务队列;
触发单元,用于当满足触发条件时,根据所述触发标识,触发所述任务队列中的应用服务。
以上所提供的技术方案,通过应用服务管理器,定义任务队列表,将原本直接调用应用服务的形式改为向任务队列中添加一项任务,服务管理中心根据任务先后顺序,依次调用相应的服务,不仅能够避免程序并发操作数据所引起的错误,而且不会导致应用服务经常性的执行失败,有效地提高了系统的稳定性和处理效率。
附图说明
图1为实现本发明方法具体实施例一的流程图;
图2为实现本发明方法具体实施例二的流程图;
图3为本发明实施例应用服务管理器的结构示意图;
图4为本发明实施例应用服务管理器的另一种结构示意图。
具体实施方式
首先对本发明实施例的控制并发错误的方法进行说明,包括:
为所调用的应用服务添加触发标识;
将添加触发标识后的应用服务加入任务队列;
当满足触发条件时,根据所述触发标识,触发所述任务队列中的应用服务。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图对本发明作进一步的详细说明。
实施例一:
图1所示为本发明实施例的一种控制并发错误的方法流程图,包括以下步骤:
S101,当主叫应用端UA调用应用服务时,对所调用的应用服务进行封装处理,添加触发标识。
在本发明技术方案中,应用服务被调用后,不会立刻执行,而是先送至UA本地的AM(Application Manager,应用服务管理器)进行处理。为了令AM能够对应用服务进行正确调度,需要首先对应用服务进行封装,封装的主要内容包括为所述应用服务添加触发标识。
我们可以为应用服务添加顺序触发标识,使得AM能够按照一定的顺序对应用服务进行调度。顺序触发标识可以由1开始,并由系统自动累加生成。例如,在前面所述的例子中,我们可以为P1添加标识“1”,为P2添加标识“2”,用以标明两个应用服务的触发顺序。
S102,将封装后的应用服务加入任务队列。
一般来说,我们将封装后的应用服务按照所添加标识的序号,加入任务队列。为了便于管理,我们可以构建一张任务队列表。任务队列表中的每一条记录都代表一个UA所调用的应用服务,除了标识序号之外,每条记录中还应该包括一个服务调用标识字段,字段类型为布尔型,用于标识该应用服务是否已成功触发并正确执行。
此外,在每条记录中,还可以包含以下字段:
1)任务编码,类型为数字,AM根据编码决定调用哪个功能
2)参数列表,类型为字符,为应用服务在处理任务时需要的参数。
3)建立时间,类型为日期,用于记录任务建立时间。
4)处理时间,类型为日期,用于记录任务实际处理时间。
5)处理用时,类型为数字,用于记录处理本次任务所用时长,单位可以是毫秒或秒。
6)任务处理标志,类型为布尔,用于标识本次任务是否已处理。
7)异常记录,类型为字符,用于记录处理异常的详细描述。
S103,当满足触发条件时,按照任务队列中的顺序,触发应用服务。
由于在S101中,我们为应用服务添加了时序触发条件,因此我们仅需按照添加标识的序号,依次触发应用服务,就可以有效避免并发错误。
例如,在前面所述的例子中,AM首先会触发任务列表中标识序号最小且服务调用标识=false的应用服务,即P1,当P1执行完毕后,AM会将P1所对应的服务调用标识字段更新为true,然后AM再次触发任务列表中标识序号最小且服务调用标识字段为false的应用服务,此时满足该条件的应用服务为P2,P2执行完毕后,任务列表中已经没有服务调用标识字段为false的应用服务,本次任务处理完毕。
在上面的实施例中,通过建立一种集中队列式处理机制,将原本可能并发的任务做了串行化处理,避免了并发错误,由于应用服务是按照AM的调度依次被调用,因此不会出现应用服务执行失败的情况,有效地提高了系统的稳定性和处理效率。
实施例二:
在本发明的优选实施例中,服务管理中心可以通过对应用服务的功能进行分析,得知哪些应用服务可以并发执行而不会产生错误,进一步可以在封装处理过程中,为这些应用服务添加事件触发条件,使得这些应用服务可以并行被调用,从而进一步提供系统的处理效率。
以下假设P1、P2、P3、P4、P5、P6为不同的应用服务,其对应功能如下:
P1: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除了为P1-P6添加顺序触发标识(即标识序号)外,还会对每个应用服务进行分析(由于P1之前没有其他应用服务,因此对于P1可以不进行分析),检查该应用服务的输入变量是否会被该应用服务的前一个应用服务所更新。例如:
对于P2,其输入变量为x,x会被P1所更新;
对于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同时被触发。
同理,由于P5所用的输入变量x和y都不会被P4所更新,因此也可以为P5添加事件触发标识,表明P5可以与其上一个应用服务P4同时被调用。
相应的,AM在触发一个服务后,会立即查询列表中的下一个服务是否具有事件触发标识,如果有,则立即触发下一个服务,无需等待当前服务执行完毕。在上面所举的例子中,AM在触发P3后,查询到P4具有事件触发标识,因此可以立即触发P4;由于P5也具有事件触发标识,因此在触发P4后还会立即触发P5。P6不具有事件触发标识,因此不会立即被触发,待P5执行完毕后,AM会触发任务列表中标识序号最小,且服务调用标识字段为false的应用服务,此时P6满足该触发条件而被触发。
为便于理解,本实施例的方法流程可以参见图2所示,具体步骤描述如下:
S201,主叫应用端UA调用应用服务时,为所调用的应用服务添加顺序触发标识。
S202,通过对所调用的应用服务进行分析,为其添加事件触发标识。
S203,将添加触发标识后的应用服务加入任务队列。
S204,当触发一个应用服务后,判断该应用服务的下一个应用服务是否具有事件触发标识,如果是,则执行S205,否则执行S206.
S205,立即触发下一个应用服务。
S206,当该应用服务执行完毕后,触发任务队列中顺序触发标识值最小且未被触发过的应用服务。
应用本实施例的方案,由于预先对每个服务进行了分析,因此可以在保证不会产生并发错误的前提下,实现P3、P4和P5几乎并行的触发,从而进一步提高了系统的整体处理效率。
相应于上面的方法实施例,本发明实施例还提供一种应用服务管理器,参见图3所示,包括:
触发标识添加单元310,用于为所调用的应用服务添加触发标识;
任务添加单元320,用于将所述封装单元封装后的应用服务加入任务队列;
触发单元330,用于当满足触发条件时,根据所述触发标识,触发所述任务队列中的应用服务。
其中,所述触发标识添加单元可以为顺序触发标识添加单元,用于为应用服务添加顺序触发标识;
则所述触发单元330,用于当一个应用服务执行完毕后,触发任务队列中顺序触发标识值最小且未被触发过的应用服务。
参见图4所示,所述触发标识添加单元310可以包括:
顺序触发标识添加子单元311,用于为应用服务添加顺序触发标识;
事件触发标识添加子单元312,用于对所述应用服务进行分析,如果所述应用服务能够与该应用服务的前一个应用服务并发执行,则为所述应用服务添加事件触发标识;
则所述触发单元330,用于当一个应用服务被触发后,检查任务队列中该应用服务的下一个应用服务是否具有事件触发标识,如果有,则触发所述下一个应用服务;和,当一个应用服务执行完毕后,触发任务队列中顺序触发标识值最小且未被触发过的应用服务。
对于装置实施例而言,由于其基本相应于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
可以理解的是,本发明可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
以上所述仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (3)
1.一种控制并发错误的方法,其特征在于,包括:
为所调用的应用服务进行封装,添加顺序触发标识;
对所述应用服务进行分析,判断所述应用服务是否能够与该应用服务的前一个应用服务并发执行,如果是,则为所述应用服务添加事件触发标识;
将添加触发标识后的应用服务加入任务队列;
当一个应用服务被触发后,检查任务队列中该应用服务的下一个应用服务是否具有事件触发标识,如果有,则触发所述下一个应用服务;和,
当一个应用服务执行完毕后,触发任务队列中顺序触发标识值最小且未被触发过的应用服务。
2.根据权利要求1所述的方法,其特征在于,所述判断所述应用服务是否能够与该应用服务的前一个应用服务并发执行,具体实现为:
判断所述应用服务的输入变量是否会被所述前一个应用服务更新,如果否,则所述应用服务能够与该应用服务的前一个应用服务并发执行。
3.一种应用服务管理器,其特征在于,包括:
触发标识添加单元,用于为所调用的应用服务添加触发标识;所述触发标识添加单元包括:顺序触发标识添加子单元,用于为应用服务添加顺序触发标识;事件触发标识添加子单元,用于对所述应用服务进行分析,如果所述应用服务能够与该应用服务的前一个应用服务并发执行,则为所述应用服务添加事件触发标识;
任务添加单元,用于将所述添加触发标识后的应用服务加入任务队列;
触发单元,用于当一个应用服务被触发后,检查任务队列中该应用服务的下一个应用服务是否具有事件触发标识,如果有,则触发所述下一个应用服务;和,当一个应用服务执行完毕后,触发任务队列中顺序触发标识值最小且未被触发过的应用服务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810185145A CN101442549B (zh) | 2008-12-11 | 2008-12-11 | 一种控制并发错误的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810185145A CN101442549B (zh) | 2008-12-11 | 2008-12-11 | 一种控制并发错误的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101442549A CN101442549A (zh) | 2009-05-27 |
CN101442549B true CN101442549B (zh) | 2012-10-03 |
Family
ID=40726787
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200810185145A Active CN101442549B (zh) | 2008-12-11 | 2008-12-11 | 一种控制并发错误的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101442549B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105824697A (zh) * | 2016-03-23 | 2016-08-03 | 浪潮通信信息系统有限公司 | 一种基于队列的分布式多级调度方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1633121A (zh) * | 2004-12-20 | 2005-06-29 | 华中科技大学 | 网络存储系统的流水处理方法 |
CN101005486A (zh) * | 2006-12-28 | 2007-07-25 | 金蝶软件(中国)有限公司 | 一种资源访问控制方法及系统 |
-
2008
- 2008-12-11 CN CN200810185145A patent/CN101442549B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1633121A (zh) * | 2004-12-20 | 2005-06-29 | 华中科技大学 | 网络存储系统的流水处理方法 |
CN101005486A (zh) * | 2006-12-28 | 2007-07-25 | 金蝶软件(中国)有限公司 | 一种资源访问控制方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN101442549A (zh) | 2009-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230106675A1 (en) | Api driven continuous testing systems for testing disparate software | |
CN109582301B (zh) | 基于任务调度系统的业务处理方法、装置、设备及介质 | |
CN110427252B (zh) | 基于任务依赖关系的任务调度方法、装置及存储介质 | |
US9602599B2 (en) | Coordinating application migration processes | |
CN105068855B (zh) | 一种编译安卓包开发文件的方法、服务器和系统 | |
CN100511156C (zh) | 强制性地终止输入/输出操作阻止的线程的设备和方法 | |
CN111399897A (zh) | 基于kubernetes的应用发布方法以及系统 | |
CN108733496B (zh) | 事件处理方法和装置 | |
US8286194B2 (en) | Coupling state aware systems | |
CN105068865A (zh) | 任务调度方法和装置 | |
CN111580926A (zh) | 模型发布方法、模型部署方法、装置、设备及存储介质 | |
CN113220431B (zh) | 跨云的分布式数据任务调度方法、设备及存储介质 | |
CN109117141A (zh) | 简化编程的方法、装置、电子设备、计算机可读存储介质 | |
CN112988185A (zh) | 云应用更新方法、装置、系统、电子设备及存储介质 | |
US11068487B2 (en) | Event-stream searching using compiled rule patterns | |
KR20230092657A (ko) | 로봇 프로세스 자동화 관련 리소스의 사용량의 정량화 | |
CN111026945B (zh) | 多平台爬虫调度方法、装置和存储介质 | |
CN101442549B (zh) | 一种控制并发错误的方法及装置 | |
US11861214B2 (en) | Memory device forensics and preparation | |
CN105224453A (zh) | 系统兼容性的自动测试方法及装置 | |
CN108170605A (zh) | Bug信息的提交方法、客户端与计算机可读存储介质 | |
CN113157429A (zh) | 一种saas云服务实现方法及系统 | |
CN108347456B (zh) | 一种应用程序下载方法及装置 | |
CN116089040A (zh) | 业务流程的调度方法及其装置、电子设备及存储介质 | |
CN113986097A (zh) | 一种任务调度的方法、装置及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |