基于制造技术

技术编号:39812541 阅读:8 留言:0更新日期:2023-12-22 19:29
本发明专利技术公开了一种基于

【技术实现步骤摘要】
基于jvm堆外内存的对账系统优化方法、装置、设备及介质


[0001]本专利技术涉及对账
,尤其涉及一种基于
jvm
堆外内存的对账系统优化方法

装置

设备及介质


技术介绍

[0002]堆外内存是指内存对象分配在
Java
虚拟机的堆以外的内存,这些内存直接受操作系统管理,而不是虚拟机,这样做的结果就是能够在一定程度上减少垃圾回收对应用程序造成的影响

[0003]在对账业务系统中,通常是通过把账单数据标准化处理,用统一的数据模型来进行对账处理,账单数据往往存储在
db
或其他的存储中,对账过程中从存储中获取数据进行对账,在这期间都需要
IO
通信传输,在数据量大的情况下,
IO
的传输对系统的影响会加剧,会影响系统的系统,成功提升系统性能的瓶颈;如果数据都保存在内容中,按现在大数据的体量,内存不足以承载现在的数据量,通过提升物理机器的内存来处理,对整体系统来说,其性价比不高,现在也有成熟的三方存储来存储数据,但是在大数据量场景下,频繁的进行存取操作的过程中,
IO
的影响也会被逐渐放大,也会影响整体系统的性能,尤其是在网络不稳定的情况下,性能会尤其凸显

并且大数据量在内存中存储操作,会导致频繁的
GC
问题会成为系统的一个瓶颈点,影响系统响应速度,
GC
处理线程的
CPU
使用率也会影响系统吞吐量


技术实现思路

[0004]本专利技术的目的是提供一种基于
jvm
堆外内存的对账系统优化方法

装置

设备及介质,解决
CPU
性能低下及
IO
的网络开销,基于
jvm
堆外内存构建了一个中间存储模块,能有效的避免
IO
的网络操作,同时在不改变本地机器
JVM
堆内存大小设置的前提下,利用堆外内存作为存储,对
GC
不产生影响

[0005]本专利技术提供了一种基于
jvm
堆外内存的对账系统优化方法,包括:响应于对账请求生成对账任务并从本地数据库获取对账数据,所述对账数据为与对账请求订单关联流水数据;在应用程序启动的情况下,基于
jvm
堆外内存将存储于堆内内存的对象映射至进程的地址堆外内存构成中间存储模块,并对所述中间存储模块进行调用;将获取到的所述对账数据输入中间存储模块并进行存取操作,将所述对账数据转换成以缓存形式下的临时存储数据;将所述临时存储数据按照预设的序列化编码规则进行相应对象状态转换的序列化操作和反序列化操作以压缩所述临时存储数据所占用的内存容量从而优化数据存储空间;在正常对账模式下,基于高并发对账请求从所述中间存储模块对所述临时存储数据进行对应的读取操作和写入操作,并按照预设的对账逻辑进行初始对账操作,生成最终
的对账结果;在重新对账模式下,执行大批量数据实时对账操作,将最终的对账结果进行逆变换操作复原成未对账时的原始数据后,输入所述原始数据并按照正常对账模式下的对账逻辑进行最终对账操作,输出重新对账的最终结果

[0006]作为优选地,对所述中间存储模块进行调用包括:根据所述对账数据确定对主机内存的目标需求,根据所述目标需求对所述堆外内存进行第一次划块,得到与所述目标需求对应的第一内存块;根据所述对账任务对所述第一内存块进行第二次划块,得到所述对账任务所占的子内存块;在批量对账业务场景下,根据所述对账任务向所述子内存块执行写入操作以完成所述对账任务,在所述对账任务完成后按照预设批次向所述子内存块的空间进行批量写入操作和删除操作,其中,所述删除操作通过直接释放所述子内存块以获得数据清空后的内存空间

