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

一种分布式存储系统的元数据同步方法、系统及设备与流程

2023-01-14 15:31:20 来源:中国专利 TAG:


1.本技术涉及数据存储技术领域,尤其涉及一种分布式存储系统的元数据同步方法、系统及设备。


背景技术:

2.分布式存储系统通过网络将多台独立的服务器连接在一起组成分布式集群,并将集群内各台服务器的机械磁盘、固态硬盘等存储资源组成资源池进行统一管理和对外服务。分布式存储系统通常从存储资源池中分配出虚拟卷,iscsi lun、文件等存储对象提供给存储使用方,而一个虚拟卷或者文件的数据容量可能比单独一台服务器上的全部存储容量还要大。例如,一个虚拟卷64tb,而集群内单独一台服务器上的物理磁盘容量仅32tb。为了支持数据量超过单独一台服务器的存储容量的虚拟卷,分布式存储系统会将虚拟卷或者文件等存储对象再划分为更细粒度的数据分片,例如将一个64tb的卷划分成多个256mb、4mb或1m等固定的小尺寸数据分片,并将数据分片放置到集群内多台服务器中,这样一个存储对象就能利用多台服务器的存储资源。为了数据安全和提高读性能,分布式存储系统通常还会基于数据分片做数据冗余,一般用副本技术或者纠删码技术。以副本技术为例,假设副本数是3,分布式存储系统从统一资源池中分配出一个较大的存储对象,将这个存储对象划分成多个更细颗粒度的数据分片,并以一定的策略将每个数据分片的3个副本分配到集群内3台不同的服务器上。为了对卷或者文件这类数据对象进行正常的数据读写,就得知道所需的数据在该数据对象的哪个数据分片,以及相应的数据分片有哪些副本,这些副本分别在哪几台服务器上。这类定位数据的信息是分布式存储系统的重要元数据。另外,分布式存储系统的元数据信息还包括文件、目录属性、组成集群的数据节点信息等。
3.元数据对分布式存储系统至关重要,如果元数据丢失可能造成分布式存储系统的业务数据无法访问,对用户的业务造成重大影响。因此这类元数据通常也会采用集群的方式(多副本等)进行持久化存储。此外,分布式存储系统对元数据的一致性要求非常严格,不能容忍数据不一致,因此对元数据进行更新时需要确保集群中各个服务器保存的元数据是强一致的。
4.目前业界的分布式存储系统对元数据的存储大多采用多副本存储的机制,为了确保元数据多副本的一致性,常用的方式为基于paxos/raft分布式一致性算法实现副本同步,整个元数据的访问都采用分布式共识机制完成(例如直接使用etcd、zookeeper或cassandra托管全部的元数据,直接通过这样的共识读写元数据),在这个模式中,数据访问都需要经历共识过程,更新元数据时只能先写入主节点,并将元数据更新同步到大多数从节点后才能返回更新成功,读的时候也需要经过raft模块的leader提供数据。
5.直接基于分布式一致性协议实现的元数据同步机制存在的主要问题是,元数据的查询相对代价较大。共识协议集群通常仅提供key-value粒度的单个尺度对象查询,而每个对象查询都是相对独立的动作,都需要经过共识确认的过程,在进行范围查询或者较为复杂的包含数据语义的条件查询时,就需要以较大的代价获取较多的数据结果再进行二次拆
分。其中每个小对象的查询根据具体共识算法的不同都需要经历共识过程,耗费的时间较高。而在分布式存储系统中,元数据读请求的频率通常情况下也远大于写请求。因此元数据读请求的性能对分布式存储的性能至关重要。


技术实现要素:

6.本技术实施例的目的在于提供一种分布式存储系统的元数据同步方法、系统及设备,以解决目前元数据同步效率低,且元数据读请求性能低的问题。具体技术方案如下:
7.第一方面,提供了一种分布式存储系统的元数据同步方法,所述方法包括:
8.通过共识协议集群确定元数据服务主节点和元数据服务从节点;
9.在发生元数据变更时,利用所述元数据服务主节点将元数据变更操作封装成变更操作日志;
10.将所述变更操作日志按序写入所述共识协议集群的segment;
11.在写入成功后,将所述变更操作日志及其对应的元数据更新到元数据主节点的本地存储引擎中;
12.当所述共识协议集群中有新的segment被创建或间隔预设时长时,按照预设同步规则将所述变更操作日志及其对应的元数据同步到所述元数据服务从节点的本地存储引擎中。
13.可选地,所述通过共识协议集群确定元数据服务主节点和元数据服务从节点,包括:
14.在共识协议集群的同一个目录中为每个元数据服务节点创建一个node,并按照创建时间排序;
15.将排在首位的node对应的元数据服务节点确定为元数据服务主节点,其他的则确定为元数据服务从节点。
16.可选地,所述方法还包括:
17.当所述元数据服务主节点发生故障或网络分区时,删除代表所述元数据服务主节点的node;
18.将当前排在首位的node对应的元数据服务节点确定为新的元数据服务主节点。
19.可选地,所述预设同步规则为:
20.在元数据服务从节点的本地存储引擎中获取最新的变更操作日志序号;
21.从共识协议集群中拉去所有的segment信息;
22.根据所述segment内部第一个变更操作日志的序号将所有的segment进行排序;
23.找到第一个不小于所述最新的变更操作日志序号的segment;
24.判断该segment是否是最后一个,且该segment的第一个日志的序号大于所述最新的变更操作日志序号;
25.若是,则将该segment的上一个segment作为目标segment;
26.若否,则将该segment作为目标segment;
27.从目标segment开始,同步所有segment的变更操作日志。
28.可选地,在按照预设同步规则将所述变更操作日志及其对应的元数据同步到所述元数据服务从节点的本地存储引擎中后,所述方法还包括:
29.通过排在首位的node对应的元数据服务从节点对共识协议集群中已经同步到各元数据服务从节点的变更操作日志进行回收处理。
30.可选地,所述排在首位的node对应的元数据服务从节点会定时执行变更操作日志回收操作。
31.可选地,所述方法还包括:
32.当有新的元数据服务节点加入共识协议集群时,从其他元数据服务节点的本地存储引擎中同步全量元数据。
33.第二方面,本技术提供一种分布式存储系统的元数据同步系统,所述系统包括:
34.确定单元,用于通过共识协议集群确定元数据服务主节点和元数据服务从节点;
35.封装单元,用于在发生元数据变更时,利用所述元数据服务主节点将元数据变更操作封装成变更操作日志;
36.写入单元,用于将所述变更操作日志按序写入所述共识协议集群的segment;
37.更新单元,用于在写入成功后,将所述变更操作日志及其对应的元数据更新到元数据主节点的本地存储引擎中;
38.同步单元,用于当所述共识协议集群中有新的segment被创建或间隔预设时长时,按照预设同步规则将所述变更操作日志及其对应的元数据同步到所述元数据服务从节点的本地存储引擎中。
39.第三方面,本技术提供一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
40.存储器,用于存放计算机程序;
41.处理器,用于执行存储器上所存放的程序时,实现第一方面任一所述的方法步骤。
42.第四方面,本技术提供一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现第一方面任一所述的方法步骤。
43.第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的分布式存储系统的元数据同步方法。
44.本技术实施例有益效果:
45.本技术实施例提供了一种分布式存储系统的元数据同步方法、系统及设备,本技术通过共识协议集群确定元数据服务主节点和元数据服务从节点;在发生元数据变更时,利用元数据服务主节点将元数据变更操作封装成变更操作日志;将变更操作日志按序写入共识协议集群的segment;在写入成功后,将变更操作日志及其对应的元数据更新到元数据主节点的本地存储引擎中;当共识协议集群中有新的segment被创建或间隔预设时长时,按照预设同步规则将变更操作日志及其对应的元数据同步到元数据服务从节点的本地存储引擎中。本技术并不把元数据直接存储在共识协议集群中,仅借助共识协议集群进行主节点选举以及同步元数据变更操作日志,元数据最终存储在本地存储引擎。元数据服务可以直接从本地存储引擎读取元数据,不需要经过网络调用和共识过程,降低了延时,并且通过每个服务节点内的本地存储引擎处理本地元数据,不需要考虑其他节点的数据状态,可以按需采用多种缓存机制与数据组织方式进一步提高性能。另外借助共识协议集群内部已有机制保证元数据强一致。不必把所有元数据加载到内存中,降低了系统资源消耗,让系统可以处理更大量的元数据。
46.当然,实施本技术的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
47.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
48.图1为本技术实施例提供的一种分布式存储系统的元数据同步方法的流程图;
49.图2为本技术实施例的元数据服务集群的结构示意图;
50.图3为本技术实施例的主节点选举流程示意图;
51.图4为本技术实施例的元数据服务从节点同步的流程示意图;
52.图5为本技术实施例的元数据全量同步的流程示意图;
53.图6为本技术实施例提供的一种分布式存储系统的元数据同步系统的结构示意图;
54.图7为本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
55.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
56.本技术实施例提供了一种分布式存储系统的元数据同步方法,下面将结合具体实施方式,对本技术实施例提供的一种分布式存储系统的元数据同步方法进行详细的说明,如图1所示,具体步骤如下:
57.步骤s101:通过共识协议集群确定元数据服务主节点和元数据服务从节点。
58.在该步骤中,共识协议集群可以是zookeeper,etcd等。
59.如图2所示,元数据服务主节点的数量只有1个,元数据服务从节点的数量可以有若干个,共识协议集群、元数据服务主节点和元数据服务从节点共同组成分布式存储系统的元数据服务集群。每个元数据服务节点内部都设置有本地存储引擎,例如mysql,leveldb等,元数据存储在元数据服务节点的本地存储引擎中。并借助共识协议集群进行元数据变更操作日志同步。这些本地存储引擎对数据的读取和条件查询性能通常情况下都远高于一个基于共识的集群。
60.在本技术实施例中,共识协议集群承担两个功能,一个是基于共识算法为元数据服务集群提供选举服务,确定唯一的元数据服务主节点与若干元数据服务从节点;另一个是通过共识协议集群保存元数据的变更操作日志。具体地以key-value形式进行保存。
61.元数据的读写请求都仅能由元数据服务主节点完成。每次元数据变化时,元数据服务主节点会先向共识协议集群写入变更操作日志,确认写入成功之后才会在本地存储引擎更新。读取时,因为本地存储引擎已经具备了完整的元数据。可以直接跳过共识协议过程,从本地存储引擎中读取元数据。和已有的直接使用共识协议集群存储与管理元数据的
方案相比,本技术实施例并不把元数据存储在共识协议集群中,仅借助共识协议集群进行主节点选举以及同步元数据变更操作日志,元数据最终存在本地存储引擎。元数据服务可以从本地存储引擎读取元数据,不需要经过网络调用和共识过程,降低了延时,同时每个节点的本地存储引擎处理本地元数据时不需要考虑其他节点的数据状态,可以按需采用多种缓存机制与数据组织方式,进一步提高了读性能。
62.可选地,所述通过共识协议集群确定元数据服务主节点和元数据服务从节点,包括:
63.在共识协议集群的同一个目录中为每个元数据服务节点创建一个node,并按照创建时间排序;
64.将排在首位的node对应的元数据服务节点确定为元数据服务主节点,其他的则确定为元数据服务从节点。
65.可选地,所述方法还包括:
66.当所述元数据服务主节点发生故障或网络分区时,删除代表所述元数据服务主节点的node;
67.其他元数据服务从节点也会收到消息通知,检查node列表是否排在首位,将当前排在首位的node对应的元数据服务节点确定为新的元数据服务主节点。元数据服务主节点发生网络分区后,由于无法和共识协议集群正常连接,它会丢失主节点身份,因此能避免网络分区时出现两个元数据服务主节点。
68.在另一个实施例中,当元数据服务从节点发生故障或者网络分区后,共识协议集群上代表该节点的node就会自动删除,其他元数据服务节点也会收到消息通知,但是对其他元数据服务节点没有明显影响。
69.另外,即使元数据服务主节点或元数据服务从节点未发生故障、网络分区,每个元数据服务节点也会一直监听共识协议集群中的目录,每当这个目录中的node发生变化,元数据服务都会收到共识协议集群的通知,然后检查代表自己的node是否排在首位,如果是的话就升级为主节点并对外提供服务,否则就作为从节点继续同步主节点的元数据变更。
70.如图3所示,给出了一个具体的主节点选举流程,步骤如下:
71.步骤s301:节点启动:
72.步骤s302:在共识协议集群创建一个node;
73.步骤s303:判断node序号是否为0,若是,则执行步骤s304,若否,则执行步骤s305:
74.步骤s304:成为元数据服务主节点;
75.步骤s305:成为元数据服务从节点;
76.步骤s306:收到共识协议集群发送的成员变更通知;
77.步骤s307:判断自身的node序号是否仍为0,若是返回步骤s304,若否,则返回步骤s305。
78.步骤s102:在发生元数据变更时,利用所述元数据服务主节点将元数据变更操作封装成变更操作日志。
79.元数据服务主节点是对外提供元数据变更的接口,元数据变更的操作只会从元数据服务主节点发起,元数据服务主节点在本地维护两个整数值commit_op_seq和replay_op_seq,元数据服务从节点在本地维护整数值replay_op_seq。commit_op_seq代表元数据
服务主节点已经存储到共识协议集群中的最新变更操作日志序号,replay_op_seq代表各个元数据服务从节点已经同步应用到本地存储的最新的变更操作日志序号。元数据服务主节点启动时,从主节点的本地存储引擎获得本地已同步的最新日志的序号replay_op_seq,并将成功写入共识协议集群的最新日志序号commit_op_seq设为replay_op_seq。在开始对外启动服务之前,元数据服务主节点从共识协议集群同步所有最新变更操作日志,并更新replay_op_seq以及commit_op_seq。
80.步骤s103:将所述变更操作日志按序写入所述共识协议集群的segment。
81.元数据变更操作日志都存储在共识协议集群的一个固定的目录中,称为数据目录。数据目录中的变更操作日志按segment进行切分,每个segment最多存储若干条日志,每个变更操作日志会有一个序号,按照写入顺序排列。
82.步骤s104:在写入成功后,将所述变更操作日志及其对应的元数据更新到元数据主节点的本地存储引擎中。
83.步骤s105:当所述共识协议集群中有新的segment被创建或间隔预设时长时,按照预设同步规则将所述变更操作日志及其对应的元数据同步到所述元数据服务从节点的本地存储引擎中。
84.元数据服务从节点启动时,从自己的本地存储引擎中获得本地已同步的最新日志的序号replay_op_seq,当共识协议集群中有新的segment被创建时,元数据服务从节点会收到通知并从共识协议集群同步上一个segment。元数据服务从节点还可以每隔几秒定时从共识协议集群中同步变更操作日志。
85.在本技术实施例中,元数据同步以segment作为基本单位,当一个segment未写满时,就算有新的元数据变更,元数据服务从节点也不会马上同步这些变更。当一个新的segment创建时,元数据服务从节点会收到事件通知,然后从共识协议集群中同步上一个segment的元数据变更操作日志,并据此更新本地元数据。以segment的粒度进行元数据同步是为了避免广播风暴,因为如果每条变更操作日志都同步一次,就意味着每次更新都会触发元数据服务集群中每个服务节点的读和事件通知,对集群性能造成较大影响。
86.可选地,所述预设同步规则为:
87.在元数据服务从节点的本地存储引擎中获取最新的变更操作日志序号;
88.从共识协议集群中拉去所有的segment信息;
89.根据所述segment内部第一个变更操作日志的序号将所有的segment进行排序;
90.找到第一个不小于所述最新的变更操作日志序号的segment;
91.判断该segment是否是最后一个,且该segment的第一个日志的序号大于所述最新的变更操作日志序号;
92.若是,则将该segment的上一个segment作为目标segment;
93.若否,则将该segment作为目标segment;
94.从目标segment开始,同步所有segment的变更操作日志。
95.如图4所示,给出了元数据服务从节点同步的具体实施过程,包括如下步骤:
96.步骤s401:元数据服务从节点启动后从本地存储引擎中获得本地已应用的最新日志的序号replay_op_seq;
97.步骤s402:判断是否有新的segment创建或已间隔10秒,若是,则执行步骤s403,若
否,则重复执行步骤s402;
98.步骤s403:从共识协议集群中拉取所有的segment信息;
99.步骤s404:根据segment内部第一个日志的序号将所有的segment排序;
100.步骤s405:找出第一个不小于replay_op_seq的segment,不存在时返回最后一个segment;
101.步骤s406:判断该segment是否是最后一个,且该segment的第一个日志的序号大于replay_op_seq,若是,则执行步骤s407,若否,则执行步骤s408;
102.步骤s407:将该segment的上一个segment作为目标segment;
103.步骤s408:将该segment作为目标segment;
104.步骤s409:从目标segment开始,同步所有segment的变更操作日志。
105.由于共识协议集群会把元数据变更操作日志都加载到内存中,而内存空间是有限的,不能满足大量元数据的存储需求,因此需要限制共识协议集群中的元数据变更日志的规模。引入了共识协议集群元数据回收机制,当共识协议集群中的元数据变更已经被各个元数据服务节点应用到本地之后,会被删除。其中元数据服务集群中node序号最小的元数据服务从节点负责清除共识协议集群中无用的变更操作日志。在按照预设同步规则将所述变更操作日志及其对应的元数据同步到所述元数据服务从节点的本地存储引擎中后,所述方法还包括:
106.通过排在首位的node对应的元数据服务从节点对共识协议集群中已经同步到各元数据服务从节点的变更操作日志进行回收处理。
107.在本技术实施例中,每个元数据服务节点都会监控共识协议集群中的同一个数据目录,当segment数量有变化时就会收到通知。当元数据服务主节点在共识协议集群数据目录创建新segment时,其他元数据服务从节点会收到共识协议集群的通知。排在首位的node对应的元数据服务从节点会执行回收元数据日志的操作,会把共识协议集群中已经同步到本地的segment前面的segment都删除。
108.可选地,元数据服务从节点还启动有定时任务,所述排在首位的node对应的元数据服务从节点会定时执行变更操作日志回收操作。
109.由于共识协议集群中的变更操作日志会被清除,新元数据服务节点加入元数据服务集群后可能无法从共识协议集群同步到完整的元数据变更操作日志,只能复制已有的元数据服务节点的数据,因此本技术实施例引入了元数据全量同步机制。具体来说,在从共识协议集群同步变更操作日志的过程中,如果发现共识协议集群中序号最小的变更操作日志都比本地存储引擎的replay_op_seq 1要大,那便无法从共识协议集群中同步到完整全量的变更操作日志及元数据,这时需要采用全量同步的方式从其他元数据服务节点中同步元数据及变更操作日志。另外,如果从共识协议集群同步变更操作日志时发现个别变更操作日志数据损坏,无法正常解析成protobuf或者无法正常写入本地存储引擎,也需要全量同步。新加入集群的元数据服务节点会先从其他元数据服务节点全量同步元数据,再进行增量数据变更。可选地,所述方法还包括:
110.当有新的元数据服务节点加入共识协议集群时,从其他元数据服务节点的本地存储引擎中同步全量元数据。
111.如图5所示,给出了元数据全量同步的具体流程,步骤如下:
112.步骤s501:从共识协议集群中获得所有元数据服务节点的地址;
113.步骤s502:请求其中一个未处理过的元数据服务节点的元数据版本号version;
114.步骤s503:判断version是否和本地已知的最新版本号相等;若相等则执行步骤s504;若不相等,则返回步骤s502;
115.步骤s504:创建两个临时目录sync和old;
116.步骤s505:从步骤s502选定的元数据服务节点中拉取全量数据放到本地的sync目录;
117.步骤s506:将本地的元数据目录改名为backup,将sync目录改为本地元数据目录的名称;
118.步骤s507:重启初始化本地元数据服务。
119.第二方面,基于相同的技术构思,本技术提供一种分布式存储系统的元数据同步系统,如图6所示,所述系统包括:
120.确定单元601,用于通过共识协议集群确定元数据服务主节点和元数据服务从节点;
121.封装单元602,用于在发生元数据变更时,利用所述元数据服务主节点将元数据变更操作封装成变更操作日志;
122.写入单元603,用于将所述变更操作日志按序写入所述共识协议集群的segment;
123.更新单元604,用于在写入成功后,将所述变更操作日志及其对应的元数据更新到元数据主节点的本地存储引擎中;
124.同步单元605,用于当所述共识协议集群中有新的segment被创建或间隔预设时长时,按照预设同步规则将所述变更操作日志及其对应的元数据同步到所述元数据服务从节点的本地存储引擎中。
125.基于相同的技术构思,本发明实施例还提供了一种电子设备,如图7所示,包括处理器701、通信接口702、存储器703和通信总线704,其中,处理器701,通信接口702,存储器703通过通信总线704完成相互间的通信,
126.存储器703,用于存放计算机程序;
127.处理器701,用于执行存储器703上所存放的程序时,实现分布式存储系统的元数据同步方法的步骤。
128.上述电子设备提到的通信总线可以是外设部件互连标准(peripheral component interconnect,pci)总线或扩展工业标准结构(extended industry standardarchitecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
129.通信接口用于上述电子设备与其他设备之间的通信。
130.存储器可以包括随机存取存储器(random access memory,ram),也可以包括非易失性存储器(non-volatile memory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
131.上述的处理器可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processing,dsp)、专用集成电路(application specific integrated circuit,asic)、现
场可编程门阵列(field-programmable gatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
132.在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一分布式存储系统的元数据同步方法的步骤。
133.在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一分布式存储系统的元数据同步方法。
134.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solid state disk(ssd))等。
135.需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
136.以上所述仅是本技术的具体实施方式,使本领域技术人员能够理解或实现本技术。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献