一种执行读写分离的方法、装置及系统与流程

文档序号:11864756阅读:206来源:国知局
一种执行读写分离的方法、装置及系统与流程

本发明涉及计算机技术领域,特别涉及一种执行读写分离的方法、装置及系统。



背景技术:

随着业务不断扩展,数据库读写操作不断增加,数据库的压力也越来越大。

目前,当待执行的数据库读写操作较多时,可以将读写操作分配至多个主数据库中以分别进行。

但是,当主数据库执行写操作时,会出现数据库死锁现象,影响读操作的运行。因此,现有的读写操作执行方式会降低读写操作的效率。



技术实现要素:

本发明提供了一种执行读写分离的方法、装置及系统,能够提高读写操作的效率。

为了达到上述目的,本发明是通过如下技术方案实现的:

第一方面,本发明提供了一种执行读写分离的方法,设置具有读写分离类型的API(Application Programming Interface,应用程序编程接口)的代理中间件,且通过所述代理中间件分别连接至少两个主数据库,还包括:

确定所述至少两个主数据库中的执行写操作的第一主数据库和至少一个执行读操作的第二主数据库;

利用所述代理中间件的API,获取读写操作请求,并确定所述读写操作请求的请求类型;

在所述请求类型为写操作时,将所述读写操作请求发送至所述第一主数据库,在所述请求类型为读操作时,根据预先设置的负载均衡策略,将所述读写操作请求发送至任一所述第二主数据库。

进一步地,该执行读写分离的方法还包括:建立所述代理中间件与所述第一主数据库的故障检测链接通道;根据预先设置的心跳机制,利用所述故障检测链接通道,周期性的连接所述第一主数据库执行心跳机制函数;在连续至少一次获取到的所述第一主数据库的返回结果均为空时,确定所述第一主数据库发生故障;确定至少一个所述第二主数据库中的任一主数据库为下一个执行写操作的第一主数据库。

进一步地,该执行读写分离的方法还包括:在连续至少一次获取到的所述发生故障的第一主数据库的返回结果均不为空时,确定该第一主数据库恢复正常,以及新增其为执行读操作的第二主数据库。

进一步地,该执行读写分离的方法还包括:建立包括所述至少两个主数据库的数据库列表;

所述确定所述至少两个主数据库中的执行写操作的第一主数据库和至少一个执行读操作的第二主数据库,包括:首次默认选择所述数据库列表中的首个主数据库为执行写操作的第一主数据库,其他至少一个主数据库为执行读操作的第二主数据库;

所述至少一个所述第二主数据库中的任一主数据库,包括:所述数据库列表中的所述发生故障的第一主数据库之后的主数据库。

进一步地,所述读写操作请求包括:SQL(Structured Query Language,结构化查询语言)语句;

所述确定所述读写操作请求的请求类型,包括:对所述SQL语句进行关键字解析,在解析出所述SQL语句的第一个关键字是insert(插入)、update(更新)、delete(删除)中的任意一种,或所述SQL语句的最后一个关键字是for update(更新)时,确定所述SQL语句的请求类型为写请求,在解析出所述SQL语句的第一个关键字是select(选择)时,确定所述SQL语句的请求类型为读请求。

第二方面,本发明提供了一种执行读写分离的装置,包括:

设置单元,用于设置具有读写分离类型的API的代理中间件,且通过所述代理中间件分别连接至少两个主数据库;

确定单元,用于确定所述至少两个主数据库中的执行写操作的第一主数据库和至少一个执行读操作的第二主数据库;

处理单元,用于利用所述代理中间件的API,获取读写操作请求,并确定所述读写操作请求的请求类型;

发送单元,用于在所述请求类型为写操作时,将所述读写操作请求发送至所述第一主数据库,在所述请求类型为读操作时,根据预先设置的负载均衡策略,将所述读写操作请求发送至任一所述第二主数据库。

进一步地,该执行读写分离的装置还包括:故障检测单元;

