System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 基于共享内存消息队列的金融行情订阅方法、设备及介质技术_技高网

基于共享内存消息队列的金融行情订阅方法、设备及介质技术

技术编号:40520118 阅读:6 留言:0更新日期:2024-03-01 13:38
本发明专利技术涉及数据订阅技术领域,公开了一种基于共享内存消息队列的金融行情订阅方法、设备及介质。金融行情订阅方法包括:业务进程向共享内存中行情进程的请求消息队列写入金融行情数据的订阅请求;侦听共享内存中应答消息队列是否接收到行情进程基于订阅请求写入的行情更新通知;当接收到行情更新通知时,根据行情代码,在对应行情缓存区的行情代码映射关系表中查找行情信息在行情缓存区的地址偏移量;基于地址偏移量,在共享内存中对应行情缓存区读取行情信息中订阅的行情数据。本发明专利技术实现了业务进程与行情进程分离的松耦合架构,通过共享内存和无锁队列降低了进程间通信的时延,提升了实时行情的推送速度,提高了行情进程的复用性。

【技术实现步骤摘要】

本专利技术涉及服务器,尤其涉及一种基于共享内存消息队列的金融行情订阅方法、设备及介质


技术介绍

1、随着技术的不断更新和业务的快速发展,传统的模块化开发方法越来越难以适应现今证券市场复杂的业务变化,单进程的实现方式无法多市场行情快速升级迭代的需求,微服务架构也难以适应行情高并发、低时延的要求,行情系统频繁的升级改造也带来无法预估的系统性风险。

2、现有的金融行情一般采用单个进程实现全部市场的订阅服务,业务实现与行情实现相互耦合,对业务改造或行情升级困难。目前不同行情市场的升级改较为频繁,升级计划时间不统一,单个市场的升级及运维影响到整个业务系统。随着业务的不断发展,业务系统越来越复杂,需要订阅的金融行情数量不断上升,金融行情的系统架构随着业务的变化需要不断进行调整,行情推送的时延也是行情系统建设时需要考虑的重点,新的系统架构既要解决不同市场的耦合性,又要解决因系统拆分带来的性能损耗。

3、在多进程架构下,对业务进程和行情进程进行拆分,缺乏可靠的垂直扩展方案。而进程间网络通信的时延,难以满足低时延行情通信的场景,如何实现业务进程和行情进程的解耦合,同时提升行情订阅与推送的效率,是需要亟待解决的问题。


技术实现思路

1、本专利技术的主要目的在于提供一种基于共享内存消息队列的金融行情订阅方法、设备及介质,旨在解决现有业务系统耦合性高、架构灵活性不高、行情推送性能较低的技术问题。

2、本专利技术第一方面提供了一种基于共享内存消息队列的金融行情订阅方法,包括:

3、业务进程向共享内存中行情进程的请求消息队列写入金融行情数据的订阅请求;

4、业务进程侦听共享内存中应答消息队列是否接收到行情进程基于所述订阅请求写入的行情更新通知;

5、当接收到所述行情更新通知时,业务进程根据所述行情更新通知中的行情代码,在对应行情缓存区的行情代码映射关系表中查找,得到所述行情代码对应的行情信息在行情缓存区的地址偏移量;

6、业务进程基于所述地址偏移量,在共享内存中对应行情缓存区读取行情信息中订阅的行情数据。

7、可选的,在本专利技术第一方面的第一种实现方式中,所述金融行情订阅方法还包括:

8、行情进程侦听共享内存中请求消息队列是否接收到业务进程写入的订阅请求;

9、当行情进程接收到所述订阅请求时,将所述订阅请求中的订阅信息和应答消息队列信息写入订阅列表中。

10、可选的,在本专利技术第一方面的第二种实现方式中,金融行情订阅还包括:

11、行情进程接收对应行情数据源提供的行情数据并进行解析后写入共享内存中的对应行情缓存区中;

12、行情进程遍历所述订阅列表,若所述订阅列表中存在与新写入的行情数据匹配的订阅信息,则生成对应行情更新通知并写入对应业务进程的应答消息队列。

13、可选的,在本专利技术第一方面的第三种实现方式中,金融行情订阅方法还包括:

14、在发起订阅请求之前,各业务进程分别在共享内存中创建各自的应答消息队列,不同业务进程订阅相同或不同的金融行情,同一应答消息队列仅允许同一行情进程访问。

15、可选的,在本专利技术第一方面的第四种实现方式中,金融行情订阅方法还包括:

16、在接收订阅请求之前,各行情进程分别在共享内存中创建各自的请求消息队列和行情缓存区,不同行情进程禁止交叉访问其他行情进程的请求消息队列和行情缓存区,同一请求消息队列和行情缓存区允许不同业务进程访问。

17、可选的,在本专利技术第一方面的第五种实现方式中,所述共享内存消息队列包括头部和数据区,所述头部用于存储数据块内存大小、数据块数量、读索引、写索引和定时互斥锁,所述数据区为固定内存大小的数据块数组,所述数据块数组包括多个数据块,每个数据块包括数据块状态、数据长度和数据,所述数据块状态用于标识对应数据块中数据是否为空,各所述共享内存消息队列采用环形队列结构;

