面向对象的缓存写入、读取方法及装置的制造方法

文档序号:10724828阅读:357来源:国知局
面向对象的缓存写入、读取方法及装置的制造方法
【专利摘要】本发明涉及面向对象的缓存写入、读取方法及装置。该面向对象的缓存写入方法包括:在接收到写入请求的情况下,调用通用对象存储接口;通过通用对象存储接口确定写入请求对应的待写入对象的唯一标识符,并根据唯一标识符生成待写入对象的键;通过通用对象存储接口按照预设协议规定的参数类型和参数格式将待写入对象序列化为流,预设协议能够用于任意类的序列化;通过通用对象存储接口根据键将流写入缓存。根据本发明能够将面向对象语言与缓存相结合,实现直接存取面向对象语言中的对象,从而大大减少开发工作量,提高开发的便携性和效率,并能降低外部存储设备的读写负载,解决外部存储设备的读写性能瓶颈问题,从而大大提高系统性能。
【专利说明】
面向对象的缓存写入、读取方法及装置
技术领域
[0001]本发明涉及缓存技术领域,尤其涉及一种面向对象的缓存写入、读取方法及装置。 【背景技术】
[0002]对于大规模Web(网页)系统,用户数量非常大,导致服务器的负载非常高,因此磁盘读写性能低下,需要使用内存作为缓存来提高整个系统的性能。缓存可以直接向大多数用户提供服务,避免用户的每个请求都访问性能低下的外部存储设备,从而提高了整个系统的效率。因此,缓存对于提高整个系统的性能是极为重要的。
[0003]现有的大规模Web系统通常使用面向对象语言进行开发。面向对象是一种软件开发方法,指的是在程序设计中采用封装、继承和多态等设计方法。封装是指将现实世界中存在的某个客体的属性与行为绑定在一起,并放置在一个逻辑单元内。该逻辑单元负责将所描述的属性隐藏起来,外界对客体内部属性的所有访问只能通过提供的用户接口实现。这样做既可以起到对客体属性的保护作用,又可以提高软件系统的可维护性。对象是人们要进行研究的任何事物,从简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。对象具有状态,一个对象用数据值来描述它的状态。对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中。类是具有相同特性和行为的对象的抽象。因此,类是对象的抽象,对象是类的具体化,也可以说,对象是类的实例。类实际上是一种数据类型。例如,鹦鹉可以视为一种类,而具体的一只鹦鹉可以视为一个对象。类具有属性,它是对象的状态的抽象,类的属性用数据结构来描述。类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。
[0004]缓存指的是数据交换的缓冲区,当某一硬件要读取数据时,会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话则从下一级存储设备中查找。由于缓存的读写速度比下一级存储设备快得多,因此缓存能够帮助整个系统更快地运行。缓存工作的原理即“引用的局部性”,包括时间局部性和空间局部性。时间局部性是指当某个数据被访问过一次之后,过不了多长时间就会被再一次访问;空间局部性是指CPU(Central Processing Unit,中央处理器)在某一时刻需要某个数据,那么很可能下一步就需要其附近的数据。对于应用程序而言,不管是指令流还是数据流都会出现引用的局部性现象。由于计算机的内存的读写速度远远快于硬盘的读写速度,因此可以将从硬盘读取到的数据暂时存放在内存里,之后使用该数据的时候就不用再次从硬盘中读取了,这样就大大提高了整体的读写速度,这个过程就是基于前述的引用的局部性原理把内存作为硬盘的缓存使用。
[0005]现有的大规模Web系统通常使用面向对象语言进行开发,但目前的缓存技术无法很好地适应面向对象系统的开发需求。具体而言,目前在面向对象系统中使用缓存技术时, 协议在各个类之间无法通用,研发人员需要为每个类分别设计序列化和反序列化协议,以及针对每个类分别进行开发和调试,导致耗费大量时间,且容易出错,整个过程效率低下。
【发明内容】