所述故障检测单元,用于建立所述代理中间件与所述第一主数据库的故障检测链接通道;根据预先设置的心跳机制,利用所述故障检测链接通道,周期性的连接所述第一主数据库执行心跳机制函数;在连续至少一次获取到的所述第一主数据库的返回结果均为空时,确定所述第一主数据库发生故障,并触发所述确定单元;

所述确定单元,还用于在接收到所述故障检测单元发来的触发信号时,确定至少一个所述第二主数据库中的任一主数据库为下一个执行写操作的第一主数据库。

进一步地,所述故障检测单元,还用于在连续至少一次获取到的所述发生故障的第一主数据库的返回结果均不为空时,确定该第一主数据库恢复正常,并触发所述确定单元;

所述确定单元,还用于在接收到所述故障检测单元发来的触发信号时,新增所述恢复正常的第一主数据库为执行读操作的第二主数据库。

进一步地,该执行读写分离的装置还包括:创建单元;

所述创建单元,用于建立包括所述至少两个主数据库的数据库列表;

所述确定单元,具体用于首次默认选择所述数据库列表中的首个主数据库为执行写操作的第一主数据库,其他至少一个主数据库为执行读操作的第二主数据库;在接收到所述故障检测单元发来的触发信号时,确定所述数据库列表中的所述发生故障的第一主数据库之后的主数据库为执行写操作的第二主数据库。

进一步地,所述读写操作请求包括:SQL语句;

所述处理单元,具体用于对所述SQL语句进行关键字解析,在解析出所述SQL语句的第一个关键字是insert、update、delete中的任意一种,或所述SQL语句的最后一个关键字是for update时,确定所述SQL语句的请求类型为写请求,在解析出所述SQL语句的第一个关键字是select时,确定所述SQL语句的请求类型为读请求。

第三方面,本发明提供了一种执行读写分离的系统,包括:至少两个主数据库,以及上述任一所述的执行读写分离的装置。

进一步地,所述第一主数据库,用于接收并执行所述执行读写分离的装置发来的读写操作请求;生成所述读写操作请求对应的二进制日志文件,并以广播的方式将所述二进制日志文件发送至每一个所述第二主数据库;

所述第二主数据库,用于接收并执行所述执行读写分离的装置发来的读写操作请求;接收并异步执行所述第一主数据库发来的所述二进制日志文件。

本发明提供了一种执行读写分离的方法、装置及系统,设置具有读写分离类型的API的代理中间件,且通过代理中间件分别连接至少两个主数据库;确定该至少两个主数据库中的执行写操作的第一主数据库和至少一个执行读操作的第二主数据库;利用代理中间件的API,获取读写操作请求并确定其请求类型;将请求类型为写操作的读写操作请求发送至第一主数据库,并根据负载均衡策略将请求类型为读操作的读写操作请求发送至任一第二主数据库。由于可以将写操作和读操作分开执行,故写操作不影响读操作的正常执行。因此,本发明能够能够提高读写操作的效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一实施例提供的一种执行读写分离的方法的流程图;

图2是本发明一实施例提供的另一种执行读写分离的方法的流程图;

图3是本发明一实施例提供的一种执行读写分离的装置的示意图;

图4是本发明一实施例提供的另一种执行读写分离的装置的示意图;

图5是本发明一实施例提供的一种执行读写分离的系统的示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,本发明实施例提供了一种执行读写分离的方法,可以包括以下步骤:

步骤101:设置具有读写分离类型的API的代理中间件,且通过所述代理中间件分别连接至少两个主数据库。

步骤102:确定所述至少两个主数据库中的执行写操作的第一主数据库和至少一个执行读操作的第二主数据库。

步骤103:利用所述代理中间件的API,获取读写操作请求,并确定所述读写操作请求的请求类型。

步骤104:在所述请求类型为写操作时,将所述读写操作请求发送至所述第一主数据库,在所述请求类型为读操作时,根据预先设置的负载均衡策略,将所述读写操作请求发送至任一所述第二主数据库。

