一种基于区块链的多主服务集群访问方法、装置和电子设备转让专利

申请号 : CN202110169258.4

文献号 : CN112507033B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张建钢

申请人 : 北京全息智信科技有限公司

摘要 :

本发明提供了一种基于区块链的多主服务集群访问方法、装置和电子设备,基于无区块回滚的、交易在同一个节点只执行一次的区块链的多方共识和强一致性,将各个服务实例通过多活访问服务模块(智能合约)上链,并通过多活访问代理模块将写操作与其他操作分离,在做到连接/关闭、事务开始/结束、读操作通过网络直连高速执行的同时,将所有的写操作都通过区块链触发并自动同步和强一致以完全避免同步修改问题,从而支持实现超大规模的多主集群的访问。本发明的方法,不但可以用于实现超大规模的多主数据库集群,亦可以用于非数据库的超大规模多主集群。

权利要求 :

1.一种基于区块链的多主服务集群访问方法,其特征在于,包括:第一节点接收对服务实例的操作请求;

当所述第一节点确认所述操作请求为写操作请求时,将所述写操作请求发布至区块链网络;

所述区块链网络在所述区块生成或验证时,依次从区块包含的写操作请求序列中选取写操作请求,调用与当前写操作请求对应的第二节点在服务实例处理所述当前写操作请求;所述区块链网络为无回滚的区块链网络,且仅在单个网络节点执行一次交易;

当所述第一节点确认所述操作请求为读操作请求时,转发所述读操作请求至所述第二节点;其中,所述第二节点在所述服务实例处理所述读操作请求。

2.如权利要求1所述的方法,其特征在于,还包括:当所述第一节点确认所述操作请求为建立连接或终止连接的请求时,转发所述建立连接或终止连接的请求至所述第二节点;其中,所述第二节点在所述服务实例处理所述建立连接或终止连接的请求。

3.如权利要求1所述的方法,其特征在于,还包括:当所述第一节点确认所述操作请求为建立事务或终止事务的请求时,转发所述建立事务或终止事务的请求至所述第二节点;其中,所述第二节点在所述服务实例处理所述建立事务或终止事务的请求。

4.如权利要求1所述的方法,其特征在于,还包括:所述第一节点接收所述第二节点返回的写操作结果。

5.如权利要求1所述的方法,其特征在于,所述写操作请求包括:连接标识,所述连接标识记录了到服务实例的网络连接。

6.一种第一节点装置,其特征在于,包括:请求接收模块,用于接收对服务实例的操作请求;

第一请求处理模块,用于确认所述操作请求为写操作请求时,将所述写操作请求发布至区块链网络;所述区块链网络在所述区块生成或验证时,依次从区块包含的写操作请求序列中选取写操作请求,调用与当前写操作请求对应的第二节点在服务实例处理所述当前写操作请求;所述区块链网络为无回滚的区块链网络,且仅在单个网络节点执行一次交易;

第二请求处理模块,用于当确认所述操作请求为读操作请求时,转发所述读操作请求至所述第二节点;其中,所述第二节点在所述服务实例处理所述读操作请求。

7.如权利要求6所述的装置,其特征在于,所述第二请求处理模块,还用于当确认所述操作请求为建立连接或终止连接的请求时,转发所述建立连接或终止连接的请求至所述第二节点;其中,所述第二节点在所述服务实例处理所述建立连接或终止连接的请求。

8.如权利要求6所述的装置,其特征在于,所述第二请求处理模块,还用于当确认所述操作请求为建立事务或终止事务的请求时,转发所述建立事务或终止事务的请求至所述第二节点;其中,所述第二节点在所述服务实例处理所述建立事务或终止事务的请求。

9.如权利要求6所述的装置,其特征在于,还包括:结果接收模块,用于接收所述第二节点返回的写操作结果。

10.一种电子设备,包括存储器和处理器,所述存储器用于存储计算机指令,其特征在于,所述计算机指令被所述处理器执行以实现如权利要求1‑5的任一项所述的方法。

11.一种可读存储介质,其上存储有计算机指令,其特征在于,所述计算机指令被处理器执行时实现如权利要求1‑5的任一项所述的方法。

12.一种基于区块链的多主集群访问系统,包括:客户端和服务实例,其特征在于,还包括:第一代理端和第二代理端;

所述第一代理端用于接收所述客户端对所述服务实例的操作请求;当确认所述操作请求为写操作请求时,将所述写操作请求发布至区块链网络;所述区块链网络在所述区块生成或验证时,依次从区块包含的写操作请求序列中选取写操作请求,调用与当前写操作请求对应的第二节点在服务实例处理所述当前写操作请求;所述区块链网络为无回滚的区块链网络,且仅在单个网络节点执行一次交易;当确认所述操作请求为读操作请求时,转发所述读操作请求至所述第二代理端,由所述第二代理端在所述服务实例处理所述读操作请求。