18、当写索引等于读索引时,所述共享内存消息队列的环形队列为空数据状态;当写索引加1等于读索引时,所述共享内存消息队列的环形队列为满数据状态;当计算新的读索引或写索引时,若读索引或写索引大于或等于数据块数量,则重置读索引或写索引为0;当向共享内存消息队列中任一数据块写入数据时,通过所述定时互斥锁对当前待写入数据的数据块进行加锁。

19、可选的,在本专利技术第一方面的第六种实现方式中,行情缓存区以行的方式存储行情信息,每一行分配的存储区长度相同,每一行存储区存储的行情信息包括行情代码、索引和行情数据,存储行情数据的缓存有多个且采用环形队列结构,每个缓存的长度与结构相同,索引为所述缓存的环形队列的读索引和写索引。

20、可选的,在本专利技术第一方面的第七种实现方式中,所述缓存的环形队列至少包括三个缓存,所述环形队列的读索引用于标识当前环形队列中的可读缓存,所述环形队列的写索引用于标识当前环形队列中的可写缓存;

21、所述环形队列的读索引和写索引由行情进程单线程写入行情缓存区,执行顺序为:写入行情数据、变更写索引、变更读索引。

22、本专利技术第二方面提供了一种计算机设备,包括:存储器和至少一个处理器,所述存储器中存储有指令;所述至少一个处理器调用所述存储器中的所述指令,以使得所述计算机设备执行上述的基于共享内存消息队列的金融行情订阅方法的各个步骤。

23、本专利技术的第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述的基于共享内存消息队列的金融行情订阅方法的各个步骤。

24、相比现有技术,本专利技术的有益效果在于:本专利技术基于多进程架构,实现了一种基于多进程共享内存通信的金融行情订阅方法,通过多进程共享内存管理方法和进程间共享内存通信方法,实现了业务进程与行情进程分离的松耦合架构,此外,本专利技术还通过共享内存和基于时间差的无锁队列降低了进程间通信的时延,提升了实时行情的推送速度,提高了行情进程的复用性,同时也降低了系统的开发成本。此外,业务进程与行情进程可独立升级,提升了开发及部署效率,提高了技术架构的灵活性。

本文档来自技高网...

【技术保护点】

1.一种基于共享内存消息队列的金融行情订阅方法,其特征在于,所述共享内存消息队列包括请求消息队列和应答消息队列两种类型,所述金融行情订阅方法包括:

2.根据权利要求1所述的金融行情订阅方法,其特征在于,所述金融行情订阅方法还包括:

3.根据权利要求2所述的金融行情订阅方法,其特征在于,所述金融行情订阅方法还包括:

4.根据权利要求1所述的金融行情订阅方法,其特征在于,所述金融行情订阅方法还包括:

5.根据权利要求1所述的金融行情订阅方法,其特征在于,所述金融行情订阅方法还包括:

6.根据权利要求1所述的金融行情订阅方法,其特征在于,所述共享内存消息队列包括头部和数据区,所述头部用于存储数据块内存大小、数据块数量、读索引、写索引和定时互斥锁,所述数据区为固定内存大小的数据块数组,所述数据块数组包括多个数据块,每个数据块包括数据块状态、数据长度和数据,所述数据块状态用于标识对应数据块中数据是否为空,各所述共享内存消息队列采用环形队列结构;

7.根据权利要求1所述的金融行情订阅方法,其特征在于,所述行情缓存区以行的方式存储行情信息,每一行分配的存储区长度相同,每一行存储区存储的行情信息包括行情代码、索引和行情数据,存储行情数据的缓存有多个且采用环形队列结构,每个缓存的长度与结构相同,索引为所述缓存的环形队列的读索引和写索引。

8.根据权利要求7所述的金融行情订阅方法,其特征在于,所述缓存的环形队列至少包括三个缓存,所述环形队列的读索引用于标识当前环形队列中的可读缓存,所述环形队列的写索引用于标识当前环形队列中的可写缓存;

9.一种计算机设备,其特征在于,所述计算机设备包括:存储器和至少一个处理器,所述存储器中存储有指令;

10.一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,其特征在于,所述指令被处理器执行时实现如权利要求1-8中任一项所述的基于共享内存消息队列的金融行情订阅方法。

...

【技术特征摘要】

1.一种基于共享内存消息队列的金融行情订阅方法,其特征在于,所述共享内存消息队列包括请求消息队列和应答消息队列两种类型,所述金融行情订阅方法包括:

2.根据权利要求1所述的金融行情订阅方法,其特征在于,所述金融行情订阅方法还包括:

3.根据权利要求2所述的金融行情订阅方法,其特征在于,所述金融行情订阅方法还包括:

4.根据权利要求1所述的金融行情订阅方法,其特征在于,所述金融行情订阅方法还包括:

5.根据权利要求1所述的金融行情订阅方法,其特征在于,所述金融行情订阅方法还包括:

6.根据权利要求1所述的金融行情订阅方法,其特征在于,所述共享内存消息队列包括头部和数据区,所述头部用于存储数据块内存大小、数据块数量、读索引、写索引和定时互斥锁,所述数据区为固定内存大小的数据块数组,所述数据块数组包括多个数据块,每个数据块包括数据块状态、数据长度和数据,所述数据块状态用于标识对应数据块中数据是否为...

【专利技术属性】
技术研发人员:梁超张文精徐楠
申请(专利权)人:长城证券股份有限公司
类型:发明
国别省市:

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

1