[0007]作为优选地,所述基于
jvm
堆外内存将存储于堆内内存的对象映射至进程的地址堆外内存包括:根据所述对账数据将内存对象按照预设存储需求划分第一存储空间和第二存储空间,确认所述第一存储空间和第二存储空间的映射关系;对所述第一存储空间进行存储时,基于
JVM
虚拟机的内存管理机制,通过垃圾回收器
GC
对堆内内存进行统一管理,并对堆内内存中存储的指向堆外内存的地址指针进行一次存储;对所述第二存储空间进行存储时,在不改变本地机器
JVM
堆内存大小的前提下,确认所述地址指针所指向的堆外内存并将存储于堆外内存的所述对账数据进行二次存储

[0008]作为优选地,所述中间存储模块进行调用进一步包括:响应于目标对象的查询请求,计算待查询目标对象的
hash
值;根据所述
hash
值结合对应数组长度计算所在对应存储桶的编号,得到目标对象所在的目标存储桶;从堆内内存中获取地址指针,获取所述目标存储桶对应的起始地址即第一元素;基于桶排序算法沿所述第一元素按顺序线性查找,对第一元素及所述第一元素映射的数据进行访问并判断是否命中,将查询的元素与所述目标对象进行第一次对比;若对比结果相同则处于命中状态,返回命中所述目标对象的结果,若对比结果不同则处于在未命中状态,对下一个
next
地址指针进行访问;对第二元素及所述第二元素映射的数据进行访问并判断是否命中,将查询的元素与所述目标对象进行第二次对比;若对比结果相同则处于命中状态,返回命中所述目标对象的结果,若对比结果不同则处于在未命中状态,则对下一个
next
地址指针进行访问直至返回命中结果;其中,所述存储桶为链表结构,所述链表中的元素即缓存条目的堆外地址指针

[0009]作为优选地,所述中间存储模块包括堆内内存和堆外内存,所述堆内内存通过指针引用至所述堆外内存,所述堆内内存空间包括
Cache
存储体和多个分段数组,用于仅保留堆外内存的地
址指针;所述堆外内存空间包括多个存储桶,用于存储所述地址指针所指向的数据,对账过程中批量输入和删除数据;每个所述分段数组通过指针引用至多个所述存储桶;其中,每个桶对应一个链表,每个段对象用分段数组表示

[0010]作为优选地,所述将所述临时存储数据按照预设的序列化编码规则进行相应对象状态转换的序列化操作和反序列化操作以压缩所述临时存储数据所占用的内存容量从而优化数据存储空间包括:基于
key

