一种索引数据存储方法、系统、设备及存储介质与流程

文档序号:30580217发布日期:2022-06-29 11:46阅读:147来源:国知局
一种索引数据存储方法、系统、设备及存储介质与流程

1.本发明涉及存储技术领域,特别是涉及一种索引数据存储方法、系统、设备及存储介质。


背景技术:

2.对象存储是面向对象/文件的海量云存储。对象存储没有文件系统那样的多层级的文件结构,而是只有一个“桶”的概念,即存储空间,或者称为bucket。“桶”是用于存储object,即用于存储对象的容器,是一种非常扁平化的存储方式。目前通常采用的是ceph作为后端的分布式对象存储。
3.ceph是一种具备卓越性能和高可靠性、高扩展性的统一、分布式存储系统。用户将object上传至对象存储桶内,需要保存object的一些元数据到桶索引上,方便查找。目前的方案中,桶的索引数据是以omap(object-map,对象图)的形式存储在osd(object storage device,对象存储设备)所在节点的rocksdb数据库中,因此,当单个bucket内存储的object数量达到一定数量时,进行bucket list或者ceph静默检查程序deep-scrub等操作时,将会极大的消耗osd所在节点的磁盘资源,从而导致osd出现异常。此外,底层的deep-scrub时间过长,也会导致集群出现慢请求slow request,从而导致性能抖动,影响存储系统的稳定性。
4.综上所述,如何有效地进行索引数据的存储,保障存储的可靠性,是目前本领域技术人员急需解决的技术问题。


技术实现要素:

5.本发明的目的是提供一种索引数据存储方法、系统、设备及存储介质,以有效地进行索引数据的存储,保障存储的可靠性。
6.为解决上述技术问题,本发明提供如下技术方案:
7.一种索引数据存储方法,应用于包括多个分片的对象存储系统中,所述索引数据存储方法包括:
8.接收上传的对象;
9.确定出对应于所述对象的分片;
10.将所述对象的索引数据保存在确定出的所述分片中。
11.优选的,所述确定出对应于所述对象的分片,包括:
12.计算所述对象的对象名的hash值;
13.将所述hash值和2
n-1进行与操作,将分片编号和所述与操作所得到的数值一致的分片,作为确定出的对应于所述对象的分片;
14.其中,n为正整数,且2n=m,m表示的是所述对象存储系统中当前的分片数量。
15.优选的,还包括:
16.当所述对象存储系统中的任意分片存储的索引数据的数量达到预设的数量阈值
时,进行所述对象存储系统的分片扩容以增加所述对象存储系统中的分片数量。
17.优选的,进行所述对象存储系统的分片扩容,包括:
18.将所述对象存储系统中的分片数量增加一倍,并按照预设的迁移规则进行扩容前的各个分片中的索引数据的迁移;
19.其中,所述迁移规则包括:
20.针对扩容前的任一分片中存储的任一索引数据,判断该索引数据对应的对象的对象名的hash值的第p+1位是否为0;
21.如果是,则将该索引数据保留在该索引数据当前所在的分片中;
22.如果否,则将该索引数据迁移到对应于该索引数据的目标分片中,且对应于该索引数据的目标分片的编号=该索引数据当前所在的分片编号+k;
23.其中,所述对象存储系统中的分片数量在扩容前为k,且k=2
p
,进行分片的扩容之后,所述对象存储系统中的分片数量为2k。
24.优选的,通过循环遍历的方式进行扩容前的各个分片中的索引数据的迁移,且在进行任一分片中的索引数据的迁移时,对该分片加读写锁。
25.优选的,还包括:
26.当在进行分片的扩容的过程中,接收到写桶索引操作时,根据所述写桶索引操作所指定的对象,确定出对应于所述对象的分片;
27.判断确定出的所述分片是否为扩容之前的源分片;
28.如果不是源分片,则确定出的所述分片为扩容之后的目标分片,并对所述目标分片进行写操作;
29.如果是源分片,则判断所述源分片是否加读写锁;
30.如果否,则对所述源分片进行写操作;
31.如果是,则对缓存对象进行写操作,并在扩容过程结束之后基于所述缓存对象进行所述源分片的写操作。
32.优选的,还包括:
33.当在进行分片的扩容的过程中,接收到读桶索引操作时,根据所述写桶索引操作所指定的对象,确定出对应于所述对象的分片;
34.判断确定出的所述分片是否为扩容之前的源分片;
35.如果不是源分片,则确定出的所述分片为扩容之后的目标分片,并判断所述目标分片中是否存在待读取的索引数据;
36.如果所述目标分片中存在待读取的索引数据,则进行读操作;
37.如果所述目标分片中不存在待读取的索引数据,则判断所述目标分片所对应的源分片是否加读写锁;
38.如果所述目标分片所对应的源分片未加读写锁,则返回错误提示;
39.如果所述目标分片所对应的源分片加读写锁,则判断所述目标分片所对应的源分片中是否存在待读取的索引数据,如果存在则进行读操作,否则返回错误提示;
40.如果是源分片,则判断所述源分片中以及缓存对象中是否至少一处存在待读取的索引数据;如果是,则进行读操作,否则返回错误提示。
41.一种对象存储系统,所述对象存储系统包括多个分片,所述对象存储系统中包括:
42.对象接收模块,用于接收上传的对象;
43.分片确定模块,用于确定出对应于所述对象的分片;
44.保存模块,用于将所述对象的索引数据保存在确定出的所述分片中。
45.一种对象存储设备,包括:
46.存储器,用于存储计算机程序;
47.处理器,用于执行所述计算机程序以实现如上述任一项所述的索引数据存储方法的步骤。
48.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述的索引数据存储方法的步骤。
49.应用本发明实施例所提供的技术方案,对象存储系统中设置了多个分片,而在接收上传的对象之后,本技术不是如传统方案中将索引数据保存在osd节点中,而是会确定出对应于对象的分片,从而将对象的索引数据保存在确定出的分片中,也就是说,本技术是利用多个分片进行索引数据的保存,即分布式地保存,因此不会出现传统方案中极大消耗osd所在节点的磁盘资源的情况,有利于保障对象存储系统的稳定性。
附图说明
50.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
51.图1为本发明中一种索引数据存储方法的实施流程图;
52.图2为本发明一种具体实施方式中在进行分片的扩容的过程中接收到写桶索引操作的实施流程图;
53.图3为本发明一种具体实施方式中在进行分片的扩容的过程中接收到读桶索引操作的实施流程图;
54.图4为本发明中一种索引数据存储系统的结构示意图。
具体实施方式
55.本发明的核心是提供一种索引数据存储方法,不会出现传统方案中极大消耗osd所在节点的磁盘资源的情况,有利于保障对象存储系统的稳定性。
56.为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
57.请参考图1,图1为本发明中一种索引数据存储方法的实施流程图,该索引数据存储方法应用于包括多个分片的对象存储系统中,索引数据存储方法包括以下步骤:
58.步骤s101:接收上传的对象。
59.具体的,用户将对象,即object上传到对象存储系统的桶内,需要记录相关的元数据,包括object名字、object大小、修改时间、etag等信息,这些信息统一称为索引数据。
60.步骤s102:确定出对应于对象的分片。
61.由于本技术的方案利用多个分片进行索引数据的存储,因此,对于接收到的任一对象而言,需要确定出该对象对应的分片,即用来存储该对象的索引数据的分片。当然,对应于对象的具体的分片规则可以根据实际需要进行设定和调整,例如可以通过对象名的hash值取模操作来决定分片。
62.步骤s103:将对象的索引数据保存在确定出的分片中。
63.确定出对应于对象的分片之后,便可以将该对象的索引数据保存在确定出的分片中。在实际应用中,索引数据可以以key-value的形式存储在shard对象的omap内。此外,部分场合中,每个shard对象可以存储为多个副本,例如存储为3个副本,则相应的索引数据也存储了3个副本,从而保证元数据的可靠性。
64.在本发明的一种具体实施方式中,步骤s102可以具体包括:
65.计算对象的对象名的hash值;
66.将hash值和2
n-1进行与操作,将分片编号和与操作所得到的数值一致的分片,作为确定出的对应于对象的分片;
67.其中,n为正整数,且2n=m,m表示的是对象存储系统中当前的分片数量。
68.该种实施方式中,会计算出对象的对象名的hash值,例如一种场合中,n=4,即对象存储系统中当前的分片数量m=16,且计算出的对象的对象名的hash值为1111 11111 1111 1111 0011 1011 1101 0110。将该hash值与2
n-1进行与操作,也就是和0000 0000 0000 0000 0000 0000 0000 1111进与操作,得到的结果是0110,也就是说,该例子中,进行与操作之后得到的分片编号为6,确定出的对应于对象的分片为第6片shard,即后续会将该对象的索引数据保存到第6分片中。
69.并且可以看出,将对象名的hash值和2
n-1进行与操作,相当于是取对象名的hash值的后n位。
70.该种实施方式中,将对象存储系统中的分片数量m设置为2的n次幂,且通过与操作来确定出对应于对象的分片,相较于将对象名的hash值进行取模操作,会大幅提高分片效率。
71.在本发明的一种具体实施方式中,还可以包括:
72.当对象存储系统中的任意分片存储的索引数据的数量达到预设的数量阈值时,进行对象存储系统的分片扩容以增加对象存储系统中的分片数量。
73.本技术的方案中,利用多个分片进行索引数据的保存,即分布式地保存,因此不会出现传统方案中极大消耗osd所在节点的磁盘资源的情况,有利于保障对象存储系统的稳定性。
74.而随着上传的对象的增多,可能出现各个分片中保存的索引数据均较多的情况,对此,本技术的方案中还可以进行分片的扩容,从而使得各个分片中的索引数据不会过多。具体的,当检测到对象存储系统中的任意1个分片存储的索引数据的数量达到预设的数量阈值时,便可以进行对象存储系统的分片扩容。
75.进行分片扩容的具体方式可以有多种,只要满足进行了分片扩容之后的对象存储系统中的分片数量超过扩容之前即可,例如增加指定数量的分片。
76.在本发明的一种具体实施方式中,进行对象存储系统的分片扩容,可以具体包括:
77.将对象存储系统中的分片数量增加一倍,并按照预设的迁移规则进行扩容前的各个分片中的索引数据的迁移;
78.其中,迁移规则包括:
79.针对扩容前的任一分片中存储的任一索引数据,判断该索引数据对应的对象的对象名的hash值的第p+1位是否为0;
80.如果是,则将该索引数据保留在该索引数据当前所在的分片中;
81.如果否,则将该索引数据迁移到对应于该索引数据的目标分片中,且对应于该索引数据的目标分片的编号=该索引数据当前所在的分片编号+k;
82.其中,对象存储系统中的分片数量在扩容前为k,且k=2
p
,进行分片的扩容之后,对象存储系统中的分片数量为2k。
83.该种实施方式,有利于将索引数据快速的迁移。具体的,该种实施方式中,在分片之前,对象存储系统中的分片数量k设置为2的p次幂,分片扩容之后,分片数量增加一倍,因此分片扩容之后,对象存储系统中的分片数量为2k。
84.扩容之前的各个分片均为源分片,每个源分片均有相对应的目标分片,对应关系可以表示为:源分片的编号+k=对应于该源分片的目标分片的编号。
85.按照这样的方式进行分片扩容之后,对于任一分片中存储的任一索引数据,进行索引数据的迁移时,便无需通过映射操作来确定该索引数据的存放位置,即不需要通过步骤s102的操作来确定索引数据所需要迁移至的分片,而是直接根据该索引数据对应的对象的对象名的hash值的第p+1位的数值来判断,使得该种实施方式可以极大地缩短分片扩容的耗时。并且由于部分索引数据不需要迁移,因此也能够减少索引数据的迁移时间。
86.例如前述实施方式中,一个对象的对象名的hash值为1111 11111 1111 1111 0011 1011 1101 0110。在前述实施方式中,对象存储系统中的分片数量在扩容前为16=24,该对象的索引数据被存储在第6分片,进行了分片的扩容之后,分片数量从16变成了32=25。由于该索引数据第1位至第8位为:1101 0110,即第5位的数值为1,因此,该索引数据会被迁移到对应于该索引数据的目标分片中,该例子中,目标分片的编号为22=该索引数据当前所在的分片编号6+16。可以理解的是,对于第6分片中存储的每一个索引数据,都可以按照上述方式进行判断,来分别决定相应的索引数据是保留在第6分片,还是需要迁移至第22分片。
87.此外需要说明的是,在实际应用中,在进行任一分片中的任一索引数据的迁移时,可以按照上述实施方式判断对象名的hash值的第p+1位是否为0,从而决定是否需要迁移该索引数据,并且,在判断出需要迁移时,可以进一步地判断目标分片中是否已经存在该索引数据,这是因为在部分场合中,正在进行分片的索引数据的迁移过程中,用户在目标分片上进行了索引数据的写操作,因此,当判断出目标分片中已经存在该索引数据时,直接将源分片上的该索引数据丢弃即可。
88.在本发明的一种具体实施方式中,通过循环遍历的方式进行扩容前的各个分片中的索引数据的迁移,且在进行任一分片中的索引数据的迁移时,对该分片加读写锁。
89.每个分片均需要进行索引数据的迁移,而该种实施方式中,是通过循环遍历的方式进行扩容前的各个分片中的索引数据的迁移,即依次迁移各个分片中的索引数据。并且,在进行任一分片中的索引数据的迁移时,只对该分片加读写锁,即该分片只可读不可写,其
他分片则不需要加读写锁,任一分片的索引数据迁移过程结束之后,可以释放该分片的读写锁,这样的方式可以有效地降低分片扩容对于用户业务造成的影响,因为用户的读写操作如果不涉及当前正在进行索引数据迁移的分片,则不受影响,如果涉及到当前正在进行索引数据迁移的分片,也仅是写操作受影响。
90.进一步的,在本发明的一种具体实施方式中,可参阅图2,为一种具体实施方式中在进行分片的扩容的过程中接收到写桶索引操作的实施流程图,可以包括:
91.步骤s201:当在进行分片的扩容的过程中,接收到写桶索引操作时,根据写桶索引操作所指定的对象,确定出对应于对象的分片;
92.步骤s202:判断确定出的分片是否为扩容之前的源分片;
93.如果不是源分片,则执行步骤s203:确定出的分片为扩容之后的目标分片,并对目标分片进行写操作;
94.如果是源分片,则执行步骤s204:判断源分片是否加读写锁;
95.如果否,则执行步骤s205:对源分片进行写操作;
96.如果是,则执行步骤s206:对缓存对象进行写操作,并在扩容过程结束之后基于缓存对象进行源分片的写操作。
97.如上文的描述,本技术的方案在进行分片的扩容的过程中,对用户业务的影响也较小。该种实施方式具体描述了在进行分片的扩容的过程中接收到写桶索引操作的情况,完全不会影响用户业务。
98.具体的,接收到写桶索引操作时,写桶索引操作会指定本次的写对象,从而可以确定出对应于对象的分片,即确定出存储该对象的索引数据的分片,例如前述例子中,通过计算对象的对象名的hash值,再和2
n-1进行与操作,便可以确定出对应于对象的分片,并且可以理解的是,此时的2n应当=扩容之后的对象存储系统中的分片数量2k。例如扩容之前的分片数量为16,则扩容之后的分片数量为32,便是将对象名的hash值和31进行与操作,从而确定出对应于本次写对象的分片。
99.确定出对应于对象的分片之后,便可以判断确定出的分片是否为扩容之前的源分片。本技术的源分片指的是本次扩容前的各个分片,相应的,本次扩容之后增加的各个分片为目标分片,例如扩容之前的分片数量为16,则这16个分片均为源分片,扩容之后的分片数量为32,则第17个分片至第32个分片均为本次扩容的目标分片。当然,后续例如又进行了一次扩容,分片数量变成了64,则这一次扩容时,扩容前的32个分片均为源分片,扩容后增加的32个分片均为目标分片。
100.可以按照分片编号判断确定出的分片是否为扩容之前的源分片,如果不是源分片,说明是目标分片,目标分片不会加读写锁,因此直接对目标分片进行写操作即可,可以看出,不会影响用户业务。
101.而如果是源分片,需要进一步地判断该源分片是否加读写锁,如果否,说明也可以直接对该源分片进行写操作,不会影响用户业务。如果加了读写锁,该种实施方式为了不影响用户业务,可以先对缓存对象进行写操作,缓存对象具体例如可以为log对象,当然其他实施方式中可以选择其他形式的缓存对象,能够暂时记录待写的索引数据即可。通过对缓存对象进行写操作,等到在扩容过程结束之后,便可以基于缓存对象进行源分片的写操作,即,将缓存对象中记录的各个索引数据写入相应的源分片中。
102.在本发明的一种具体实施方式中,可参阅图3,为一种具体实施方式中在进行分片的扩容的过程中接收到读桶索引操作的实施流程图,可以包括:
103.步骤s301:当在进行分片的扩容的过程中,接收到读桶索引操作时,根据写桶索引操作所指定的对象,确定出对应于对象的分片;
104.步骤s302:判断确定出的分片是否为扩容之前的源分片;
105.如果不是源分片,则执行步骤s303:确定出的分片为扩容之后的目标分片,并判断目标分片中是否存在待读取的索引数据;
106.如果目标分片中存在待读取的索引数据,则执行步骤s304:进行读操作;
107.如果目标分片中不存在待读取的索引数据,则执行步骤s305:判断目标分片所对应的源分片是否加读写锁;
108.如果目标分片所对应的源分片未加读写锁,则执行步骤s306:返回错误提示;
109.如果目标分片所对应的源分片加读写锁,则执行步骤s307:判断目标分片所对应的源分片中是否存在待读取的索引数据,如果存在则执行步骤s304:进行读操作,否则执行步骤s306:返回错误提示;
110.如果是源分片,则执行步骤s308:判断源分片中以及缓存对象中是否至少一处存在待读取的索引数据;如果是,则执行步骤s304:进行读操作,否则执行步骤s306:返回错误提示。
111.该种实施方式具体描述了在进行分片的扩容的过程中接收到读桶索引操作的情况,完全不会影响用户业务。
112.在进行分片的扩容的过程中,接收到读桶索引操作时,可以根据写桶索引操作所指定的对象,确定出对应于对象的分片,然后判断确定出的分片是否为扩容之前的源分片。
113.如果确定出的分片不是源分片,说明确定出的分片为扩容之后的目标分片,可以判断目标分片中是否存在待读取的索引数据。如果目标分片中存在待读取的索引数据,直接进行读操作即可,即对目标分片中的该索引数据进行读操作。而如果目标分片中不存在待读取的索引数据,说明该索引数据可能在源分片中,当前还未迁移到目标分片,因此,可以判断目标分片所对应的源分片是否加读写锁,如果未加读写锁,说明该索引数据也不在源分片中,可能是本次读桶索引操作自身有误或者索引数据丢失,因此可以返回错误提示。而如果源分片加读写锁,可以进一步地判断该源分片中是否存在待读取的索引数据,如果存在则进行读操作,即从该源分片中读取索引数据并反馈给用户,反之,如果该源分片加了读写锁,但不存在待读取的索引数据,便可以返回错误提示。
114.如果确定出的分片是源分片,说明该索引数据应当存储在该源分片或者缓存对象中,因此,判断源分片中以及缓存对象中是否至少一处存在待读取的索引数据,如果是,则进行读操作,即如果缓存对象中存在待读取的索引数据,则读取缓存对象中的该索引数据并反馈给用户,而如果是该源分片存在待读取的索引数据,则读取该源分片中的该索引数据并反馈给用户。如果二者都没有,说明可能是本次读桶索引操作自身有误或者索引数据丢失,因此可以返回错误提示。
115.应用本发明实施例所提供的技术方案,对象存储系统中设置了多个分片,而在接收上传的对象之后,本技术不是如传统方案中将索引数据保存在osd节点中,而是会确定出对应于对象的分片,从而将对象的索引数据保存在确定出的分片中,也就是说,本技术是利
用多个分片进行索引数据的保存,即分布式地保存,因此不会出现传统方案中极大消耗osd所在节点的磁盘资源的情况,有利于保障对象存储系统的稳定性。
116.相应于上面的方法实施例,本发明实施例还提供了一种对象存储系统,可与上文相互对应参照。
117.该对象存储系统包括多个分片,可参阅图4,对象存储系统中包括:
118.对象接收模块401,用于接收上传的对象;
119.分片确定模块402,用于确定出对应于对象的分片;
120.保存模块403,用于将对象的索引数据保存在确定出的分片中。
121.在本发明的一种具体实施方式中,分片确定模块402,具体用于:
122.计算对象的对象名的hash值;
123.将hash值和2
n-1进行与操作,将分片编号和与操作所得到的数值一致的分片,作为确定出的对应于对象的分片;
124.其中,n为正整数,且2n=m,m表示的是对象存储系统中当前的分片数量。
125.在本发明的一种具体实施方式中,还包括分片扩容模块,用于:
126.当对象存储系统中的任意分片存储的索引数据的数量达到预设的数量阈值时,进行对象存储系统的分片扩容以增加对象存储系统中的分片数量。
127.在本发明的一种具体实施方式中,分片扩容模块对象存储系统的分片扩容,具体包括:
128.将对象存储系统中的分片数量增加一倍,并按照预设的迁移规则进行扩容前的各个分片中的索引数据的迁移;
129.其中,迁移规则包括:
130.针对扩容前的任一分片中存储的任一索引数据,判断该索引数据对应的对象的对象名的hash值的第p+1位是否为0;
131.如果是,则将该索引数据保留在该索引数据当前所在的分片中;
132.如果否,则将该索引数据迁移到对应于该索引数据的目标分片中,且对应于该索引数据的目标分片的编号=该索引数据当前所在的分片编号+k;
133.其中,对象存储系统中的分片数量在扩容前为k,且k=2
p
,进行分片的扩容之后,对象存储系统中的分片数量为2k。
134.在本发明的一种具体实施方式中,分片扩容模块通过循环遍历的方式进行扩容前的各个分片中的索引数据的迁移,且在进行任一分片中的索引数据的迁移时,对该分片加读写锁。
135.在本发明的一种具体实施方式中,还包括写桶索引执行模块,用于:
136.当在进行分片的扩容的过程中,接收到写桶索引操作时,根据写桶索引操作所指定的对象,确定出对应于对象的分片;
137.判断确定出的分片是否为扩容之前的源分片;
138.如果不是源分片,则确定出的分片为扩容之后的目标分片,并对目标分片进行写操作;
139.如果是源分片,则判断源分片是否加读写锁;
140.如果否,则对源分片进行写操作;
141.如果是,则对缓存对象进行写操作,并在扩容过程结束之后基于缓存对象进行源分片的写操作。
142.在本发明的一种具体实施方式中,还包括读桶索引执行模块,用于:
143.当在进行分片的扩容的过程中,接收到读桶索引操作时,根据写桶索引操作所指定的对象,确定出对应于对象的分片;
144.判断确定出的分片是否为扩容之前的源分片;
145.如果不是源分片,则确定出的分片为扩容之后的目标分片,并判断目标分片中是否存在待读取的索引数据;
146.如果目标分片中存在待读取的索引数据,则进行读操作;
147.如果目标分片中不存在待读取的索引数据,则判断目标分片所对应的源分片是否加读写锁;
148.如果目标分片所对应的源分片未加读写锁,则返回错误提示;
149.如果目标分片所对应的源分片加读写锁,则判断目标分片所对应的源分片中是否存在待读取的索引数据,如果存在则进行读操作,否则返回错误提示;
150.如果是源分片,则判断源分片中以及缓存对象中是否至少一处存在待读取的索引数据;如果是,则进行读操作,否则返回错误提示。
151.相应于上面的方法和系统实施例,本发明实施例还提供了一种对象存储设备以及一种计算机可读存储介质,可与上文相互对应参照。
152.该对象存储设备包括:
153.存储器,用于存储计算机程序;
154.处理器,用于执行计算机程序以实现如上述任一实施例中的索引数据存储方法的步骤。
155.该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述任一实施例中的索引数据存储方法的步骤。这里所说的计算机可读存储介质包括随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质。
156.还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
157.专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
158.本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的技术方案及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1