本发明实施例提供了一种执行读写分离的方法,设置具有读写分离类型的API的代理中间件,且通过代理中间件分别连接至少两个主数据库;确定该至少两个主数据库中的执行写操作的第一主数据库和至少一个执行读操作的第二主数据库;利用代理中间件的API,获取读写操作请求并确定其请求类型;将请求类型为写操作的读写操作请求发送至第一主数据库,并根据负载均衡策略将请求类型为读操作的读写操作请求发送至任一第二主数据库。由于可以将写操作和读操作分开执行,故写操作不影响读操作的正常执行。因此,本发明能够能够提高读写操作的效率。

在本发明的一个实施例中,为了能够实现多主数据库集群的故障自动转移,以不影响读写操作的正常执行,所以,该方法可以进一步包括:

建立所述代理中间件与所述第一主数据库的故障检测链接通道;根据预先设置的心跳机制,利用所述故障检测链接通道,周期性的连接所述第一主数据库执行心跳机制函数;在连续至少一次获取到的所述第一主数据库的返回结果均为空时,确定所述第一主数据库发生故障;确定至少一个所述第二主数据库中的任一主数据库为下一个执行写操作的第一主数据库。

通过心跳机制,定期检测执行写操作的主数据库的工作状态,并在检测到该主数据库发生故障时,自动切换到其他主数据库节点,从而实现故障自动迁移。

在本发明的一个实施例中,为了能够使发生故障的主数据库恢复正常时得以利用,所以,该方法可以进一步包括:在连续至少一次获取到的所述发生故障的第一主数据库的返回结果均不为空时,确定该第一主数据库恢复正常,以及新增其为执行读操作的第二主数据库。

由于选择了一个第二主数据库作为执行写操作的主数据库,故执行读操作的主数据库的数量相对减少,故可以将发生故障但已恢复正常的主数据库作为执行读操作的第二主数据库。

在本发明的一个实施例中,为了说明一种数据库读写功能的分配方式,所以,该方法可以进一步包括:建立包括所述至少两个主数据库的数据库列表;

所述确定所述至少两个主数据库中的执行写操作的第一主数据库和至少一个执行读操作的第二主数据库,包括:首次默认选择所述数据库列表中的首个主数据库为执行写操作的第一主数据库,其他至少一个主数据库为执行读操作的第二主数据库;

所述至少一个所述第二主数据库中的任一主数据库,包括:所述数据库列表中的所述发生故障的第一主数据库之后的主数据库。

基于建立的数据库列表,可以在执行写操作的主数据库发生故障时,重新确定出一个主数据库继续执行写操作,以实现故障自动迁移。此外,故障自动转移可以依赖于该数据库列表而循环进行。

在本发明的一个实施例中,为了说明一种读写操作请求的请求类型确定方式,所以,所述读写操作请求包括:SQL语句;

所述确定所述读写操作请求的请求类型,包括:对所述SQL语句进行关键字解析,在解析出所述SQL语句的第一个关键字是insert、update、delete中的任意一种,或所述SQL语句的最后一个关键字是for update时,确定所述SQL语句的请求类型为写请求,在解析出所述SQL语句的第一个关键字是select时,确定所述SQL语句的请求类型为读请求。

根据确定的请求类型,可以将不同请求类型的SQL语句发送至不同的对应主数据库进行执行。通过将请求类型分为读请求和写请求,以实现数据库的读写分离。

如图2所示,本发明一个实施例提供了另一种执行读写分离的方法,该方法以基于数据库中间件的动态实现多主数据库的读写分离为例,具体包括以下步骤:

步骤201:建立包括10个主数据库的数据库列表。

举例来说,现有一个包括10个主数据库的数据库集群,且这10个主数据库可以分别标记为主数据库1、……、主数据库10。详细地,由于数据库集群的整体性能受限于性能最低的数据库,故数据库集群中的各数据库的性能可以保持一致。因此,在本实施例中,数据库集群中的这10个主数据库的性能可以相同。