value
堆外缓存框架在
Java
项目中引入,将堆外内存的坐标添加到项目的对象模型中通过实现类来序列化和反序列化对象存储于堆外内存;获取
java
对象类型并对
java
对象进行序列化操作,根据
java
对象类型获取类的注册关系,返回相应的序列化器,序列化该类型的<本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种基于
jvm
堆外内存的对账系统优化方法,其特征在于,包括:响应于对账请求生成对账任务并从本地数据库获取对账数据,所述对账数据为与对账请求订单关联流水数据;在应用程序启动的情况下,基于
jvm
堆外内存将存储于堆内内存的对象映射至进程的地址堆外内存构成中间存储模块,并对所述中间存储模块进行调用;将获取到的所述对账数据输入中间存储模块并进行存取操作,将所述对账数据转换成以缓存形式下的临时存储数据;将所述临时存储数据按照预设的序列化编码规则进行相应对象状态转换的序列化操作和反序列化操作以压缩所述临时存储数据所占用的内存容量从而优化数据存储空间;在正常对账模式下,基于高并发对账请求从所述中间存储模块对所述临时存储数据进行对应的读取操作和写入操作,并按照预设的对账逻辑进行初始对账操作,生成最终的对账结果;在重新对账模式下,执行大批量数据实时对账操作,将最终的对账结果进行逆变换操作复原成未对账时的原始数据后,输入所述原始数据并按照正常对账模式下的对账逻辑进行最终对账操作,输出重新对账的最终结果
。2.
如权利要求1所述的基于
jvm
堆外内存的对账系统优化方法,其特征在于,对所述中间存储模块进行调用包括:根据所述对账数据确定对主机内存的目标需求,根据所述目标需求对所述堆外内存进行第一次划块,得到与所述目标需求对应的第一内存块;根据所述对账任务对所述第一内存块进行第二次划块,得到所述对账任务所占的子内存块;在批量对账业务场景下,根据所述对账任务向所述子内存块执行写入操作以完成所述对账任务,在所述对账任务完成后按照预设批次向所述子内存块的空间进行批量写入操作和删除操作,其中,所述删除操作通过直接释放所述子内存块以获得数据清空后的内存空间
。3.
如权利要求1所述的基于
jvm
堆外内存的对账系统优化方法,其特征在于,所述基于
jvm
堆外内存将存储于堆内内存的对象映射至进程的地址堆外内存包括:根据所述对账数据将内存对象按照预设存储需求划分第一存储空间和第二存储空间,确认所述第一存储空间和第二存储空间的映射关系;对所述第一存储空间进行存储时,基于
JVM
虚拟机的内存管理机制,通过垃圾回收器
GC
对堆内内存进行统一管理,并对堆内内存中存储的指向堆外内存的地址指针进行一次存储;对所述第二存储空间进行存储时,在不改变本地机器
JVM
堆内存大小的前提下,确认所述地址指针所指向的堆外内存并将存储于堆外内存的所述对账数据进行二次存储
。4.
如权利要求1所述的基于
jvm
堆外内存的对账系统优化方法,其特征在于,所述中间存储模块进行调用进一步包括:响应于目标对象的查询请求,计算待查询目标对象的
hash
值;根据所述
hash
值结合对应数组长度计算所在对应存储桶的编号,得到目标对象所在的目标存储桶;
从堆内内存中获取地址指针,获取所述目标存储桶对应的起始地址即第一元素;基于桶排序算法沿所述第一元素按顺序线性查找,对第一元素及所述第一元素映射的数据进行访问并判断是否命中,将查询的元素与所述目标对象进行第一次对比;若对比结果相同则处于命中状态,返回命中所述目标对象的结果,若对比结果不同则处于在未命中状态,对下一个
next
地址指针进行访问;对第二元素及所述第二元素映射的数据进行访问并判断是否命中,将查询的元素与所述目标对象进行第二次对比;若对比结果相同则处于命中状态,返回命中所述目标对象的结果,若对比结果不同则处于在未命中状态,则对下一个
next
地址指针进行访问直至返回命中结果;其中,所述存储桶为链表结构,所述链表中的元素即缓存条目的堆外地址指针
。5.
如权利要求1所述的基于
jvm
堆外内存的对账系统优化方法,其特征在于,所述中间存储模块包括堆内内存和堆外内存,所述堆内内存通过指针引用至所述堆外内存,所述堆内内存空间包括
Cache
存储体和多个分段数组,用于仅保留堆外内存的地址指针;所述堆外内存空间包括多个存储桶,用于存储所述地址指针所指向的数据,对账过程中批量输入和删除数据;每个所述分段数组通过指针引用至多个所述存储桶;其中,每个桶对应一个链表,每个段对象用分段数组表示
。6.
如权利要求1所述的基于
jvm
堆外内存的对账系统优化方法,其特征在于,所述将所述临时存储数据按照预设的序列化编码规则进行相应对象状态转换的序列化操作和反序列化操作以压缩所述临时存储数据所...

【专利技术属性】
技术研发人员:王斌斌朱俊赢陈鹏寻双贵陈宇芦帅汪宁
申请(专利权)人:杭州乒乓智能技术有限公司
类型:发明
国别省市:

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

1