一种可支撑高并发内存数据的方法
【专利摘要】本发明涉及一种可支撑高并发内存数据的方法,特别适用于需要数据的访问能够达到高并发高实时性的情况,该方法包括:S1、应用层程序发送读写数据请求给接入层程序;S2、所述接入层程序将读写数据请求进行归类与合并;S3、所述接入层程序将读写数据请求分发给缓存层程序;S4、判断缓存层程序是读数据或写数据;S5、所述缓存层程序向接入层程序返回响应包,并转至步骤S7;S6、数据同步工具读取流水文件,并转至步骤S10;S9、结束程序;本发明的有益效果:能提供高并发高实时性的数据访问服务,减少应用层程序开发人员进行数据设计和开发的成本;能保证数据的绝对安全,数据抗风险能力强;能最大化数据缓存层程序的并发处理事务的能力。
【专利说明】一种可支撑高并发内存数据的方法
【技术领域】
[0001]本发明涉及网络通信【技术领域】,更具体地说,涉及一种实现用于海量服务开发人员在存储数据时,可以快速方便的实现数据的存储,对数据的访问能够达到高并发高实时性的要求,同时应用层程序不需要处理数据的分布式存储和部署,提高开发效率的情况的基于内存数据库高并发速写数据的方法。
【背景技术】
[0002]在互联网海量服务开发任务中,对于应用层程序中读写频率比较高而且数据量比较大的数据的设计与开发是一项软件设计开发人员必须解决的问题。既要支撑高并发和高实时性访问,又要保证应用层程序数据在集群部署中的一致性,同时还要降低程序异常退出、系统重启等各种异常对数据造成损坏带来的风险,成为了海量服务数据管理所需要解决的课题。
[0003]目前,现有技术方案一般为:
[0004]1、现有许多系统中,数据保存在关系型数据库中,应用层程序启动时加载数据库中的所有数据,并在数据发生变化时将变化的数据发送到集群部署的在其他服务器。
[0005]2、使用开源的内存数据库来保存读写频率比较高的数据。
[0006]在现有技术中,其主要缺点有:
[0007]1、将数据保存在传统的关系型数据库,一方面对于读写频率比较高而且对并发量大的数据访问响应速度和处理能力比较低;另一方面对于集群部署的应用层程序,相互之间同步数据的代价比较大,且不能保证数据的一致性。
[0008]2、使用开源的内存数据库来保存数据,一方面由于内存数据库服务程序直接对外部应用层程序服务,受限程序内部的处理逻辑和网络10,单机服务的处理能力得不到最大化;另一方面由于将数据保存在内存中,或者定时将一部分数据保存到磁盘上,对于服务重启、系统掉电等异常情况将丢失部分或全部数据,数据抗风险能力低。
【发明内容】
[0009]本发明所要解决的技术问题是,针对现有的并发量大的数据访问响应速度和处理存储能力比较低的情况,提供一种可支撑高并发、高实时性的可支撑高并发内存数据的方法。
[0010]本发明解决上述技术问题的技术方案如下:一种可支撑高并发内存数据的方法,该方法包括:
[0011]S1、应用层程序发送读写数据请求给接入层程序;
[0012]S2、所述接入层程序将读写数据请求进行归类与合并;
[0013]S3、所述接入层程序将读写数据请求分发给缓存层程序;
[0014]S4、所述缓存层程序判断是读数据或写数据,如果是读数据,将转至步骤S41,如果是写数据将转至步骤S42 ;
[0015]S41、缓存层程序将读取缓存数据,并转至步骤S5 ;
[0016]S42、修改缓存数据并转至步骤S5,与此同时,所述缓存层程序将数据流水写入流水文件,并转至步骤S6 ;
[0017]S5、所述缓存层程序向接入层程序返回响应包,并转至步骤S7 ;
[0018]S6、数据同步工具读取流水文件,并转至步骤SlO ;
[0019]S7、所述接入层程序将响应包进行拆解与合并;
[0020]S8、所述接入层程序向应用层程序返回读写数据响应包,并转至步骤S9 ;
[0021]S9、结束程序;
[0022]S10、所述数据同步工具将流水文件进行流水组包;
[0023]S11、缓存层的备机同步流水文件,并转至步骤S9。
[0024]在本发明的可支撑高并发内存数据的方法中,所述步骤S2的所述接入层程序将读写数据请求进行归类与合并,是根据请求的数据项所在的缓存层位置进行归类,然后根据请求的请求类型,将请求单条记录的请求事务进行合并,最后将请求转发到相应的缓存层程序之中。
[0025]在本发明的可支撑高并发内存数据的方法中,所述缓存层包括主存储层和副存储层,用于数据容灾。
[0026]在本发明的可支撑高并发内存数据的方法中,所述缓存层管理数据,并定期将缓存层的内存的所有数据转存储在磁盘上。
[0027]在本发明的可支撑高并发内存数据的方法中,在所述缓存层程序定期将内存中的所有数据转存储在磁盘上时,所述缓存层程序将记录用户的每一次写数据请求。
[0028]在本发明的可支撑高并发内存数据的方法中,所述缓存层的内存包含至少一个Cluster,Cluster包含至少一个Block,Block包含至少一个Chunk,每次分配内存时根据预分配的内存大小选择合适的Chunk进行分配。
[0029]在本发明的可支撑高并发内存数据的方法中,所述缓存层在释放内存时先返回到内存管理模块,由内存管理模块控制缓存层是否释放内存。
[0030]在本发明的可支撑高并发内存数据的方法中,在每次写数据时,将数据同步到缓存层的备机之中。
[0031]在本发明的可支撑高并发内存数据的方法中,在每次写数据时,将数据流水写入流水文件之中。
[0032]实施本发明的可支撑高并发内存数据的方法,具有以下有益效果:能提供高并发高实时性的数据访问服务,减少应用层程序开发人员进行数据设计和开发的成本;能保证数据的绝对安全,数据抗风险能力强;能最大化数据缓存层程序的并发处理事务的能力。
【专利附图】
【附图说明】
[0033]图1为现有技术中普通内存数据库方案服务模式的示意图;
[0034]图2为本发明的可支撑高并发内存数据的方法的优选实施例的读写数据操作流程序列图;
[0035]图3为本发明的可支撑高并发内存数据的方法的优选实施例的数据存储示意图;
[0036]图4为本发明的可支撑高并发内存数据的方法的优选实施例的应用层程序读数据操作的流程序列图;
[0037]图5为本发明的可支撑高并发内存数据的方法的优选实施例的应用层程序写数据操作的流程序列图。
【具体实施方式】
[0038]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0039]如图2所示,在本发明的可支撑高并发内存数据的方法的优选实施例的读写数据操作流程序列图中,所述可支撑高并发内存数据的方法开始于步骤SO:步骤SO之后进行到步骤SI,应用层程序发送读写数据请求给接入层程序;随后,到下一步骤S2,所述接入层程序将读写数据请求进行归类与合并;随后,到下一步骤S3,所述接入层程序将读写数据请求分发给缓存层程序;随后,到下一步骤S4,判断缓存层程序是读数据或写数据,如果是读数据,将转至步骤S41,如果是写数据将转至步骤S42 ;所述步骤S41为缓存层程序读取缓存数据,并转至步骤S5 ;所述步骤S42为修改缓存数据并转至步骤S5,与此同时,所述缓存层程序将数据流水写入流水文件,并转至步骤S6 ;所述步骤S5为所述缓存层程序向接入层程序返回响应包,并转至步骤S7 ;所述步骤S6为数据同步工具读取流水文件,并转至步骤SlO ;所述步骤S7为所述接入层程序将响应包进行拆解与合并;随后,到下一步骤S8、所述接入层程序向应用层程序返回读写数据响应包,并转至步骤S9 ;所述步骤SlO为所述数据同步工具将流水文件进行流水组包;随后,到下一步骤S11,缓存层的备机同步流水文件,并转至步骤S9 ;最后该方法结束于步骤S9。
[0040]进一步的,所述步骤S2的所述接入层程序将读写数据请求进行归类与合并,是根据请求的数据项所在的缓存层位置进行归类,然后根据请求的请求类型,将请求单条记录的请求事务进行合并,最后将请求转发到相应的缓存层程序之中。
[0041]进一步的,所述缓存层包括主存储层和副存储层,用于数据容灾。
[0042]进一步的,所述缓存层还包括内存管理模块,用于管理内存数据。
[0043]进一步的,所述缓存层管理数据,并定期将缓存层的内存的所有数据转存储在磁盘上。
[0044]进一步的,在所述缓存层程序定期将内存中的所有数据转存储在磁盘上时,所述缓存层程序将记录用户的每一次写数据请求。
[0045]进一步的,所述缓存层的内存包含至少一个Cluster,Cluster包含至少一个Block, Block包含至少一个Chunk,每次分配内存时根据预分配的内存大小选择合适的Chunk进行分配。
[0046]进一步的,所述缓存层在释放内存时先返回到内存管理模块,由内存管理模块控制缓存层是否释放内存。
[0047]在接入层程序对应用层程序的请求进行归类合并处理,并转发到相关的缓存层程序;缓存层程序管理内存数据,保证数据的安全性,并处理接入层程序的数据请求。
[0048]1、接入层
[0049]所述接入层程序直接服务于应用层程序,主要功能包括:
[0050]将应用层的请求分发到相应的缓存层程序,实现数据的分布式部署,以达到应用层程序开发者不需要处理数据的分布式存储设计;
[0051]将应用层的请求事务进行合并,减少后端缓存层程序的网络1开销,以达到提高缓存层程序并发处理事务的能力。
[0052]对应用层的请求,首先根据请求的数据项所在的缓存层位置,将应用层的请求按缓存层位置归类,然后根据请求的请求类型,将请求单条记录的请求事务进行合并,最后将请求转发到相应的缓存层程序。
[0053]2、缓存层
[0054]所述缓存层程序实现对数据的管理,并定期将内存中的所有数据存储在磁盘上,同时记录用户的每一次写操作请求。缓存层程序分主机和备机部署,以达到数据容灾的功能。主要功能包括:
[0055]I)业务数据管理,用于对数据存储、数据接口、数据扩展等有关的管理。
[0056]2)内存管理。内存池包含若干个Cluster,Cluster包含若干Block,Block包含若干个Chunk。每次分配内存时根据预分配的内存大小选择合适的Chunk进行分配,释放内存时先退还给内存管理模块,由内存管理模块决定是否真正的释放。
[0057]3)数据流水。每次写操作都将数据流水写入流水文件。
[0058]4)数据同步。对于每次写操作,都会将数据同步到备机。
[0059]5)数据迀移。当主服务的机器数据容量或者并发量达不到应用服务需求时,将数据进行分布式存储,对应部署多套主备服务器。数据迀移时,先将当前服务器中待迀移的数据迀移到新部署的服务器,同时将写数据流水同步到新服务器,迀移完成后,通知接入层服务程序修改调度策略,从而保证存储设备的无缝扩容。
[0060]进一步的,在每次写数据时,将数据同步到缓存层的备机之中。
[0061]进一步的,在每次写数据时,将数据流水写入流水文件之中。
[0062]实施本发明的可支撑高并发内存数据的方法,具有以下有益效果:能提供高并发高实时性的数据访问服务,减少应用层程序开发人员进行数据设计和开发的成本;能保证数据的绝对安全,数据抗风险能力强;能最大化数据缓存层程序的并发处理事务的能力。
[0063]如图3所示,在本发明的可支撑高并发内存数据的方法的优选实施例的数据存储原理示意图,在缓存层中,所述业务数据管理用于对数据的存储、容量等的管理;对所述业务数据管理的数据存储按照分级式进行管理。
[0064]如图4所示,在本发明的可支撑高并发内存数据的方法的优选实施例的应用层程序读数据操作的流程序列图中,所述读数据操作开始于步骤S100,步骤SlOO之后进行到步骤S110,应用层程序发送读数据请求给接入层程序;随后,到下一步骤S120,所述接入层程序将读数据请求进行归类与合并;随后,到下一步骤S130,所述接入层程序将读数据请求分发给缓存层程序;随后,到下一步骤S140,所述缓存层程序读取缓存数据;随后,到下一步骤S150,所述缓存层程序向接入层程序返回响应包;随后,到下一步骤S160,所述接入层程序将响应包进行拆解与合并;随后,到下一步骤S170,所述接入层程序向应用层程序返回读数据响应包;最后该流程结束于步骤S180。
[0065]实施本发明的可支撑高并发内存数据的方法的优选实施例的应用层程序读数据操作的流程,用于海量服务开发人员在存储数据时,可以快速方便的实现数据的存储,对读数据的访问能够达到高并发高实时性的要求,同时应用层程序不需要处理读数据的分布式存储和部署,提高开发效率。
[0066]如图5所示,在本发明的可支撑高并发内存数据的方法的优选实施例的应用层程序写数据操作的流程序列图中,所述写数据操作开始于步骤S200,步骤S200之后进行到步骤S210,应用层程序发送写数据请求给接入层程序;随后,到下一步骤S220,所述接入层程序将写数据请求进行归类与合并;随后,到下一步骤S230,所述接入层程序将写数据请求分发给缓存层程序;随后,到下一步骤S240,所述缓存层程序修改缓存数据;随后,到下一步骤S250,所述缓存层程序向接入层程序返回响应包;随后,到下一步骤S260,所述接入层程序将响应包进行拆解与合并;随后,到下一步骤S270、所述接入层程序向应用层程序返回读写数据响应包,并转至步骤S280 ;在所述步骤S240进行的同时进行步骤S290,所述缓存层程序将数据流水写入流水文件;随后,到下一步骤S300,数据同步工具读取流水文件;随后,到下一步骤S310,所述数据同步工具将流水文件进行流水组包;随后,到下一步骤S320,缓存层的备机同步流水文件,并转至步骤S280 ;最后该流程结束于步骤S280。
[0067]实施本发明的可支撑高并发内存数据的方法的优选实施例的应用层程序写数据操作的流程,用于海量服务开发人员在存储数据时,可以快速方便的实现数据的存储,对写数据的访问能够达到高并发高实时性的要求,同时应用层程序不需要处理写数据的分布式存储和部署,提高开发效率。
[0068]与现有技术相比,本发明的可支撑高并发内存数据的方法的优点在于:能提供高并发高实时性的数据访问服务,减少应用层程序开发人员进行数据设计和开发的成本;能保证数据的绝对安全,数据抗风险能力强;能最大化数据缓存层程序的并发处理事务的能力。
[0069]以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构变换,或直接或间接运用在其他相关的【技术领域】,均同理包括在本发明的专利保护范围内。
【权利要求】
1.一种可支撑高并发内存数据的方法,其特征在于,该方法包括: 51、应用层程序发送读写数据请求给接入层程序; 52、所述接入层程序将读写数据请求进行归类与合并; 53、所述接入层程序将读写数据请求分发给缓存层程序; 54、所述缓存层程序判断是读数据或写数据,如果是读数据,将转至步骤S41,如果是写数据将转至步骤S42 ; 541、缓存层程序将读取缓存数据,并转至步骤S5; 542、修改缓存数据并转至步骤S5,与此同时,所述缓存层程序将数据流水写入流水文件,并转至步骤S6 ; 55、所述缓存层程序向接入层程序返回响应包,并转至步骤S7; 56、数据同步工具读取流水文件,并转至步骤SlO; 57、所述接入层程序将响应包进行拆解与合并; 58、所述接入层程序向应用层程序返回读写数据响应包,并转至步骤S9; 59、结束程序; 510、所述数据同步工具将流水文件进行流水组包; 511、缓存层的备机同步流水文件,并转至步骤S9。
2.根据权利要求1所述的可支撑高并发内存数据的方法,其特征在于,所述步骤S2的所述接入层程序将读写数据请求进行归类与合并,是根据请求的数据项所在的缓存层位置进行归类,然后根据请求的请求类型,将请求单条记录的请求事务进行合并,最后将请求转发到相应的缓存层程序之中。
3.根据权利要求1或2所述的可支撑高并发内存数据的方法,其特征在于,所述缓存层包括主存储层和副存储层,用于数据容灾。
4.根据权利要求1所述的可支撑高并发内存数据的方法,其特征在于,所述缓存层管理数据,并定期将缓存层的内存的所有数据转存储在磁盘上。
5.根据权利要求1或4所述的可支撑高并发内存数据的方法,其特征在于,在所述缓存层程序定期将内存中的所有数据转存储在磁盘上时,所述缓存层程序将记录用户的每一次写数据请求。
6.根据权利要求1所述的可支撑高并发内存数据的方法,其特征在于,所述缓存层的内存包含至少一个Cluster,Cluster包含至少一个Block,Block包含至少一个Chunk,每次分配内存时根据预分配的内存大小选择合适的Chunk进行分配。
7.根据权利要求1或6所述的可支撑高并发内存数据的方法,其特征在于,所述缓存层在释放内存时先返回到内存管理模块,由内存管理模块控制缓存层是否释放内存。
8.根据权利要求1所述的可支撑高并发内存数据的方法,其特征在于,在每次写数据时,将数据同步到缓存层的备机之中。
9.根据权利要求1所述的可支撑高并发内存数据的方法,其特征在于,在每次写数据时,将数据流水写入流水文件之中。
【文档编号】G06F9/38GK104484136SQ201410822558
【公开日】2015年4月1日 申请日期:2014年12月25日 优先权日:2014年12月25日
【发明者】向志玲 申请人:深圳联友科技有限公司