当执行写操作的主数据库发生故障时,为便于故障自动迁移,可以预先建立一个包括上述10个主数据库的数据库列表,且建立的数据库列表中,各主数据库的排序方式可以无限定。比如,首个主数据库为主数据库1、……、末个主数据库为主数据库10。

当然,根据不同用户的实际需求,数据库集群中的各主数据库的性能可以存在差异,且建立的数据库列表中,可以根据性能高低进行排序。其中,可以将性能高的主数据库作为执行写操作的写节点。

步骤202:设置具有读写分离类型的API的代理中间件,且通过代理中间件分别连接数据库列表中的10个主数据库。

为实现读写分离,可以设置一个代理中间件,其该代理中间件中包括具有读写分离类型的API。此外,可以将代理中间件分别与每一个主数据库相连,以便于将可以将客户端发来的读写操作请求路由至对应的主数据库。

步骤203:确定数据库列表中的第一个主数据库:主数据库1为执行写操作的写节点,其他9个主数据库为执行读操作的读节点。

由于执行写操作时,数据库会处理死锁状态,且执行写操作的请求通常远少于执行读操作的请求,以及便于实现数据库集群间的数据同步,故可以确定一个写节点和多个读节点。

详细地,可以首次默认选择数据库列表中的首个主数据库,即主数据库1为执行写操作的写节点,其他主数据库,即主数据库2至主数据库10为执行读操作的读节点。

步骤204:利用代理中间件的API,获取每一个客户端发来的读写操作请求,确定每一个读写操作请求的请求类型。

在本发明一个实施例中,客户端发来的读写操作请求可以为SQL语句。

详细地,读写操作请求的请求类型确定方式可以如下所述:对SQL语句进行关键字解析,在解析出SQL语句的第一个关键字是insert、update、delete中的任意一种,或SQL语句的最后一个关键字是for update时,确定SQL语句的请求类型为写请求,在解析出SQL语句的第一个关键字是select时,确定SQL语句的请求类型为读请求。

详细地,insert、update、delete和for update均对应于事务性请求,select对应于非事务性请求。

步骤205:建立代理中间件与主数据库1的故障检测链接通道1。

由于仅存在一个写节点,且写节点易发生故障,故可以建立代理中间件与该写节点的故障检测链接通道,以实时监控写节点的工作状态。

步骤206:根据预先设置的心跳机制,通过建立的故障检测链接通道1,周期性的连接主数据库1执行心跳机制函数。

针对故障检测来说,可以预先设置心跳机制,并通过建立故障检测链接通道,周期性地连接写节点执行心跳机制函数。若写节点正常工作,其可以生成一个具有固定内容的返回结果,若发生故障,则返回结果为空。

步骤207:判断连续至少一次获取到的主数据库1的返回结果是否均为空,若是,确定主数据库1发生故障,并执行步骤209,否则,执行步骤208。

详细地,当连续至少一次,如连续3次获取到的返回结果为空时,可以确定写节点故障,否则,可以说明写节点处于正常工作状态。

步骤208:在请求类型为写操作时,将读写操作请求发送至当前的写节点,在请求类型为读操作时,根据预先设置的负载均衡策略,将读写操作请求发送至当前的任一读节点。

在判断出写节点处于正常工作状态时,可以将写操作路由至写节点,将读操作路由至读节点。由于读节点存在多个,故可以通过负载均衡策略,使各读节点上的读操作的个数相对保持一致,以使各读节点负载均衡。

此外,为了保持数据库集群之间的数据同步,写节点在完成执行写操作时,可以生成一个二进制日志文件,并通过广播的方式将二进制日志文件发送至每一个读节点。每一个读节点在接收到写节点发来的二进制日志文件时,可以异步执行该二进制日志文件对应的写操作,从而实现数据库间的数据同步。

