System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及无人设备,具体地,涉及一种基于soa架构下逻辑时钟的事件运行控制方法及系统,同时涉及一种相应的计算机终端及计算机可读存储介质。
技术介绍
1、传统架构以项目为中心,独立开发、部署、维护,并且架构中应用系统紧密耦合,修改一个系统可能会对其他系统造成影响,功能也比较单一,重用性差。为了解决该问题,产生了一种面向服务的体系架构,即soa架构,它将应用程序的功能划分为一组相互关联的可重用服务,每个服务代表了某个特定的业务功能,并通过标准化的接口和协议与其他服务进行交互。
2、无人设备启动应用程序,基于soa架构调用相互关联的各种服务,若不考虑物理时间偏差、网络延迟等不利因素,原本有逻辑顺序的事件会以正常发生顺序传递给其他服务或节点,系统能够保证事务按正常逻辑进行运行。但在实际情况下,这些不利因素是无法避免的,此时会出现异常逻辑的工作流程,比如时间发生在前的事件在传递过程被网络延迟影响,导致时间发生在后的事件被先接收处理,而时间发生在前的事件出现在时间发生在后的事件的时间线后,造成这样不符合正常逻辑的工作流程。
技术实现思路
1、本专利技术针对现有技术中存在的上述不足,提供了一种基于soa架构下逻辑时钟的事件运行控制方法及系统,同时提供了一种相应的计算机终端终端及计算机可读存储介质。
2、根据本专利技术的一个方面,提供了一种基于soa架构下逻辑时钟的事件运行控制方法,包括:
3、在每一个服务启动时,为服务增加逻辑时钟时间戳,初始化本地逻辑时钟
4、根据所述事件发生的逻辑先后顺序,调用服务流程,更新事件本地逻辑时钟的时间戳;
5、为每一个服务设置一个消息队列,利用所述消息队列在设定时间内对接收到事件的逻辑时钟进行排序,并存储逻辑时钟的时间戳值;比较所述逻辑时钟的时间戳值,判断事件的逻辑顺序,控制事件发生按照既定逻辑顺序被其他节点处理,完成事件运行控制。
6、优选地,所述初始化本地逻辑时钟,包括:
7、设定每一个服务管理一个逻辑时钟,初始值为0。
8、优选地,设定逻辑时钟更新规则,包括:
9、设定内部事件逻辑时钟更新规则,包括:若事件发生在服务内部,即本地事件,则对本地逻辑时钟更新,增加1个单位;
10、设定发送事件逻辑时钟更新规则,包括:若事件为发送事件,即从本服务发送给其他服务,则先是本地逻辑时钟更新,增加1个单位,再将更新后的逻辑时钟的时间戳附加在该发送事件消息中,再发送给其他服务;
11、设定接收事件逻辑时钟更新规则,包括:若事件为接收事件,此时本地逻辑时钟的时间戳需要相互比较,则将本地逻辑时钟的时间戳更新为=max(本地逻辑时钟时间戳,接收消息逻辑时钟时间戳)+1。
12、优选地,所述根据所述事件发生的逻辑先后顺序,调用服务流程,更新事件本地逻辑时钟的时间戳,包括:
13、第一服务p1产生第一发送事件d1,更新本地的逻辑时钟为(1,p1),并将带时间戳的第一发送事件d1(1,p1)发送到第二服务p2;
14、第二服务p2接收带时间戳的第一发送事件d1(1,p1),通过对比得到本地逻辑时钟时间戳和接收消息逻辑时钟时间戳两者之间的较大值作为后续本地逻辑时钟更新开始值,更新本地的逻辑时钟为(2,p2),对带时间戳的第一发送事件d1(2,p2)进行所需处理后,更新本地的逻辑时钟为(3,p2),并发送带时间戳的第一发送事件d1(3,p2)至第三服务p3;
15、第一服务p1产生第二发送事件d2,更新本地的逻辑时钟为(2,p1),并将带时间戳的第二发送事件d2(2,p1)发送到第二服务p2;
16、第二服务p2接收带时间戳的第二发送事件d2(2,p1),通过对比得到本地逻辑时钟时间戳和接收消息逻辑时钟时间戳两者之间的较大值作为后续本地逻辑时钟更新开始值,更新本地的逻辑时钟为(4,p2),对带时间戳的第二发送事件d2(4,p2)进行所需处理后,更新本地的逻辑时钟为(5,p2),并发送带时间戳的第二发送事件d2(5,p2)至第三服务p3;
17、以此类推,直至将所有事件均发送至目的服务,此时每一个事件均带有表示事件发生的逻辑先后顺序的时间戳。
18、优选地,所述比较所述逻辑时钟的时间戳值,判断事件的逻辑顺序,包括:
19、根据目的服务消息队列中先后收到所有事件的时间戳,通过比较排序,获得事件发生的逻辑先后顺序,用于目的服务按照所述先后顺序执行对应事件。
20、根据本专利技术的另一个方面,提供了一种基于soa架构下逻辑时钟的事件运行控制系统,包括:
21、逻辑时钟模块,该模块用于在每一个服务启动时,为服务增加逻辑时钟时间戳,初始化本地逻辑时钟以及设定逻辑时钟更新规则,并采用本地逻辑时钟代替原本物理时间顺序时钟,通过本地逻辑时钟的时间戳表示事件发生的逻辑先后顺序;
22、时间戳更新模块,该模块根据所述事件发生的逻辑先后顺序,调用服务流程,更新事件本地逻辑时钟的时间戳;
23、事件运行控制模块,该模块为每一个服务设置一个消息队列,利用所述消息队列在设定时间内对接收到事件的逻辑时钟进行排序,并存储逻辑时钟的时间戳值;比较所述逻辑时钟的时间戳值,判断事件的逻辑顺序,控制事件发生按照既定逻辑顺序被其他节点处理,完成事件运行控制。
24、优选地,所述逻辑时钟模块,还包括:
25、所述初始化本地逻辑时钟,包括:
26、为每一个服务管理设定一个逻辑时钟,初始值为0;
27、所述设定逻辑时钟更新规则,包括:
28、设定内部事件逻辑时钟更新规则,包括:若事件发生在服务内部,即本地事件,则对本地逻辑时钟更新,增加1个单位;
29、设定发送事件逻辑时钟更新规则,包括:若事件为发送事件,即从本服务发送给其他服务,则先是本地逻辑时钟更新,增加1个单位,再将更新后的逻辑时钟的时间戳附加在该发送事件消息中,再发送给其他服务;
30、设定接收事件逻辑时钟更新规则,包括:若事件为接收事件,此时本地逻辑时钟的时间戳需要相互比较,则将本地逻辑时钟的时间戳更新为=max(本地逻辑时钟时间戳,接收消息逻辑时钟时间戳)+1。
31、优选地,所述时间戳更新模块,还包括:
32、所述根据所述事件发生的逻辑先后顺序,调用服务流程,更新事件本地逻辑时钟的时间戳,包括:
33、第一服务p1产生第一发送事件d1,更新本地的逻辑时钟为(1,p1),并将带时间戳的第一发送事件d1(1,p1)发送到第二服务p2;
34、第二服务p2接收带时间戳的第一发送事件d1(1,p1),通过对比max(本地逻辑时钟时间戳,接收消息逻辑时钟时间戳)+1,更新本地的逻辑时钟为(2,p2),对本文档来自技高网...
【技术保护点】
1.一种基于SOA架构下逻辑时钟的事件运行控制方法,其特征在于,包括:
2.根据权利要求1所述的基于SOA架构下逻辑时钟的事件运行控制方法,其特征在于,所述初始化本地逻辑时钟,包括:
3.根据权利要求1所述的基于SOA架构下逻辑时钟的事件运行控制方法,其特征在于,所述根据所述事件发生的逻辑先后顺序,调用服务流程,更新事件本地逻辑时钟的时间戳,包括:
4.根据权利要求1所述的基于SOA架构下逻辑时钟的事件运行控制方法,其特征在于,所述比较所述逻辑时钟的时间戳值,判断事件的逻辑顺序,包括:
5.一种基于SOA架构下逻辑时钟的事件运行控制系统,其特征在于,包括:
6.根据权利要求5所述的基于SOA架构下逻辑时钟的事件运行控制系统,其特征在于,所述逻辑时钟模块,还包括:
7.根据权利要求5所述的基于SOA架构下逻辑时钟的事件运行控制系统,其特征在于,所述时间戳更新模块,还包括:
8.根据权利要求5所述的基于SOA架构下逻辑时钟的事件运行控制系统,其特征在于,所述事件运行控制模块,还包括:
9.
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时可用于执行权利要求1-4中任一项所述的方法,或,运行权利要求5-8中任一项所述的系统。
...【技术特征摘要】
1.一种基于soa架构下逻辑时钟的事件运行控制方法,其特征在于,包括:
2.根据权利要求1所述的基于soa架构下逻辑时钟的事件运行控制方法,其特征在于,所述初始化本地逻辑时钟,包括:
3.根据权利要求1所述的基于soa架构下逻辑时钟的事件运行控制方法,其特征在于,所述根据所述事件发生的逻辑先后顺序,调用服务流程,更新事件本地逻辑时钟的时间戳,包括:
4.根据权利要求1所述的基于soa架构下逻辑时钟的事件运行控制方法,其特征在于,所述比较所述逻辑时钟的时间戳值,判断事件的逻辑顺序,包括:
5.一种基于soa架构下逻辑时钟的事件运行控制系统,其特征在于,包括:
6.根据权利要求5所述的基于soa架构下逻辑时钟的事件运行控制系统,其特...
【专利技术属性】
技术研发人员:常坤,许生,郭岚,李嘉龙,
申请(专利权)人:上海介方信息技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。