13.如权利要求12所述的系统,其特征在于,所述第一代理端还用于当确认所述操作请求为建立连接或终止连接的请求时,转发所述建立连接或终止连接的请求至所述第二代理端,所述第二代理端在所述服务实例处理所述建立连接或终止连接请求。

14.如权利要求12所述的系统,其特征在于,所述第一代理端还用于当确认所述操作请求为建立事务或终止事务的请求时,转发所述建立事务或终止事务的请求至所述第二代理端,所述第二代理端在所述服务实例处理所述建立事务或终止事务的请求。

15.如权利要求12所述的系统,其特征在于,所述第一代理端还用于:接收所述第二代理端返回的写操作结果。

16.如权利要求12所述的系统,其特征在于,所述写操作请求包括:连接标识,所述连接标识记录了到所述服务实例的网络连接。

17.如权利要求12所述的系统,其特征在于,所述第一代理端位于所述客户端所在设备,和/或所述第二代理端位于所述服务实例所在服务端设备。

说明书 :

一种基于区块链的多主服务集群访问方法、装置和电子设备

技术领域

[0001] 本发明涉及超大规模多活的数据库集群领域,尤其是基于区块链实现应用级同步的、多活多主(multi‑master)的超大规模数据库集群这一技术领域。

背景技术

[0002] 现有的数据库集群,分为主从(master‑slave)方式或多主(multi‑master)方式。主从方式中,写操作在主服务器(master),读操作在主服务器或从服务器(slave)。从服务
器通过读取和同步主服务器的日志来实现二者数据的同步。多主方式中,数据库集群通过
相互同步集群内服务器的日志,同时通过同步锁等机制避免同时修改(或解决同步修改)的
问题。
[0003] 多主方式的数据库集群机制,与各个厂家各自的数据库内部的实现流程深度耦合,具有高度的复杂性并对带宽要求较高,所以通常在局域网或高速连接的环境部署小规
模的集群(典型的是两台)。而且,现有的数据库多主方案,在“数据”层面实现多主。在数据
库宕机或恢复时,难以知晓和对应应用层面的影响。
[0004] 数字时代的平台环境日趋庞大,越来越需要跨数据中心的、数量庞大的多主数据库集群部署,以满足平台对并发数据访问(读、写和事务)的需要。如何实现超大规模的、跨
数据中心(甚至广域的)多主数据库集群,是数字时代对数据库平台的巨大挑战。

发明内容

[0005] 为了解决上述技术问题中的至少一个,本发明提供了一种基于区块链的多主服务集群访问方法、装置、电子设备和可读存储介质。
[0006] 本发明的第一方面,提供了一种基于区块链的多主服务集群访问方法,包括:
[0007] 第一节点接收对服务实例的操作请求;
[0008] 当所述第一节点确认所述操作请求为写操作请求时,将所述写操作请求发布至区块链网络;
[0009] 所述区块链网络在所述区块生成或验证时,依次从区块包含的写操作请求序列中选取写操作请求,调用与当前写操作请求对应的第二节点在服务实例处理所述当前写操作
请求;所述区块链网络为无回滚的区块链网络,且仅在单个网络节点执行一次交易。
[0010] 具体地,调用第二节点在所述服务实例处理所述写操作请求序列,包括:
[0011] 按照区块链客户端对智能合约的调用机制,调用第二节点在所述服务实例处理所述写操作请求序列。
[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] 图 1示例本发明之前典型的数据库访问涉及的主要功能模块。
[0042] 图2示例本发明的数据库集群访问涉及的主要功能模块。
[0043] 图3示例本发明的数据库访问的流程。

具体实施方式