当然,在本发明一个实施例中,由于并未对读节点进行故障检测,故可以在判断出读写操作请求的请求类型为读操作时,无论写节点是否发生故障,均直接将读操作路由至读节点。

通过将读操作和写操作分离,读操作可以在读节点上执行,写操作在写节点上执行时所引发的数据库死锁现象,不会对读操作产生影响。

步骤209:确定数据库列表中的主数据库1之后的主数据库2为新的执行写操作的写节点。

详细地,故障自动转移可以依赖于建立的数据库列表而循环进行。

在检测出当前的写节点,即主数据库1发生故障时,可以确定新的写节点。其中,可以将数据库列表中的主数据库1之后的主数据库2,设置为新的执行写操作的写节点。故主数据库2由读节点变更为写节点。

此外,由于主数据库2为新的写节点,故同样可以建立代理中间件与主数据库2的故障检测链接通道2,并通过该故障检测链接通道2以定期检测新的写节点,即主数据库2的工作状态。详细地,这一实现过程与上述步骤205至207相类似。

当然,基于同样的实现原理,当监测到新的写节点,即主数据库2发生故障时,可以将主数据库3确定为下一个写节点,依次类推,以使故障自动转移基于建立的数据库列表而循环进行。

步骤210:通过故障检测链接通道1,在连续至少一次获取到的主数据库1的返回结果均不为空时,确定主数据库1恢复正常,并新增其为执行读操作的读节点。

由于部分引发写节点故障的因素易消除,如系统不稳定所造成的故障问题,故在监测出主数据库1发生故障之后,可以在一定时间内通过故障检测链接通道1,对其进行继续监测。

因此,若主数据库1故障后短时间内恢复正常,即监测到连续至少一次获取到的主数据库1的返回结果均不为空时,可以确定主数据库1恢复正常,并新增其为执行读操作的读节点。

在本发明一个实施例中,在主数据库1故障后恢复正常,并作为读节点时,可以断开代理中间件与主数据库1之间建立的该故障检测链接通道1,以释放链接资源。

在本实施例中,根据各读写操作请求的请求类型,可以将读操作路由至读节点,将写操作路由至写节点,以实现读写分离,从而有效减轻数据库压力和减轻IO压力。此外,基于多主数据库的读写分离,可以定期监测执行写操作的主数据库的工作状态,并在其发生故障时,确定新的执行写操作的主数据库,以实现故障自动迁移,无需手动切换数据库,从而不影响数据库集群的正常工作,增加数据库的高可用性和易用性。通过读写分离和故障自动迁移,为数据库集群的高可用部署提供了一种可行性方案。

如图3所示,本发明一个实施例提供了一种执行读写分离的装置30,包括:

设置单元301,用于设置具有读写分离类型的API的代理中间件,且通过所述代理中间件分别连接至少两个主数据库;

确定单元302,用于确定所述至少两个主数据库中的执行写操作的第一主数据库和至少一个执行读操作的第二主数据库;

处理单元303,用于利用所述代理中间件的API,获取读写操作请求,并确定所述读写操作请求的请求类型;

发送单元304,用于在所述请求类型为写操作时,将所述读写操作请求发送至所述第一主数据库,在所述请求类型为读操作时,根据预先设置的负载均衡策略,将所述读写操作请求发送至任一所述第二主数据库。

在本发明一个实施例中,请参考图4,该执行读写分离的装置30还可以包括:故障检测单元401;

所述故障检测单元401,用于建立所述代理中间件与所述第一主数据库的故障检测链接通道;根据预先设置的心跳机制,利用所述故障检测链接通道,周期性的连接所述第一主数据库执行心跳机制函数;在连续至少一次获取到的所述第一主数据库的返回结果均为空时,确定所述第一主数据库发生故障,并触发所述确定单元302;

所述确定单元302,进一步用于在接收到所述故障检测单元401发来的触发信号时,确定至少一个所述第二主数据库中的任一主数据库为下一个执行写操作的第一主数据库。

