一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种内存数据的读写方法以及读写装置与流程

2022-08-28 05:20:05 来源:中国专利 TAG:


1.本技术属于数据读写技术领域,具体涉及一种内存数据的读写方法以及读写装置。


背景技术:

2.key-value(键值)型数据管理技术由于查询速度快、存放数据量大、支持高并发,非常适合通过主键进行查询,广泛应用于数据缓存领域。
3.但目前在数据缓存技术领域,在一个进程内的数据,通常采用单一线程管理,而分布在进程间的数据采用主备模式来管理,即对数据修改性的操作,如:新增、删除和修改,由单一线程的程序进程来实现,确保了数据的一致性,而数据的读取操作,不会导致数据的变化,由多个进程提供服务,而不同进程对应的数据节点即分为主节点和备份节点,主备之间由主节点主动向多个备节点同步数据。
4.现有技术采用单一线程的程序进程进行数据处理,无法充分利用硬件资源,由于硬件技术的瓶颈问题,单一cpu(central processing unit,中央处理器)的性能几乎达到了极限,因此提升cpu的总体性能依赖于多核、多cpu分布式架构来解决,现有技术单一线程的技术体系,其数据管控能力被限制在了单一cpu的单核能力上,无法充分发挥计算机多物理核心的优势,在遇到数据量较大的情况时,不得不依赖于分布式多进程模式来管理数据,存在数据碎片化导致的数据管理复杂,特别是访问全量数据困难,跨进程数据计算困难等问题,尤其在面临多进程数据联合性复杂运算且实时性要求较高的情况时,现有技术很难独立胜任。


技术实现要素:

5.本技术实施例的目的是提供一种内存数据的读写方法以及读写装置,能够解决目前单一线程的数据处理方式难以胜任大数据量处理,处理效率低下的技术问题。
6.为了解决上述技术问题,本技术是这样实现的:第一方面,本技术实施例提供了一种内存数据的读写方法,包括:通过试探方式检测当前系统支持的异步输入输出处理方式;确定目标处理方式;对键值型内存数据进行分类;针对不同类别的键值型内存数据,利用所述目标处理方式进行多线程并行处理。
7.第二方面,本技术实施例提供了一种内存数据的读写装置,包括:检测模块,用于通过试探方式检测当前系统支持的异步输入输出处理方式;第一确定模块,用于确定所述目标处理方式;分类模块,用于对键值型内存数据进行分类;多线程处理模块,用于针对不同类别的键值型内存数据,利用所述目标处理方式进行多线程并行处理。
8.在本技术实施例中,通过预先对键值型内存数据进行分类,对不同类别的键值型内存数据利用异步io处理方式进行多线程并行处理。能够充分利用物理cpu资源,胜任大批量数据处理,提高数据处理效率。
附图说明
9.图1是本技术实施例提供的一种内存数据的读写方法的流程示意图;图2是本技术实施例提供的内存数据的读写方法的具体实现流程图;图3是本技术实施例提供的一种内存数据的读写装置的结构示意图。
10.本发明目的的实现、功能特点及优点将结合实施例、参照附图做进一步说明。
具体实施方式
11.为使本发明的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
12.本技术的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。
13.下面结合附图,通过具体的实施例及其应用场景对本技术实施例提供的内存数据的读写方法进行详细地说明。
14.实施例一参照图1,示出了本技术实施例提供的一种内存数据的读写方法的流程示意图,包括以下步骤:s101:通过试探方式检测当前系统支持的异步输入输出(input output,以下简称:io)处理方式。
15.在实际应用过程中,可以利用异步io机制实现服务器socket(套结字)端口监听。
16.其中,异步io处理方式包括kqueue(key queue)方式、epoll(event poll)方式和nioselector(no blocking input output selector)方式,如图2所示。
17.进一步地,kqueue是一种操作系统提供的队列方式异步io模型,epoll是一种事件驱动的异步io模型,nioselector是一种非阻塞输入输出选择器。
18.s102:确定目标处理方式。
19.也就是说,在kqueue方式、epoll方式和nioselector方式中选择一种最优的处理方式进行数据处理。
20.在一种可能的实施方式中,s102具体为:按照kqueue方式、epoll方式和nioselector方式的优先级顺序确定目标处理方式。
21.也就是说,优选选择kqueue方式进行数据处理,在不支持kqueue方式的情况下,再优先选择epoll方式进行数据处理,最后选择nioselector方式进行数据处理。
22.在本技术实施例中,采用三种测试样例对上述处理方式进行压力测试,第一组数据为6字节key、32字节value,500万随机数据;第二组数据为64字节key、256字节value,100万随机数据;第三组数据为200字节key,8196字节value,50万随机数据。分别模拟小数据量、中等数据量和大数据量时各种io模式的性能对比。根据对比kqueue方式和epoll方式均快于nioselector方式,同时kqueue方式略快于epoll方式。
23.s103:对键值型内存数据进行分类。
24.其中,键值型内存数据是key-value形式的,该类数据key和value是一对数据,数据操作均以key为基础,例如:写入数据时会指定key对应的value的内容,读取数据时将要求按照key返回对应的value内容,不同的key对应不同的value,但同一个key必须对应同一个的value。之所以预先进行分类处理,是由于并行处理的先决条件是需要保证操作的是不同的key。
25.可选地,数据类型共有8至64种类型。
26.在一种可能的实施方式中,s103具体包括子步骤s1031和s1032:s1031:提取键值型内存数据中的键(key)的特征值。
27.s1032:根据键的特征值对键值型内存数据进行分类。
28.通过根据key值的特征值对键值型内存数据进行分类,可以简化分类的步骤,得到准确的结果。
29.在一种可能的实施方式中,在s103之后,读写方法还包括:s103a:对不同类别的键值型内存数据进行加锁处理。
30.通过对数据进行加锁处理可以保证只有不同分类的数据才允许并行执行。
31.s104:针对不同类别的键值型内存数据,利用目标处理方式进行多线程并行处理。
32.在一种可能的实施方式中,在s104之后,读写方法还包括:s105:对比处理后的时间戳与预先记录的处理前的时间戳是否一致,在处理后的时间戳与处理前的时间戳一致的情况下,确定当前处理有效。
33.相应地,在处理后的时间戳与处理前的时间戳不一致的情况下,则确定当前处理无效。
34.在本技术实施例中,增加校验环节,可以保证数据处理的准确性。可以理解的是,本技术实施例中的数据一致性由数据携带的时间戳保证。
35.在一种可能的实施方式中,读写方法还包括:s106:采用双主进程模式进行数据处理,在第一主进程接收到客户端数据时,将客户端数据的时间戳一并同步给第二主进程,在第一主进程与第二主进程中一者存在异常的情况下,另一者继续进行数据处理。
36.应当理解的是,在每一个主进程中,均采用本技术实施例提供的多线程并行处理方式,如图2所示。
37.现有技术中,往往采用主、备进程方式进行数据处理,主进程只接收客户端访问,然后将客户端访问的数据同步到备进程;备进程是只接收主进程的同步数据,不接收客户端的访问。主进程和备进程间的数据一致性依靠主进程来保证。一旦主进程故障,为了恢复业务,需要将备进程转为主进程,但主备切换如果出错会造成主进程和备进程均表现是主进程的状态,导致主进程和备进程之间间数据不同步,而造成整个系统崩溃(俗称“脑裂”)。
因此,现有技术在切换主备进程时非常慎重,需要通过多个进程多次互相访问,通过选举等手段决策备进程切换,会付出很高代价和很长时间,通常需要10秒到15秒,才能恢复业务。
38.在本技术实施例中,采用双主进程模式进行数据处理,在第一主进程与第二主进程中一者存在异常的情况下,另一者可以继续进行数据处理,两个主进程之间同步时间戳,由数据自身携带的时间戳来保证数据的一致性。故障切换的过程非常简单,通常在1秒以内就可以完成。大大加快异常转移能力,系统可用性成倍提高。解决传统系统故障处理过程复杂、切换时间长、恢复缓慢、业务影响大等弊病。
39.在一种可能的实施方式中,s106包括子步骤s1061至s1063:s1061:在第一主进程发送同步数据至第二主进程的过程中,同步数据在第二主进程中已经存在的情况下,比较已经存在的数据的时间戳与同步数据的时间戳。
40.s1062:在同步数据的时间戳迟于已经存在的数据的时间戳,对数据进行更新。
41.s1063:在同步数据的时间戳早于已经存在的数据的时间戳,维持数据不变,确定本次更新操作无效。
42.在本技术实施例中,通过数据自身携带的时间戳来判断数据的一致性。
43.在本技术实施例中,通过预先对键值型内存数据进行分类,对不同类别的键值型内存数据利用异步io处理方式进行多线程并行处理。能够充分利用物理cpu资源,胜任大批量数据处理,提高数据处理效率。
44.实施例二参照图3,示出了本技术实施例提供的一种内存数据的读写装置30的结构示意图。
45.读写装置30,包括:检测模块301,用于通过试探方式检测当前系统支持的异步io处理方式,其中,异步io处理方式包括kqueue方式、epoll方式和nioselector方式;第一确定模块302,用于确定目标处理方式;分类模块303,用于对键值型内存数据进行分类;多线程处理模块304,用于针对不同类别的键值型内存数据,利用目标处理方式进行多线程并行处理。
46.可选地,第一确定模块302具体用于:按照kqueue方式、epoll方式和nioselector方式的优先级顺序确定目标处理方式。
47.可选地,分类模块303包括:提取子模块3031,用于提取键值型内存数据中的键的特征值;分类子模块3032,用于根据键的特征值对键值型内存数据进行分类。
48.可选地,读写装置30还包括:加锁模块305,用于对不同类别的键值型内存数据进行加锁处理。
49.可选地,读写装置30还包括:第二确定模块306,用于对比处理后的时间戳与预先记录的处理前的时间戳是否一致,在处理后的时间戳与处理前的时间戳一致的情况下,确定当前处理有效。
50.可选地,读写装置30还包括:双主进程处理模块307,用于采用双主进程模式进行数据处理,在第一主进程接收到客户端数据时,将客户端数据的时间戳一并同步给第二主进程,在第一主进程与第二主进程中一者存在异常的情况下,另一者继续进行数据处理。
51.可选地,双主进程处理模块307包括:比较子模块3071,用于在第一主进程发送同步数据至第二主进程的过程中,同步数据在第二主进程中已经存在的情况下,比较已经存在的数据的时间戳与同步数据的时间戳;更新子模块3072,用于在同步数据的时间戳迟于已经存在的数据的时间戳,对数据进行更新;维持子模块3073,用于在同步数据的时间戳早于已经存在的数据的时间戳,维持数据不变,确定本次更新操作无效。
52.本技术实施例提供的读写装置30能够实现上述方法实施例中实现的各个过程,为避免重复,这里不再赘述。
53.在本技术实施例中,通过预先对键值型内存数据进行分类,对不同类别的键值型内存数据利用异步io处理方式进行多线程并行处理。能够充分利用物理cpu资源,胜任大批量数据处理,提高数据处理效率。
54.本技术实施例中的虚拟装置可以是装置,也可以是终端中的部件、集成电路、或芯片。
55.以上所述仅为本发明的实施例而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献