[0044] 下面结合附图和实施方式对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施方式仅用于解释相关内容,而非对本发明的限定。另外还需要说明的是,为
了便于描述,附图中仅示出了与本发明相关的部分。
[0045] 需要说明的是,在不冲突的情况下,本发明中的实施方式及实施方式中的特征可以相互组合。下面将参考附图并结合实施方式来详细说明。
[0046] 本发明基于区块链的多方共识和强一致的序列化机制,实现对应用层敏感的、超大规模的多主集群的访问,特别是对数据库集群的访问。
[0047] 本发明在应用程序端引入多活访问代理模块,在数据库端引入多活访问服务模块,二者通过两种方式同时互通:1)通过TCP/IP网络直连(多活访问代理模块作为TCP/IP客
户端、多活访问服务模块作为TCP/IP服务器);2)通过区块链网络连接(多活访问代理模块
作为区块链客户端、多活访问服务模块作为区块链智能合约)。多活访问代理模块,拦截应
用程序通过数据库驱动进行的数据库连接/关闭、事务开始/结束、读写等所有数据库CRUD
(创建、查询、修改、删除)操作,通过TCP/IP网络直连通道转发数据库连接/关闭、事务开始/
结束、读操作,通过区块链网络转发写操作到多活访问服务模块。多活访问服务模块通过数
据库驱动,建立与数据库的连接、并将从TCP/IP直连通道收到的数据库连接建立/关闭、事
务开始/结束、读操作,以及从区块链触发的写操作,经由同一个到数据库的连接(与应用程
序到数据库驱动的“连接”一一对应)完成。
[0048] 数据库驱动支持的所有数据库操作,都完全支持,每一个应用程序,无需重新编译即可适配,建立数据库连接时只需指定集群中的一个节点即可。
[0049] 本发明将每一个数据库实例通过上述的多活访问服务模块(智能合约)与区块链网络连接,形成一个超大规模的多主数据库集群,而且不限集群成员集群的部署位置(只要
满足区块链网络和数据库写操作的带宽要求即可)。因为所有的写操作都通过区块链触发、
集群各个成员节点的多活访问服务(智能合约)执行,所有应用程序对数据库集群的写操作
都通过在区块链生成区块和同步区块时自动序列化和强一致,从而完全避免的同步修改问
题。
[0050] 与通常的区块链场景不同,基于区块链的数据库集群的各个节点互相信任。所以,共识机制可以非常简单,无需区块回滚,比如采用各区块链节点(即数据库集群成员)按确
定的顺序生成区块、每一个节点都是前一个节点的替补的简单共识机制即可。
[0051] 一、问题的提出。
[0052] 如图1所示,在本发明之前的多活数据库集群部署中,应用程序(图块100.A或100.B)通常通过数据库厂家提供的数据库驱动模块(图块101.A和图块101.B)与数据集群
中的一个数据库实例(图块102.A和102.B)建立/终止连接、建立/终止事务和进行数据库读
写操作。本发明之前的多主数据库集群,通常通过复杂的数据库内部协议实现集群内数据
库实例间写操作的同步和冲突解决。囿于成员间协同的复杂性,多主的数据库集群通常只
有几个成员,难以形成规模集群。很多现实中的超大规模的数据访问场景,是以读为主但同
时要求写同步,以避读取免脏数据。这种小规模数据库集群,显然不能满足要求。
[0053] 二、基于区块链的多活架构。
[0054] 区块链在多方之间自动实现多方共识和强一致性,将每个数据库实例经由智能合约连接上链,通过将写操作通过区块链触发、智能合约执行的方式,可以自动实现写操作在
数据库集群所有实例间实现写操作同步。如图2所示,本发明在架构上引入三个模块多活访
问代理(图块202.A和202.B)、多活访问服务(图块204.A和204.B),以及无回滚的区块链网
络(图块205)。
[0055] 多活访问代理模块,是一个TCP/IP网络服务,它拦截应用程序(图块200.A和200.B)通过数据库驱动(图块201.A和201.B)进行的数据库连接建立/终止、事务开始/终
止、数据读写操作等,并根据用户的连接配置与本地(或附近)的多活访问服务模块建立两
个连接通道。一个通道是TCP/IP网络直连通道,另一个是经由区块链网络的通道。响应应用
程序通过数据库驱动的要求,多活访问代理模块通过TCP/IP网络直连通道转发数据库连
接/关闭、事务开始/结束、读操作,通过区块链网络转发写操作(以发送区块链交易的方式)
到多活访问服务模块。
[0056] 多活访问服务模块,既是一个数据库服务的网络代理,接收并响应多活访问代理模块通过TCP/IP网络直连的请求,又是一个区块链智能合约,接收并响应多活访问代理以
区块链交易的方式通过区块链网络在区块生成和验证时触发的写操作请求。在多活访问代
理模块应数据库驱动模块的要求建立与多活访问服务模块的网络连接时,多活访问服务模
块会建立与数据库实例(图块203.A和203.B)的网络连接,同时会生成一个唯一标识符,即
连接ID(Connection‑ID),以绑定多活访问代理模块与多活访问服务的网络连接、多活访问
服务与数据库实例的网络连接。所有经由区块链的写操作都附带该连接ID,在执行写操作
时多活访问服务模块会用该连接ID对应的多活访问服务与数据库实例的网络连接与数据
库实例互动。这样,应用程序通过数据库驱动发起的一个连接内的所有操作,无论是经由多
活访问代理与多活访问服务的直接网络连接,还是经由区块链网络,都通过同一个多活访
问服务与数据库实例的网络连接,以确保数据库读写和数据库事务操作都能准确无误。
[0057] 所有数据库实例支持的操作,都能完全支持。而且整个过程对应用程序和数据库实例透明,应用程序无需再编译即可适配(只要配置数据库服务的TCP/IP地址和端口为多
活访问代理的地址和端口即可)。
[0058] 三、区块链底层要求。
[0059] 传统意义上,区块链的区块可能因为无效或账本回滚或被作废,这不适合本发明的场景,因为写操作一旦在数据库中生效(事务提交),即不可回滚。本发明中组成数据库集
群的区块链必须是不回滚区块、交易在同一个节点只执行一次的区块链,这可以由简单的
共识机制实现,比如采用各区块链节点(即数据库集群成员)按确定的顺序生成区块、每一
个节点都是前一个节点的替补的简单共识机制即可。
[0060] 四、数据库访问流程。
[0061] 如图3所示,基于本发明的、典型的数据库访问流程如下:
[0062] 1)应用程序@A (图块300)请求数据库驱动@A(图块301)建立数据库连接;
[0063] 2)数据库驱动@A(图块301)创建服务连接到多活访问代理(图块302);
[0064] 3)多活访问代理建立与多活访问服务@B(图块304)的网络连接;
[0065] 4)多活访问服务@B(图块304)建立与数据库实例@B(图块305)的网络连接;
[0066] 5)多活访问服务@B生成并返回连接ID给多活访问代理;
[0067] 6)应用程序@A (图块300)请求数据库驱动@A(图块301)创建事务;
[0068] 7)数据库驱动@A(图块301)请求多活访问代理(图块302)创建事务;
[0069] 8)多活访问代理请求多活访问服务@B(图块304)创建事务;
[0070] 9)多活访问服务@B(图块304)请求数据库实例@B(图块305)创建事务;
[0071] 10)应用程序@A (图块300)请求数据库驱动@A(图块301)进行读操作;
[0072] 11)数据库驱动@A(图块301)请求多活访问代理(图块302)进行读操作;
[0073] 12)多活访问代理请求多活访问服务@B(图块304)进行读操作;
[0074] 13)多活访问服务@B(图块304)请求数据库实例@B(图块305)进行读操作;返回结果沿原路返回应用程序@A;
[0075] 14)应用程序@A (图块300)请求数据库驱动@A(图块301)进行写操作;
[0076] 15)数据库驱动@A(图块301)请求多活访问代理(图块302)进行写操作;
[0077] 16)多活访问代理发送区块链交易(包含写操作和连接ID)到区块链网络(图块303);
[0078] 17)区块链网络在区块生成和验证时调用多活访问服务去执行写操作;
[0079] 18)多活访问服务@B(图块304)请求数据库实例@B(图块305)进行写操作;返回结果直接通过TCP/IP网络直连通道返回多活访问代理,然后经由数据库驱动@A返回给应用程
序@A;
[0080] 19)应用程序@A (图块300)请求数据库驱动@A(图块301)结束事务;
[0081] 20)数据库驱动@A(图块301)请求多活访问代理(图块302)结束事务;
[0082] 21)多活访问代理请求多活访问服务@B(图块304)结束事务;
[0083] 22)多活访问服务@B(图块304)请求数据库实例@B(图块305)结束事务;
[0084] 23)应用程序@A (图块300)请求数据库驱动@A(图块301)关闭连接;
[0085] 24)数据库驱动@A(图块301)请求多活访问代理(图块302)关闭连接;
[0086] 25)多活访问代理请求多活访问服务@B(图块304)关闭连接;
[0087] 26)多活访问服务@B(图块304)请求数据库实例@B(图块305)关闭连接;
[0088] 本发明在确保非写操作直连高效的同时,通过基于无区块回滚的、交易在同一个节点只执行一次的区块链的多方共识和强一致性,做到大规模数据库集群节点间数据的完
全同步,真正支持实现大规模多主数据库集群。
[0089] 应当理解,这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒
介,例如软盘、CD‑ROM、硬盘驱动器或者其它任意机器可读的存储介质中的程序代码(即指
令)的形式,其中当程序被载入诸如计算机之类的机器,并被该机器执行时,该机器变成实
践本发明的设备。
[0090] 在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至
少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器
中存储的该程序代码中的指令,执行本发明的各种方法。
[0091] 以示例而非限制的方式,计算机可读介质包括计算机存储介质和通信介质。计算机可读介质包括计算机存储介质和通信介质。计算机存储介质存储诸如计算机可读指令、
数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调
制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传
递介质。以上的任一种的组合也包括在计算机可读介质的范围之内。
[0092] 本领域那些技术人员应当理解在本文所发明的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备
不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个
子模块。
[0093] 本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单
元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或
子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何
组合对本说明书(包括伴随的权利要求、摘要和附图)中发明的所有特征以及如此发明的任
何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权
利要求、摘要和附图)中发明的每个特征可以由提供相同、等同或相似目的的替代特征来代
替。
[0094] 此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的
范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一
都可以以任意的组合方式来使用。
[0095] 尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,
本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限
定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本
技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本
发明所做的发明是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。