在本发明一个实施例中,所述故障检测单元401,进一步用于在连续至少一次获取到的所述发生故障的第一主数据库的返回结果均不为空时,确定该第一主数据库恢复正常,并触发所述确定单元302;

所述确定单元302,进一步用于在接收到所述故障检测单元401发来的触发信号时,新增所述恢复正常的第一主数据库为执行读操作的第二主数据库。

在本发明一个实施例中,请参考图4,该执行读写分离的装置30还可以包括:创建单元402;

所述创建单元402,用于建立包括所述至少两个主数据库的数据库列表;

所述确定单元302,具体用于首次默认选择所述数据库列表中的首个主数据库为执行写操作的第一主数据库,其他至少一个主数据库为执行读操作的第二主数据库;在接收到所述故障检测单元401发来的触发信号时,确定所述数据库列表中的所述发生故障的第一主数据库之后的主数据库为执行写操作的第二主数据库。

在本发明一个实施例中,所述读写操作请求包括:SQL语句;

所述处理单元303,具体用于对所述SQL语句进行关键字解析,在解析出所述SQL语句的第一个关键字是insert、update、delete中的任意一种,或所述SQL语句的最后一个关键字是for update时,确定所述SQL语句的请求类型为写请求,在解析出所述SQL语句的第一个关键字是select时,确定所述SQL语句的请求类型为读请求。

如图5所示,本发明实施例提供了一种执行读写分离的系统,包括:

至少两个主数据库50,以及上述任一所述的执行读写分离的装置30。

在本发明一个实施例中,详细地,每一个客户端中存在读写操作请求时,可以将读写操作请求发送给该执行读写分离的装置30。该执行读写分离的装置30在接收到每一个读写操作请求时,可以根据请求类型,将其发送至对应的主数据库50以进行处理,并将主数据库50返回的处理结果反馈给对应的客户端。

在本发明一个实施例中,所述第一主数据库,用于接收并执行所述执行读写分离的装置发来的读写操作请求;生成所述读写操作请求对应的二进制日志文件,并以广播的方式将所述二进制日志文件发送至每一个所述第二主数据库;

所述第二主数据库,用于接收并执行所述执行读写分离的装置发来的读写操作请求;接收并异步执行所述第一主数据库发来的所述二进制日志文件。

第一主数据库在执行写操作时,可以生成对应的二进制日志文件,通过将该二进制日志文件发送至每一个第二主数据库,以实现各主数据库间的数据同步。每一个第二主数据库对应接收到的二进制日志文件,可以异步执行该二进制日志文件对应的写操作,以保证数据库集群中各主数据库的数据保持一致。这一实现方式不仅可以有效保证数据库完整性,还可以实现数据的冗余效果。

上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。

综上所述,本发明的各个实施例至少具有如下有益效果:

1、本发明实施例中,设置具有读写分离类型的API的代理中间件,且通过代理中间件分别连接至少两个主数据库;确定该至少两个主数据库中的执行写操作的第一主数据库和至少一个执行读操作的第二主数据库;利用代理中间件的API,获取读写操作请求并确定其请求类型;将请求类型为写操作的读写操作请求发送至第一主数据库,并根据负载均衡策略将请求类型为读操作的读写操作请求发送至任一第二主数据库。由于可以将写操作和读操作分开执行,故写操作不影响读操作的正常执行。因此,本发明能够能够提高读写操作的效率。

2、本发明实施例中,根据各读写操作请求的请求类型,可以将读操作路由至读节点,将写操作路由至写节点,以实现读写分离,从而有效减轻数据库压力和减轻IO压力。此外,基于多主数据库的读写分离,可以定期监测执行写操作的主数据库的工作状态,并在其发生故障时,确定新的执行写操作的主数据库,以实现故障自动迁移,无需手动切换数据库,从而不影响数据库集群的正常工作,增加数据库的高可用性和易用性。通过读写分离和故障自动迁移,为数据库集群的高可用部署提供了一种可行性方案。

需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个〃·····”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质中。

最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1