[0006]技术问题
[0007]有鉴于此,本发明要解决的技术问题是,现有的缓存技术在面向对象系统中的适应性较差,导致开发效率较低。
[0008]解决方案
[0009]为了解决上述技术问题,根据本发明的一实施例,提供了一种面向对象的缓存写入方法,包括:
[0010]在接收到写入请求的情况下,调用通用对象存储接口;[〇〇11] 通过所述通用对象存储接口确定所述写入请求对应的待写入对象的唯一标识符, 并根据所述唯一标识符生成所述待写入对象的键;
[0012]通过所述通用对象存储接口按照预设协议规定的参数类型和参数格式将所述待写入对象序列化为流,所述预设协议能够用于任意类的序列化;
[0013]通过所述通用对象存储接口根据所述键将所述流写入缓存。
[0014]对于上述方法,在一种可能的实现方式中,在通过所述通用对象存储接口根据所述键将所述流写入缓存之后,所述方法还包括:
[0015]根据所述键将所述流写入外部存储设备。
[0016]对于上述方法,在一种可能的实现方式中,通过所述通用对象存储接口按照预设协议规定的参数类型和参数格式将所述待写入对象序列化为流,包括:
[0017]通过所述通用对象存储接口确定所述预设协议规定的所有所述参数类型,并确定所述待写入对象对应的所有所述参数类型的参数值;
[0018]通过所述通用对象存储接口按照所述预设协议规定的所述参数格式,将所述预设协议的信息以及所述待写入对象对应的所有所述参数类型的参数值转换为流。
[0019]对于上述方法,在一种可能的实现方式中,所述参数类型包括:对象所属的类的名称参数、所述对象的全部属性名称参数、所述对象的全部属性值参数、所述对象的全部方法的名称参数、所述对象所属的类创建所述对象的方法的名称参数、所述对象所属的类的全部属性名称参数和所述对象所属的类的全部属性值参数。
[0020]为了解决上述技术问题,根据本发明的另一实施例,提供了一种面向对象的缓存读取方法,包括:
[0021]在接收到查询请求的情况下,通过通用对象查询接口确定所述查询请求对应的键;
[0022]若通过所述通用对象查询接口从所述缓存中查找到所述键对应的流,则按照预设协议规定的参数类型和参数格式将所述流反序列化为对象,所述预设协议能够用于任意类的反序列化;
[0023]通过所述通用对象查询接口返回所述对象,以响应所述查询请求。
[0024]对于上述方法,在一种可能的实现方式中,在通过通用对象查询接口确定所述查询请求对应的键之后,所述方法还包括:
[0025]若通过所述通用对象查询接口从所述缓存中查找不到所述键对应的流,则从外部存储设备中查找所述键对应的流;
[0026]若从所述外部存储设备中查找到所述键对应的流,则按照所述预设协议规定的所述参数类型和所述参数格式将所述流反序列化为所述对象,并返回所述对象,以响应所述查询请求。
[0027]对于上述方法,在一种可能的实现方式中,按照预设协议规定的参数类型和参数格式将所述流反序列化为对象,包括:
[0028]从所述流中获取所述预设协议的信息,并根据所述预设协议的信息确定所述预设协议规定的所述参数类型和所述参数格式;
[0029]根据所述预设协议规定的所述参数类型和所述参数格式,以及所述流中所有所述参数类型的参数值,将所述流反序列化为所述对象。
[0030]对于上述方法,在一种可能的实现方式中,所述参数类型包括:对象所属的类的名称参数、所述对象的全部属性名称参数、所述对象的全部属性值参数、所述对象的全部方法的名称参数、所述对象所属的类创建所述对象的方法的名称参数、所述对象所属的类的全部属性名称参数和所述对象所属的类的全部属性值参数。
[0031]为了解决上述技术问题,根据本发明的另一实施例,提供了一种面向对象的缓存写入装置,包括:
[0032]通用对象存储接口调用模块,用于在接收到写入请求的情况下,调用通用对象存储接口;
[0033]键生成模块,用于通过所述通用对象存储接口确定所述写入请求对应的待写入对象的唯一标识符,并根据所述唯一标识符生成所述待写入对象的键;
[0034]序列化模块,用于通过所述通用对象存储接口按照预设协议规定的参数类型和参数格式将所述待写入对象序列化为流,所述预设协议能够用于任意类的序列化;
[0035]缓存写入模块,用于通过所述通用对象存储接口根据所述键将所述流写入缓存。
[0036]对于上述装置,在一种可能的实现方式中,所述装置还包括:
[0037]外部存储设备写入模块,用于根据所述键将所述流写入外部存储设备。
[0038]对于上述装置,在一种可能的实现方式中,所述序列化模块包括:
[0039]参数值确定子模块,用于通过所述通用对象存储接口确定所述预设协议规定的所有所述参数类型,并确定所述待写入对象对应的所有所述参数类型的参数值;
[0040]序列化子模块,用于通过所述通用对象存储接口按照所述预设协议规定的所述参数格式,将所述预设协议的信息以及所述待写入对象对应的所有所述参数类型的参数值转换为流。
[0041]对于上述装置,在一种可能的实现方式中,所述参数类型包括:对象所属的类的名称参数、所述对象的全部属性名称参数、所述对象的全部属性值参数、所述对象的全部方法的名称参数、所述对象所属的类创建所述对象的方法的名称参数、所述对象所属的类的全部属性名称参数和所述对象所属的类的全部属性值参数。[〇〇42]为了解决上述技术问题,根据本发明的另一实施例,提供了一种面向对象的缓存读取装置,包括:
[0043]键确定模块,用于在接收到查询请求的情况下,通过通用对象查询接口确定所述查询请求对应的键;
[0044]反序列化模块,用于若通过所述通用对象查询接口从所述缓存中查找到所述键对应的流,则按照预设协议规定的参数类型和参数格式将所述流反序列化为对象,所述预设协议能够用于任意类的反序列化;
[0045]第一查询响应模块,用于通过所述通用对象查询接口返回所述对象,以响应所述查询请求。
[0046]对于上述装置,在一种可能的实现方式中,所述装置还包括:
[0047]第一查找模块,用于若通过所述通用对象查询接口从所述缓存中查找不到所述键对应的流,则从外部存储设备中查找所述键对应的流;
[0048]第二查询响应模块,用于若从所述外部存储设备中查找到所述键对应的流,则按照所述预设协议规定的所述参数类型和所述参数格式将所述流反序列化为所述对象,并返回所述对象,以响应所述查询请求。
[0049]对于上述装置,在一种可能的实现方式中,所述反序列化模块包括:
[0050]参数类型和格式确定子模块,用于从所述流中获取所述预设协议的信息,并根据所述预设协议的信息确定所述预设协议规定的所述参数类型和所述参数格式;
[0051]反序列化子模块,用于根据所述预设协议规定的所述参数类型和所述参数格式, 以及所述流中所有所述参数类型的参数值,将所述流反序列化为所述对象。
[0052]对于上述装置,在一种可能的实现方式中,所述参数类型包括:对象所属的类的名称参数、所述对象的全部属性名称参数、所述对象的全部属性值参数、所述对象的全部方法的名称参数、所述对象所属的类创建所述对象的方法的名称参数、所述对象所属的类的全部属性名称参数和所述对象所属的类的全部属性值参数。
[0053]有益效果[〇〇54] 通过封装通用对象存储接口和通用对象查询接口,设置能够用于任意类的序列化和反序列化的预设协议,根据本发明实施例的面向对象的缓存写入方法、读取方法及装置能够将面向对象语言与缓存相结合,能够通过封装的通用对象存储接口和通用对象查询接口实现直接存取面向对象语言中的对象,从而大大减少开发工作量,提高开发的便携性和效率,并能降低外部存储设备的读写负载,解决外部存储设备的读写性能瓶颈问题,从而大大提高系统性能;在将本发明实施例的面向对象的缓存写入方法、读取方法及装置应用于服务器端的情况下,可以大大提高服务器的访问速度,支持更高的并发,从而相同用户量所需要的服务器数量大大减小。
[0055]根据下面参考附图对示例性实施例的详细说明,本发明的其它特征及方面将变得清楚。【附图说明】
[0056]包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本发明的示例性实施例、特征和方面,并且用于解释本发明的原理。
[0057]图1示出根据本发明一实施例的面向对象的缓存写入方法的实现流程图;
[0058]图2示出根据本发明一实施例的面向对象的缓存写入方法的另一实现流程图的示意图;[〇〇59]图3示出根据本发明一实施例的面向对象的缓存写入方法步骤S103的具体实现流程图的;^意图;
[0060]图4示出根据本发明一实施例的面向对象的缓存读取方法的实现流程图;
[0061]图5示出根据本发明一实施例的面向对象的缓存读取方法的另一实现流程图的示意图;[〇〇62]图6示出根据本发明一实施例的面向对象的缓存读取方法步骤S402中按照预设协议规定的参数类型和参数格式将流反序列化为对象的具体实现流程图的示意图;[〇〇63]图7示出根据本发明一实施例的面向对象的缓存写入装置的结构框图;[〇〇64]图8示出根据本发明一实施例的面向对象的缓存读取装置的结构框图;
[0065]图9示出根据本发明一实施例的面向对象的缓存写入装置的一示例性的结构框图;
[0066]图10示出根据本发明一实施例的面向对象的缓存读取装置的一示例性的结构框图。【具体实施方式】
[0067]以下将参考附图详细说明本发明的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
[0068]在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性” 所说明的任何实施例不必解释为优于或好于其它实施例。
[0069]另外,为了更好的说明本发明,在下文的【具体实施方式】中给出了众多的具体细节。 本领域技术人员应当理解,没有某些具体细节,本发明同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本发明的主旨。
[0070]实施例1[〇〇71]图1示出根据本发明一实施例的面向对象的缓存写入方法的实现流程图。如图1所示,该方法主要包括:[〇〇72]在步骤S101中,在接收到写入请求的情况下,调用通用对象存储接口。
[0073]需要说明的是,本发明实施例可以适用于基于面向对象语言开发的任何系统中, 例如可以应用于网站的后台服务器中。
[0074]其中,通用对象存储接口可以为用于存储类的对象的通用接口,供外部调用。调用该通用对象存储接口可以直接向面向对象系统的缓存中写入任意类的对象。
[0075]在本发明实施例中,在外部接口接收到写入请求的情况下,外部接口调用通用对象存储接口,以使通用对象存储接口向缓存中写入该写入请求对应的待写入对象。[〇〇76] 在步骤S102中,通过通用对象存储接口确定写入请求对应的待写入对象的唯一标识符,并根据唯一标识符生成待写入对象的键。
[0077]其中,待写入对象的唯一标识符可以包括待写入对象的一种属性名称和该属性名称对应的属性值,根据该属性值可以唯一确定该待写入对象,由此该唯一标识符可以作为存取标记。根据唯一标识符生成待写入对象的键可以为:将唯一标识符转换得到的字符串作为待写入对象的键。[〇〇78] 在步骤S103中,通过通用对象存储接口按照预设协议规定的参数类型和参数格式将待写入对象序列化为流,预设协议能够用于任意类的序列化。
[0079]其中,流可以为字节流或者字符流,在此不作限定。字节流是由字节组成的,字符流是由字符组成的。在本发明实施例中,字节流可以指将待写入对象按照预设协议封装成一系列连续字节;字符流可以指将待写入对象按照预设协议封装成一系列连续字符。类可以为任意一个面向对象语言定义的类,对象是类的实例。
[0080]在本发明实施例中,可以预先设计能够用于任意类的序列化的通用的预设协议, 通过通用对象存储接口可以调用该预设协议,以实现在缓存中写入对象。由于无需为每个类分别设计协议,从而大大减少了开发工作量,提高了开发便捷性及开发效率。[0081 ]在步骤S104中,通过通用对象存储接口根据键将流写入缓存。[〇〇82]在本发明实施例中,缓存可以使用内存作为存储设备。缓存可以采用键值对的存储方式,可以使用散列表作为数据结构,键可以是一个任意的字符串,值也可以是一个任意的字符串,一个键对应一个值。散列表可以根据键确定值的存储位置,从而实现了常数级的查找、更新和删除。在本发明实施例中,键值对中的值可以指流。[〇〇83]其中,步骤S104具体可以为:通过通用对象存储接口根据键基于哈希算法将流写入缓存。
[0084]本发明实施例将向缓存写入对象的过程封装为通用对象存储接口,调用该通用对象存储接口,可以直接将面向对象语言中的类的对象写入缓存中。[〇〇85]在一种可能的实现方式在,在步骤S101之前,该方法还包括:将类实例化,产生待写入对象,并根据该类定义的各个属性对该待写入对象进行赋值。
[0086]图2示出根据本发明一实施例的面向对象的缓存写入方法的另一实现流程图的示意图。如图2所示,该方法主要包括:[〇〇87]在步骤S201中,在接收到写入请求的情况下,调用通用对象存储接口;[〇〇88] 在步骤S202中,通过通用对象存储接口确定写入请求对应的待写入对象的唯一标识符,并根据唯一标识符生成待写入对象的键;[〇〇89] 在步骤S203中,通过通用对象存储接口按照预设协议规定的参数类型和参数格式将待写入对象序列化为流,预设协议能够用于任意类的序列化;
[0090]在步骤S204中,通过通用对象存储接口根据键将流写入缓存;[0091 ]在步骤S205中,根据键将流写入外部存储设备。
[0092]在一种可能的实现方式中,在通过通用对象存储接口根据键将流写入缓存后,根据键将流写入外部存储设备。在这里,外部存储设备可以为硬盘,在此不作限定。外部存储设备用于永久性存储数据。
[0093]图3示出根据本发明一实施例的面向对象的缓存写入方法步骤S103的具体实现流程图的示意图。如图3所示,通过通用对象存储接口按照预设协议规定的参数类型和参数格式将待写入对象序列化为流,包括:[〇〇94]在步骤S301中,通过通用对象存储接口确定预设协议规定的所有参数类型,并确定待写入对象对应的所有参数类型的参数值;[〇〇95]在步骤S302中,通过通用对象存储接口按照预设协议规定的参数格式,将预设协议的信息以及待写入对象对应的所有参数类型的参数值转换为流。
[0096]其中,预设协议的信息可以包括预设协议的标识和预设协议的版本号。参数格式可以包括流中各个参数的顺序。参数格式还可以包括参数的编码标准,例如,参数的编码标准为 ASCII (American Standard Code for Informat1n Interchange,美国标准信息交换代码)。
[0097]在一种可能的实现方式中,参数类型包括:对象所属的类的名称参数、对象的全部属性名称参数、对象的全部属性值参数、对象的全部方法的名称参数、对象所属的类创建对象的方法的名称参数、对象所属的类的全部属性名称参数和对象所属的类的全部属性值参数等。
[0098]例如,待写入对象的参数包括:待写入对象所属的类的名称、待写入对象的全部属性名称、待写入对象的全部属性值、待写入对象的全部方法的名称、待写入对象所述的类创建该待写入对象的方法的名称、待写入对象所属的类的全部属性名称和待写入对象所属的类的全部属性值。[〇〇99]这样,通过封装通用对象存储接口,设置能够用于任意类的序列化的预设协议,根据本发明实施例的面向对象的缓存写入方法能够将面向对象语言与缓存相结合,能够通过封装的通用对象存储接口实现直接写入面向对象语言中的对象,从而大大减少开发工作量,提高开发的便携性和效率,并能降低外部存储设备的读写负载,解决外部存储设备的读写性能瓶颈问题,从而大大提高系统性能;在将本发明实施例的面向对象的缓存写入方法应用于服务器端的情况下,可以大大提高服务器的访问速度,支持更高的并发,从而相同用户量所需要的服务器数量大大减小。
[0100] 实施例2[〇1〇1]图4示出根据本发明一实施例的面向对象的缓存读取方法的实现流程图。如图4所示,该方法主要包括:
[0102]在步骤S401中,在接收到查询请求的情况下,通过通用对象查询接口确定查询请求对应的键。
[0103]其中,通用对象查询接口可以是根据查询请求查询类的对象的通用接口,供外部调用。调用该通用对象查询接口可以直接根据查询请求从面向对象的缓存中查询及获取对象,即该通用对象查询接口返回的结果是对象。该通用对象查询接口支持对任意类的查询。
[0104]在本发明实施例中,通过通用对象查询接口确定查询请求对应的键可以为:通过通用对象查询接口确定查询请求对应的查询条件,根据预先存储的映射列表确定查询条件对应的键。
[0105]在步骤S402中,若通过通用对象查询接口从缓存中查找到键对应的流,则按照预设协议规定的参数类型和参数格式将流反序列化为对象,预设协议能够用于任意类的反序列化。
[0106]在通过通用对象查询接口确定查询请求对应的键之后,通过通用对象查询接口根据键基于哈希算法在缓存中进行查找。
[0107]在本发明实施例中,可以预先设计能够用于任意类的反序列化的通用的预设协议,通过通用对象查询接口可以调用该预设协议,以实现在缓存中查询对象。由于无需为每个类分别设计协议,从而大大减少了开发工作量,提高了开发便捷性及开发效率。
[0108]在步骤S403中,通过通用对象查询接口返回对象,以响应查询请求。
[0109]在本发明实施例中,当通过通用对象查询接口将流反序列化为对象后,通用对象查询接口将对象提供给外部接口。
[0110]本发明实施例通过将从缓存中获取流并反序列化为对象的过程封装为通用对象查询接口,调用该通用对象查询接口,可以直接从缓存中读取面向对象语言中的类的对象。
[0111]图5示出根据本发明一实施例的面向对象的缓存读取方法的另一实现流程图的示意图。如图5所示,该方法主要包括:
[0112]在步骤S501中,在接收到查询请求的情况下,通过通用对象查询接口确定查询请求对应的键。
[0113]在步骤S502中,若通过通用对象查询接口从缓存中查找到键对应的流,则按照预设协议规定的参数类型和参数格式将流反序列化为对象,预设协议能够用于任意类的反序列化。
[0114]在步骤S503中,通过通用对象查询接口返回对象,以响应查询请求。
[0115]在步骤S504中,若通过通用对象查询接口从缓存中查找不到键对应的流,则从外部存储设备中查找键对应的流。
[0116]在步骤S505中,若从外部存储设备中查找到键对应的流,则按照预设协议规定的参数类型和参数格式将流反序列化为对象,并返回对象,以响应查询请求。[〇117]图6示出根据本发明一实施例的面向对象的缓存读取方法步骤S402中按照预设协议规定的参数类型和参数格式将流反序列化为对象的具体实现流程图的示意图。如图6所示,按照预设协议规定的参数类型和参数格式将流反序列化为对象,包括:
[0118]在步骤S601中,从流中获取预设协议的信息,并根据预设协议的信息确定预设协议规定的参数类型和参数格式;
[0119]在步骤S602中,根据预设协议规定的参数类型和参数格式,以及流中所有参数类型的参数值,将流反序列化为对象。
[0120]其中,预设协议的信息可以包括预设协议的标识和预设协议的版本号。根据预设协议的标识和预设协议的版本号,可以确定预设协议规定的参数类型和参数格式,从而可以确定流中的所有参数类型和参数格式。[0121 ]在一种可能的实现方式中,参数类型包括:对象所属的类的名称参数、对象的全部属性名称参数、对象的全部属性值参数、对象的全部方法的名称参数、对象所属的类创建对象的方法的名称参数、对象所属的类的全部属性名称参数和对象所属的类的全部属性值参数等。
[0122]这样,通过封装通用对象查询接口,设置能够用于任意类的反序列化的预设协议, 根据本发明实施例的面向对象的缓存读取方法能够将面向对象语言与缓存相结合,能够通过通用对象查询接口实现直接读取面向对象语言中的对象,从而大大减少开发工作量,提高开发的便携性和效率,并能降低外部存储设备的读写负载,解决外部存储设备的读写性能瓶颈问题,从而大大提高系统性能;在将本发明实施例的面向对象的缓存读取方法应用于服务器端的情况下,可以大大提高服务器的访问速度,支持更高的并发,从而相同用户量所需要的服务器数量大大减小。
[0123]实施例3
[0124]图7示出根据本发明一实施例的面向对象的缓存写入装置的结构框图。该装置可以为服务器,也可以为其他缓存写入装置,在此不作限定。为了便于说明,仅示出了与本发明实施例相关的部分。如图7所示,该装置包括:
[0125]通用对象存储接口调用模块71,用于在接收到写入请求的情况下,调用通用对象存储接口;
[0126]键生成模块72,用于通过通用对象存储接口确定写入请求对应的待写入对象的唯一标识符,并根据唯一标识符生成待写入对象的键;
[0127]序列化模块73,用于通过通用对象存储接口按照预设协议规定的参数类型和参数格式将待写入对象序列化为流,预设协议能够用于任意类的序列化;
[0128]缓存写入模块74,用于通过通用对象存储接口根据键将流写入缓存。
[0129]在一种可能的实现方式中,装置还包括:
[0130]外部存储设备写入模块75,用于根据键将流写入外部存储设备。
[0131]在一种可能的实现方式中,序列化模块73包括:
[0132]参数值确定子模块731,用于通过通用对象存储接口确定预设协议规定的所有参数类型,并确定待写入对象对应的所有参数类型的参数值;
[0133]序列化子模块732,用于通过通用对象存储接口按照预设协议规定的参数格式,将预设协议的信息以及待写入对象对应的所有参数类型的参数值转换为流。
[0134]在一种可能的实现方式中,参数类型包括:对象所属的类的名称参数、对象的全部属性名称参数、对象的全部属性值参数、对象的全部方法的名称参数、对象所属的类创建对象的方法的名称参数、对象所属的类的全部属性名称参数和对象所属的类的全部属性值参数等。
[0135]这样,通过封装通用对象存储接口,设置能够用于任意类的序列化的预设协议,根据本发明实施例的面向对象的缓存写入装置能够将面向对象语言与缓存相结合,能够通过封装的通用对象存储接口实现直接写入面向对象语言中的对象,从而大大减少开发工作量,提高开发的便携性和效率,并能降低外部存储设备的读写负载,解决外部存储设备的读写性能瓶颈问题,从而大大提高系统性能;在将本发明实施例的面向对象的缓存写入装置应用于服务器端的情况下,可以大大提高服务器的访问速度,支持更高的并发,从而相同用户量所需要的服务器数量大大减小。
[0136]实施例4
[0137]图8示出根据本发明一实施例的面向对象的缓存读取装置的结构框图。该装置可以为服务器,也可以为其他缓存读取装置,在此不作限定。为了便于说明,仅示出了与本发明实施例相关的部分。如图8所示,该装置包括:
[0138]键确定模块81,用于在接收到查询请求的情况下,通过通用对象查询接口确定查询请求对应的键;
[0139]反序列化模块82,用于若通过通用对象查询接口从缓存中查找到键对应的流,则按照预设协议规定的参数类型和参数格式将流反序列化为对象,预设协议能够用于任意类的反序列化;[〇14〇] 第一查询响应模块83,用于通过通用对象查询接口返回对象,以响应查询请求。
[0141]在一种可能的实现方式中,装置还包括:
[0142]第一查找模块84,用于若通过通用对象查询接口从缓存中查找不到键对应的流, 则从外部存储设备中查找键对应的流;
[0143]第二查询响应模块85,用于若从外部存储设备中查找到键对应的流,则按照预设协议规定的参数类型和参数格式将流反序列化为对象,并返回对象,以响应查询请求。
[0144]在一种可能的实现方式中,反序列化模块82包括:
[0145]参数类型和格式确定子模块821,用于从流中获取预设协议的信息,并根据预设协议的信息确定预设协议规定的参数类型和参数格式;
[0146]反序列化子模块822,用于根据预设协议规定的参数类型和参数格式,以及流中所有参数类型的参数值,将流反序列化为对象。
[0147]在一种可能的实现方式中,参数类型包括:对象所属的类的名称参数、对象的全部属性名称参数、对象的全部属性值参数、对象的全部方法的名称参数、对象所属的类创建对象的方法的名称参数、对象所属的类的全部属性名称参数和对象所属的类的全部属性值参数等。
[0148]这样,通过封装通用对象查询接口,设置能够用于任意类的反序列化的预设协议, 根据本发明实施例的面向对象的缓存读取装置能够将面向对象语言与缓存相结合,能够通过通用对象查询接口实现直接读取面向对象语言中的对象,从而大大减少开发工作量,提高开发的便携性和效率,并能降低外部存储设备的读写负载,解决外部存储设备的读写性能瓶颈问题,从而大大提高系统性能;在将本发明实施例的面向对象的缓存读取装置应用于服务器端的情况下,可以大大提高服务器的访问速度,支持更高的并发,从而相同用户量所需要的服务器数量大大减小。
[0149]实施例5[〇15〇]图9示出了本发明的另一个实施例的一种面向对象的缓存写入装置的一示例性的结构框图。所述面向对象的缓存写入装置1100可以是具备计算能力的主机服务器、个人计算机PC、或者可携带的便携式计算机或终端等。本发明具体实施例并不对计算节点的具体实现做限定。
[0151]所述面向对象的缓存写入装置1100包括处理器(processor) 1110、通信接口 (Communicat1ns Interface) 1120、存储器(memory) 1130和总线1140。其中,处理器1110、 通信接口 1120、以及存储器1130通过总线1140完成相互间的通信。
[0152]通信接口 1120用于与网络设备通信,其中网络设备包括例如虚拟机管理中心、共享存储等。
[0153]处理器1110用于执行程序。处理器1110可能是一个中央处理器CPU,或者是专用集成电路ASIC(Applicat1n Specific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。
[0154]存储器1130用于存放文件。存储器1130可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1130也可以是存储器阵列。存储器1130还可能被分块,并且所述块可按一定的规则组合成虚拟卷。
[0155]在一种可能的实施方式中,上述程序可为包括计算机操作指令的程序代码。该程序具体可包含用于执行以下操作的指令:
[0156]在接收到写入请求的情况下,调用通用对象存储接口;
[0157]通过所述通用对象存储接口确定所述写入请求对应的待写入对象的唯一标识符, 并根据所述唯一标识符生成所述待写入对象的键;
[0158]通过所述通用对象存储接口按照预设协议规定的参数类型和参数格式将所述待写入对象序列化为流,所述预设协议能够用于任意类的序列化;
[0159]通过所述通用对象存储接口根据所述键将所述流写入缓存。[〇16〇]假设上述为第一种可能的实施方式,则在第一种可能的实施方式作为基础而提供的第二种可能的实施方式中,该程序还可包含用于执行以下操作的指令:
[0161]在通过所述通用对象存储接口根据所述键将所述流写入缓存之后,根据所述键将所述流写入外部存储设备。
[0162]在第一种可能的实施方式作为基础而提供的第三种可能的实施方式中,该程序还可包含用于执行以下操作的指令:
[0163]通过所述通用对象存储接口按照预设协议规定的参数类型和参数格式将所述待写入对象序列化为流,包括:
[0164]通过所述通用对象存储接口确定所述预设协议规定的所有所述参数类型,并确定所述待写入对象对应的所有所述参数类型的参数值;
[0165]通过所述通用对象存储接口按照所述预设协议规定的所述参数格式,将所述预设协议的信息以及所述待写入对象对应的所有所述参数类型的参数值转换为流。
[0166]在第一种、第二种或第三种可能的实施方式作为基础而提供的第四种可能的实施方式中,该程序还可包含用于执行以下操作的指令:
[0167]所述参数类型包括:对象所属的类的名称参数、所述对象的全部属性名称参数、所述对象的全部属性值参数、所述对象的全部方法的名称参数、所述对象所属的类创建所述对象的方法的名称参数、所述对象所属的类的全部属性名称参数和所述对象所属的类的全部属性值参数。
[0168]实施例6
[0169]图10示出了本发明的另一个实施例的一种面向对象的缓存读取装置的一示例性的结构框图。所述面向对象的缓存读取装置1200可以是具备计算能力的主机服务器、个人计算机PC、或者可携带的便携式计算机或终端等。本发明具体实施例并不对计算节点的具体实现做限定。
[0170]所述面向对象的缓存读取装置1200包括处理器1210、通信接口 1220、存储器1230 和总线1240。其中,处理器1210、通信接口 1220、以及存储器1230通过总线1240完成相互间的通信。
[0171]通信接口 1220用于与网络设备通信,其中网络设备包括例如虚拟机管理中心、共享存储等。
[0172]处理器1210用于执行程序。处理器1210可能是一个中央处理器CPU,或者是专用集成电路ASIC,或者是被配置成实施本发明实施例的一个或多个集成电路。
[0173]存储器1230用于存放文件。存储器1230可能包含高速RAM存储器,也可能还包括非易失性存储器,例如至少一个磁盘存储器。存储器1230也可以是存储器阵列。存储器1230还可能被分块,并且所述块可按一定的规则组合成虚拟卷。
[0174]在一种可能的实施方式中,上述程序可为包括计算机操作指令的程序代码。该程序具体可包含用于执行以下操作的指令:
[0175]在接收到查询请求的情况下,通过通用对象查询接口确定所述查询请求对应的键;
[0176]若通过所述通用对象查询接口从所述缓存中查找到所述键对应的流,则按照预设协议规定的参数类型和参数格式将所述流反序列化为对象,所述预设协议能够用于任意类的反序列化;
[0177]通过所述通用对象查询接口返回所述对象,以响应所述查询请求。
[0178]假设上述为第一种可能的实施方式,则在第一种可能的实施方式作为基础而提供的第二种可能的实施方式中,该程序还可包含用于执行以下操作的指令:
[0179]在通过通用对象查询接口确定所述查询请求对应的键之后,若通过所述通用对象查询接口从所述缓存中查找不到所述键对应的流,则从外部存储设备中查找所述键对应的流;
[0180]若从所述外部存储设备中查找到所述键对应的流,则按照所述预设协议规定的所述参数类型和所述参数格式将所述流反序列化为所述对象,并返回所述对象,以响应所述查询请求。
[0181]在第一种或第二种可能的实施方式作为基础而提供的第四种可能的实施方式中, 该程序还可包含用于执行以下操作的指令:
[0182]按照预设协议规定的参数类型和参数格式将所述流反序列化为对象,包括:
[0183]从所述流中获取所述预设协议的信息,并根据所述预设协议的信息确定所述预设协议规定的所述参数类型和所述参数格式;
[0184]根据所述预设协议规定的所述参数类型和所述参数格式,以及所述流中所有所述参数类型的参数值,将所述流反序列化为所述对象。
[0185]在第一种或第二种可能的实施方式作为基础而提供的第四种可能的实施方式中, 该程序还可包含用于执行以下操作的指令:
[0186]所述参数类型包括:对象所属的类的名称参数、所述对象的全部属性名称参数、所述对象的全部属性值参数、所述对象的全部方法的名称参数、所述对象所属的类创建所述对象的方法的名称参数、所述对象所属的类的全部属性名称参数和所述对象所属的类的全部属性值参数。
[0187]本领域普通技术人员可以意识到,本文所描述的实施例中的各示例性模块及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件形式来实现,取决于技术方案的特定应用和设计约束条件。专业技术人员可以针对特定的应用选择不同的方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0188]如果以计算机软件的形式来实现所述功能并作为独立的产品销售或使用时,则在一定程度上可认为本发明的技术方案的全部或部分(例如对现有技术做出贡献的部分)是以计算机软件产品的形式体现的。该计算机软件产品通常存储在计算机可读取的非易失性存储介质中,包括若干指令用以使得计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各实施例方法的全部或部分步骤。而前述的存储介质包括U盘、移动硬盘、 只读存储器(R〇M,Read_Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0189]以上所述,仅为本发明的【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
【主权项】
1.一种面向对象的缓存写入方法,其特征在于,包括: 在接收到写入请求的情况下,调用通用对象存储接口; 通过所述通用对象存储接口确定所述写入请求对应的待写入对象的唯一标识符,并根据所述唯一标识符生成所述待写入对象的键; 通过所述通用对象存储接口按照预设协议规定的参数类型和参数格式将所述待写入对象序列化为流,所述预设协议能够用于任意类的序列化; 通过所述通用对象存储接口根据所述键将所述流写入缓存。2.根据权利要求1所述的方法,其特征在于,在通过所述通用对象存储接口根据所述键将所述流写入缓存之后,所述方法还包括: 根据所述键将所述流写入外部存储设备。3.根据权利要求1所述的方法,其特征在于,通过所述通用对象存储接口按照预设协议规定的参数类型和参数格式将所述待写入对象序列化为流,包括: 通过所述通用对象存储接口确定所述预设协议规定的所有所述参数类型,并确定所述待写入对象对应的所有所述参数类型的参数值; 通过所述通用对象存储接口按照所述预设协议规定的所述参数格式,将所述预设协议的信息以及所述待写入对象对应的所有所述参数类型的参数值转换为流。4.根据权利要求1至3任意一项所述的方法,其特征在于,所述参数类型包括:对象所属的类的名称参数、所述对象的全部属性名称参数、所述对象的全部属性值参数、所述对象的全部方法的名称参数、所述对象所属的类创建所述对象的方法的名称参数、所述对象所属的类的全部属性名称参数和所述对象所属的类的全部属性值参数。5.一种面向对象的缓存读取方法,其特征在于,包括: 在接收到查询请求的情况下,通过通用对象查询接口确定所述查询请求对应的键; 若通过所述通用对象查询接口从所述缓存中查找到所述键对应的流,则按照预设协议规定的参数类型和参数格式将所述流反序列化为对象,所述预设协议能够用于任意类的反序列化; 通过所述通用对象查询接口返回所述对象,以响应所述查询请求。6.根据权利要求5所述的方法,其特征在于,在通过通用对象查询接口确定所述查询请求对应的键之后,所述方法还包括: 若通过所述通用对象查询接口从所述缓存中查找不到所述键对应的流,则从外部存储设备中查找所述键对应的流; 若从所述外部存储设备中查找到所述键对应的流,则按照所述预设协议规定的所述参数类型和所述参数格式将所述流反序列化为所述对象,并返回所述对象,以响应所述查询请求。7.根据权利要求5或6所述的方法,其特征在于,按照预设协议规定的参数类型和参数格式将所述流反序列化为对象,包括: 从所述流中获取所述预设协议的信息,并根据所述预设协议的信息确定所述预设协议规定的所述参数类型和所述参数格式; 根据所述预设协议规定的所述参数类型和所述参数格式,以及所述流中所有所述参数类型的参数值,将所述流反序列化为所述对象。8.根据权利要求5或6所述的方法,其特征在于,所述参数类型包括:对象所属的类的名 称参数、所述对象的全部属性名称参数、所述对象的全部属性值参数、所述对象的全部方法 的名称参数、所述对象所属的类创建所述对象的方法的名称参数、所述对象所属的类的全 部属性名称参数和所述对象所属的类的全部属性值参数。9.一种面向对象的缓存写入装置,其特征在于,包括:通用对象存储接口调用模块,用于在接收到写入请求的情况下,调用通用对象存储接 P;键生成模块,用于通过所述通用对象存储接口确定所述写入请求对应的待写入对象的 唯一标识符,并根据所述唯一标识符生成所述待写入对象的键;序列化模块,用于通过所述通用对象存储接口按照预设协议规定的参数类型和参数格 式将所述待写入对象序列化为流,所述预设协议能够用于任意类的序列化;缓存写入模块,用于通过所述通用对象存储接口根据所述键将所述流写入缓存。10.根据权利要求9所述的装置,其特征在于,所述装置还包括:外部存储设备写入模块,用于根据所述键将所述流写入外部存储设备。11.根据权利要求9所述的装置,其特征在于,所述序列化模块包括:参数值确定子模块,用于通过所述通用对象存储接口确定所述预设协议规定的所有所 述参数类型,并确定所述待写入对象对应的所有所述参数类型的参数值;序列化子模块,用于通过所述通用对象存储接口按照所述预设协议规定的所述参数格 式,将所述预设协议的信息以及所述待写入对象对应的所有所述参数类型的参数值转换为 流。12.根据权利要求9至11任意一项所述的装置,其特征在于,所述参数类型包括:对象所 属的类的名称参数、所述对象的全部属性名称参数、所述对象的全部属性值参数、所述对象 的全部方法的名称参数、所述对象所属的类创建所述对象的方法的名称参数、所述对象所 属的类的全部属性名称参数和所述对象所属的类的全部属性值参数。13.—种面向对象的缓存读取装置,其特征在于,包括:键确定模块,用于在接收到查询请求的情况下,通过通用对象查询接口确定所述查询 请求对应的键;反序列化模块,用于若通过所述通用对象查询接口从所述缓存中查找到所述键对应的 流,则按照预设协议规定的参数类型和参数格式将所述流反序列化为对象,所述预设协议 能够用于任意类的反序列化;第一查询响应模块,用于通过所述通用对象查询接口返回所述对象,以响应所述查询 请求。14.根据权利要求13所述的装置,其特征在于,所述装置还包括:第一查找模块,用于若通过所述通用对象查询接口从所述缓存中查找不到所述键对应 的流,则从外部存储设备中查找所述键对应的流;第二查询响应模块,用于若从所述外部存储设备中查找到所述键对应的流,则按照所 述预设协议规定的所述参数类型和所述参数格式将所述流反序列化为所述对象,并返回所 述对象,以响应所述查询请求。15.根据权利要求13或14所述的装置,其特征在于,所述反序列化模块包括:参数类型和格式确定子模块,用于从所述流中获取所述预设协议的信息,并根据所述 预设协议的信息确定所述预设协议规定的所述参数类型和所述参数格式;反序列化子模块,用于根据所述预设协议规定的所述参数类型和所述参数格式,以及 所述流中所有所述参数类型的参数值,将所述流反序列化为所述对象。16.根据权利要求13或14所述的装置,其特征在于,所述参数类型包括:对象所属的类 的名称参数、所述对象的全部属性名称参数、所述对象的全部属性值参数、所述对象的全部 方法的名称参数、所述对象所属的类创建所述对象的方法的名称参数、所述对象所属的类 的全部属性名称参数和所述对象所属的类的全部属性值参数。
【文档编号】G06F9/44GK106095698SQ201610391139
【公开日】2016年11月9日
【申请日】2016年6月3日 公开号201610391139.2, CN 106095698 A, CN 106095698A, CN 201610391139, CN-A-106095698, CN106095698 A, CN106095698A, CN201610391139, CN201610391139.2
【发明人】王军, 吴昊宇, 王冀
【申请人】合一网络技术(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1