System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种集装箱码头跨服务信息通信和数据同步方法技术_技高网

一种集装箱码头跨服务信息通信和数据同步方法技术

技术编号:40334865 阅读:9 留言:0更新日期:2024-02-09 14:25
本发明专利技术公开了一种集装箱码头跨服务信息通信和数据同步方法,在每个服务中均内嵌一个监听器;在每个服务中均内嵌一个可配置的定时任务;在每个服务中均设置统一的接口,用于监听发送过来的事件;统一每个服务的管理事件的发送时机;将服务操作、redis数据、本地缓存、本地磁盘数据预数据库进行同步。本发明专利技术能够替代各个服务中的消息中间件,并且能够保证服务间通信的准确性和及时性。

【技术实现步骤摘要】

本专利技术涉及集装箱码头通信技术,更具体地说,涉及一种集装箱码头跨服务信息通信和数据同步方法


技术介绍

1、在应用微服务架构的集装箱码头生产管控系统(tos)中,服务间存在数据隔离的问题,例如:在a服务操作了某数据后,在b服务上并不会同步知晓该数据的变化,从而导致b服务不能及时的对相关操作进行反应。如何实时监控数据的变化并在各个服务间相互通信是一项复杂的问题。工业软件系统要求稳定且可靠,这对于如何解决上述问题带来了局限性。

2、目前传统的方式使用消息中间件来实现服务间的通信以及数据同步,但是存在以下几个主要的缺点:

3、1)系统可用性降低:系统引入的外部依赖增多,系统的稳定性就会变差,一旦消息中间件宕机,就会对业务产生重大影响。

4、2)系统的复杂度提高:引入消息中间件以后系统复杂度会大大提高。以前服务之间可以进行同步调用,引入消息中间件以后会变成异步调用,数据链路会变得的更加复杂,并且会带来一系列的问题。

5、3)消息一致性的问题:因为是异步调用,不同服务之间相互隔离,有可能会出现a系统成功而b系统失败的问题。

6、4)如果网络变慢,消息中间件设置的缓冲区太小会导致客户端空闲,但如果网络正常运行,缓冲区太大会导致大量额外的延迟。

7、在不使用消息中间件来进行服务间通信的话,在服务的集群化部署下可能会产生数据重复消费的情况。目前传统的方式是使用分布式的任务调度平台来控制,这也不可避免的增加了服务对外部系统的依赖,也产生了一定的不确定性。


<p>技术实现思路

1、针对现有技术中存在的上述缺陷,本专利技术的目的是提供一种集装箱码头跨服务信息通信和数据同步方法,能够替代各个服务中的消息中间件,并且能够保证服务间通信的准确性和及时性。

2、为实现上述目的,本专利技术采用如下技术方案:

3、一种集装箱码头跨服务信息通信和数据同步方法:

4、在每个服务中均内嵌一个监听器;

5、在每个服务中均内嵌一个可配置的定时任务;

6、在每个服务中均设置统一的接口,用于监听发送过来的事件;

7、统一每个服务的管理事件的发送时机;

8、将服务操作、redi s数据、本地缓存、本地磁盘数据预数据库进行同步。

9、较佳的,将服务操作、redi s数据、本地缓存、本地磁盘数据预数据库进行同步具体包括以下步骤:

10、s1、在前端系统触发数据变动的操作后,由服务统一对变化的数据进行处理,将处理好的数据保存至“事件日志”表中;

11、s2、定时任务根据设定时间执行一次,查询“事件日志”表中的数据变化,在读取数据后,先将本地缓存中的编号与redis数据中相应的对象编号进行对比,二者取其大;然后再与刚读取的数据编号进行对比,若刚读取的数据编号小,则不作操作,若刚读取的数据编号大,则将读取的数据进行处理;

12、s3、将读取的数据进行格式转换后保存至“事件日志”表中,并先修改本地缓存,再修改redis数据缓存,最后将数据发送出去;

13、s4、订阅了相关“事件对象”的服务接收数据,进行相应的处理。

14、较佳的,步骤s1具体包括:

15、在前端系统进行操作时,对应的服务会产生数据变化,在操作完成后对变化的数据进行处理、格式转换,调用公共的接口将处理好的数据保存至“事件日志”表中。

16、较佳的,数据在保存前还需进行二次处理和筛查:

17、遍历数据,每个“监听对象”数据均需对应“事件日志”表中的多条trigger数据,先判断trigger数据和“监听对象”数据是否为空,若二者满足一个为空,则直接跳过,进入下一个循环;若都不为空,则将trigger数据进行格式转换,存入“事件日志”表中。

18、较佳的,步骤s2中,每个服务的定时任务轮询的数据类型均是根据程序启动时读取的“监听对象”来确定;

19、为保证服务在集群化部署的情况下相同的服务同一时间只有一个定时任务能读取数据,采用redis分布式锁的方式,并且为了防止死锁或者数据写入过程成锁失效的问题,还采用了lua脚本的形式来给定时任务加锁、解锁、续期;即

20、若分布式锁存在,则本次定时任务不执行;若分布式锁不存在,判断“监听对象”的集合是否为空,若为空则本次定时任务不执行;若不为空,查询“监听对象”的集合是否在数据库中存在,若全部都不存在,则本次定时任务不执行;若部分存在,则删除不存在的“监听对象”后执行本次定时任务;若全部存在,执行本次定时任务,遍历“监听对象”,在“事件日志”表中查询出配置的小时内关于该对象的所有trigger数据。

21、较佳的,步骤s3具体包括:

22、遍历跳表,取出本地缓存中的值,将其定义为originvalue;

23、首先更新本地缓存,将上一步的cachetrigger数据中的最大编号更新到本地缓存,若发生异常,直接跳出循环,进入下一个循环;若未发生异常,则更新redis数据,若发生异常将本地缓存的值替换成originvalue,并跳出当前循环;若未发生异常,则通过启动完成的监听器来发送消息。

24、较佳的,步骤s4具体包括:

25、每个服务都实现了接收消息的接口,按照程序启动时监听器中注册的“监听对象”的类型来实现消息的监听,从而对消息进行处理。

26、本专利技术所提供的一种集装箱码头跨服务信息通信和数据同步方法,能够替代各个服务中的消息中间件,并且能够保证服务间通信的准确性和及时性。同时还降低了不同系统间的耦合依赖,且能够保证跨服务的信息通信的及时性及准确性,从而替代消息中间件。

本文档来自技高网
...

【技术保护点】

1.一种集装箱码头跨服务信息通信和数据同步方法,其特征在于:

2.根据权利要求1所述的集装箱码头跨服务信息通信和数据同步方法,其特征在于,将服务操作、redis数据、本地缓存、本地磁盘数据预数据库进行同步具体包括以下步骤:

3.根据权利要求2所述的集装箱码头跨服务信息通信和数据同步方法,其特征在于,步骤S1具体包括:

4.根据权利要求3所述的集装箱码头跨服务信息通信和数据同步方法,其特征在于,数据在保存前还需进行二次处理和筛查:

5.根据权利要求4所述的集装箱码头跨服务信息通信和数据同步方法,其特征在于,步骤S2中,每个服务的定时任务轮询的数据类型均是根据程序启动时读取的“监听对象”来确定;

6.根据权利要求4所述的集装箱码头跨服务信息通信和数据同步方法,其特征在于,步骤S3具体包括:

7.根据权利要求6所述的集装箱码头跨服务信息通信和数据同步方法,其特征在于,步骤S4具体包括:

【技术特征摘要】

1.一种集装箱码头跨服务信息通信和数据同步方法,其特征在于:

2.根据权利要求1所述的集装箱码头跨服务信息通信和数据同步方法,其特征在于,将服务操作、redis数据、本地缓存、本地磁盘数据预数据库进行同步具体包括以下步骤:

3.根据权利要求2所述的集装箱码头跨服务信息通信和数据同步方法,其特征在于,步骤s1具体包括:

4.根据权利要求3所述的集装箱码头跨服务信息通信和数据同步方法,其特征在于,...

【专利技术属性】
技术研发人员:王超
申请(专利权)人:上海振华重工集团股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1