一种异地多活的分布式消息消费方法及装置与流程

文档序号:14714129发布日期:2018-06-16 01:00阅读:151来源:国知局
一种异地多活的分布式消息消费方法及装置与流程

本发明涉及计算机技术领域,特别是涉及一种异地多活的分布式消息消费方法及装置。



背景技术:

Kafka是一个分布式的、可分区的、可复制的分布式消息系统,Kafka以集群的方式运行,可以由一个或多个服务组成。分布式消息系统作为分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。Kafka集群是其中的典型代表。现有Kafka集群都是分开部署运维的,由于Kafka集群数量众多,Kafka集群之间是通过数据中心(DC,data center)来为消费者提供服务的,一旦某个数据中心出现了问题,会造成与该数据中心连接所有Kafka集群不能为消费者提供服务,消费者需要进行Kafka集群切换,以及在消费者切换到新的Kafka集群后,需要重新消费,会产生大量的重复消息,从而降低了消费者的满意度。

因此,如何实现跨数据中心的服务高可用以及在消费者切换集群过程中减少生成的重复消息是目前有待解决的技术问题。



技术实现要素:

本发明实施例所要解决的技术问题是提供一种异地多活的分布式消息消费方法,以解决现有技术中不能实现跨数据中心的服务的高可用,导致消费者在切换集群过程造成大量重复消息,降低满意度的问题。

相应的,本发明实施例还提供了一种异地多活的分布式消息消费装置,用以保证上述方法的实现及应用。

为了解决上述问题,本发明是通过如下技术方案实现的:

第一方面提供一种异地多活的分布式消息的消费方法,所述方法包括:

消费端监测服务端中至少两个业务集群是否可用;

如果所述消费端监测到所述至少两个业务集群均可用,则选择所述至少两个业务集群中的一个业务集群作为主业务集群;

所述消费端连接选择的所述主业务集群进行消费。

可选的,所述选择所述至少两个业务集群中的任一业务集群作为主业务集群的方式为:

所述消费端选择至少两个业务集群中优先级高的一个业务集群作为消费的主业务集群。

可选的,所述方法还包括:

在开始消费后,所述消费端继续监测所述主业务集群是否可用;

在所述消费端监测到所述主业务集群不可用时,从所述至少两个业务集群中重新选择次优先级高的一个业务集群作为消费的主业务集群;

所述消费端连接重新选择的所述主业务集群进行消费。

可选的,所述方法还包括:

在所述消费端连接到重新选择的所述主业务集群进行消费前,计算消费端初始化的消费起点偏移值;

所述消费端根据所述消费起点偏移值重新设置所述消费端的消费进度;

所述消费端按照重新设置的消费进度连接到重新选择的所述主业务集群进行消费。

可选的,按照下述公式计算消费起点偏移值:

offset A=offset B-Lag-调整因子offset A≤0,

其中,所述offsetA为业务集群A上一个主题topic消息的消费起点偏移值;

所述offsetB为业务集群B上所述topic目前的消费偏移值;

所述Lag为业务集群B上所述topic消息消费的滞后值;

所述调整因子为调整常量。

第二方面提供一种异地多活的分布式消息的消费装置,所述装置包括:

监测模块,用于监测服务端中至少两个业务集群是否可用;

第一选择模块,用于在所述监测模块监测到所述至少两个业务集群均可用时,选择所述至少两个业务集群中的任一个业务集群作为主业务集群;

第一消费模块,用于连接所述第一选择模块选择的所述主业务集群进行消费。

可选的,所述第一选择模块,具体用于在所述监测模块监测到所述至少两个业务集群均可用时,选择至少两个业务集群中优先级高的一个业务集群作为消费的主业务集群。

可选的,所述装置还包括:第三选择模块和第三消费模块,其中,

所述监测模块,还用于在开始消费后,继续监测所述主业务集群是否可用;

所述第三选择模块,用于在所述监测模块监测到所述主业务集群不可用时,从所述至少两个业务集群中重新选择次优先级高的一个业务集群作为消费的主业务集群;

所述第三消费模块,用于连接所述第三选择模块重新选择的所述主业务集群进行消费。

可选的,所述装置还包括:

计算模块,用于在第三消费模块进行消费前,计算消费端初始化的消费起点偏移值;

设置模块,用于根据所述消费起点偏移值重新设置所述消费端的消费进度;

所述第三消费模块,还用于按照重新设置的消费进度连接到重新选择的所述主业务集群进行消费。

可选的,所述计算模块按照下述公式计算消费起点偏移值:

offset A=offset B-Lag-调整因子offset A≤0,

其中,所述offsetA为业务集群A上一个主题topic消息的消费起点偏移值;

所述offsetB为业务集群B上所述topic目前的消费偏移值;

所述Lag为业务集群B上所述topic消息消费的滞后值;

所述调整因子为调整常量。

与现有技术相比,本发明实施例包括以下优点:

本发明实施例中,本实施例中,由消费端从可用的业务集群中选择主业务集群,从而提高了业务集群的高可用性。当消费端连接主业务集群开始消费时,消费端就开始监测该主业务集群的可用性,如果监测到该主业务集群不可用时,重新选择主业务集群,并计算消费端初始化的消费起点偏移值;然后根据所述消费起点偏移值重新设置所述消费端的消费进度;并与重新选择的主业务集群进行连接,最后按照重新设置的消费进度在连接的所述主业务集群进行消费。本实施例不但提高了业务集群的高可用性,而且在消费端切换到新的业务集群后,按照重新设置的消费进度开始消费,大幅度减少消息的重复消费。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。

附图说明

图1是本发明实施例提供的一种异地多活的分布式消息的消费方法的流程图;

图2是本发明实施例提供的一种异地多活的分布式消息的消费方法的另一流程图;

图3是本发明实施例提供的一种异地多活的分布式消息的消费方法的另一流程图;

图4是本发明实施例提供的一种异地多活的分布式消息的消费装置的结构示意图;

图5是本发明实施例提供的一种异地多活的分布式消息的消费装置的另一结构示意图;

图6是本发明实施例提供的一种异地多活的分布式消息的消费装置的另一结构示意图;

图7是本发明实施例提供的一种异地多活的分布式消息的消费装置的另一结构示意图;

图8是本发明实施例提供的一种异地多活的分布式消息消费系统的结构示意图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

请参阅图1,为本发明实施例提供的一种异地多活的分布式消息的消费方法的流程图,所述方法包括:

步骤101:消费端监测服务端的至少两个业务集群是否可用;

该步骤中,消费端集群中的每个消费端(或者是消息接收端集群中的每个消息接收端)先监测服务端的所有业务集群是否可用(即业务集群是否存活),然后根据监测结果进行选择并标记主业务集群。消费端每次消费过程中只能连接一个主业务集群,而这个连接的主业务集群是由消费端选定的。

该实施例中,消费端可以通过封装的软件开发工具包(SDK,Software Development Kit Windows)来监测业务集群是否可用,其具体的监测过程对于本领域技术人员来说,已是熟知技术,在此不再赘述。

本实施例中的业务集群可以是Kafka集群。

步骤102:如果监测到所述至少两个业务集群均可用,则所述消费端选择所述至少两个业务集群中的一个业务集群作为主业务集群;

该步骤中,如果消费端监测到服务端的一个或多个业务集群或者所有业务集群均可用,则可以从可用的业务集群中选择任一个业务集群作为主集群,即将该选择的可用业务集群标记为主业务集群。

当然,也可以按照选择业务就集群优先级高的一个业务集群作为主业务集群,具体为:

一种方式中,如果该消费端存储有可用业务集群的优先级,然后比较可用的业务集群优先级的高低,并选择优先级高的业务集群作为主优先级;

另一种情况是,该消费端从健康检查中心获取所述至少两个业务集群的优先级;然后可用业务集群优先级的高低,并选择优先级高的业务集群作为主优先级。

该实施例中,业务集群优先级的高低是人为规定的,也就是说固定集群的优先级,假设业务集群A、业务集群B的优先级分别为P1,P2,设定P1>P2,当业务集群A和业务集群B都可用时候,可以选择业务集群A作为主集群;当业务集群A不可用(比如出现故障)时候,选择业务集群B作为主集群。之后,当发现业务集群A从故障状态恢复为可用后,再重新切换成业务集群A。

步骤103:所述消费端连接选择的所述主业务集群进行消费。

消费端与主业务集群建立连接,开始消费。

本发明实施例中,通过监测服务器端所有业务集群的可用性,并从可用的业务集群中选择一个主业务集群,然后与该主业务集群建立连接并开始消费。也就是说,本实施例中,由消费端从可用的业务集群中选择主业务集群,从而提高了业务集群的高可用性。

还请参阅图2,为本发明实施例提供的一种异地多活的分布式消息的消费方法的另一流程图,该实施例在上述实施例的不同之处在于,消费端只监测到一个业务集群可用,所述方法包括:

步骤201:消费端监测服务端的至少两个业务集群是否可用;

该步骤同步骤101,具体详见上述,在此不再赘述。

步骤202:如果所述至少两个业务集群中只有一个业务集群可用,则所述消费端将所述可用的业务集群作为主业务集群;

该步骤中,如果消费端监测服务端只有一个业务集群可用,则选择该可用的一个业务集群作为主业务集群,即标记该业务集群为主业务集群。

步骤203:所述消费端连接选择的所述主业务集群进行消费。

其中,消费端与选择的主业务集群建立连接,开始消费。

可选的,在另一实施例中,该实施例在上述实施例的基础上,所述方法还可以包括:如果所述至少两个业务集群中没有一个业务集群可用,则停止向所述两个业务集群中的任一个业务集群进行消费。

本发明实施例中,消费端从自身监测到的可用业务集群中选择一个作为主业务集群,然后与其连接,开始消费,提高了业务集群的高可用性。

还请参阅图3,为本发明实施例提供的一种异地多活的分布式消息的消费方法的另一流程图,该实施例与上述实施例的不同之处在于,当消费端开始消费后,监测与该消费端连接的主业务集群的可用性,并在该主业务集群不可用时,切换到新的业务集群进行消费,为了便于描述,该实施例以图1实施例的基础上为例,但不限于此,其具体过程为:

步骤301:消费端监测服务端的至少两个业务集群是否可用;

步骤302:如果监测到所述至少两个业务集群均可用,则所述消费端选择所述至少两个业务集群中的任一个业务集群作为主业务集群;

步骤303:所述消费端连接选择的所述主业务集群进行消费;

其中,步骤301至步骤303与上述步骤101至步骤103相同,其具体实现过程详见上述,在此不再赘述。

步骤304:在开始消费后,所述消费端监测所述主业务集群是否可用;

在消费端开始消费后,消费端继续监测该主业务集群的可用性,即业务集群的存活性。期监测的方式与上述监测业务集群是否的可用的方式相同,具体详见上述,在此不再赘述。

步骤305:在所述监测到所述主业务集群不可用时,所述消费端从所述至少两个业务集群中重新选择次优先级高的一个业务集群作为消费的主业务集群;

消费端在监测到主业务集群不可用时,从选择次优先级高的业务集群作为新的主业务集群。

步骤306:所述消费端连接重新选择的所述主业务集群进行消费。

消费端与重新选择的主业务集群建立连接并开始消费。

可选的,在另一实施例中,该实施例在上述实施例的基础上,所述方法还可以包括:

在所述消费端连接到重新选择的所述主业务集群进行消费前,计算消费端的消费起点偏移值;

所述消费端根据所述消费起点偏移值重新设置所述消费端的消费进度;

所述消费端按照重新设置的消费进度连接选择的所述主业务集群进行消费。

其中,该实施例中,消费端计算消费端的消费起点偏移值,可以利用抵消同步(Offset Syncer)应用来计算每个消费端在对应业务集群上消费的消费起点偏移值,其具体的计算公式为:offset A=offset B-Lag-调整因子,offset A≤0。

其中,offsetA为业务集群A上某个主题(topic)信息的消费起点偏移值;

offsetB为业务集群B上所述topic信息目前的消费偏移值;

Lag为业务集群B上所述topic消费的滞后值,其计算公式为:Lag=LogSize-Offset,其中Offset值可以从Zookeeper中获取,offset为业务集群(比如kafka集群)中某个主题(topic)单独partation被标记为已经消费的消费偏移值;Logsize为业务集群(比如kafka集群)中某个topic单独partation的消息总量。其中,Partition为Topic包含的分区,通常情况下Topic有0-8一共9个分区。

调整因子,是为了进一步提高准确性而设置的调整值,即调整常量。可以根据消费速度、切换时间灵活设置。其计算公式为:QPS*Time-Intervel(校准期),其中,QPS为监测消费端的每秒查询率(Query Per Second)。根据所述消费起点偏移值重新设置所述消费端的消费进度;

也就是说,消费端根据消费起点偏移值重新设置消费进度,以便于在切换到主业务集群上按照重新设定消费进度进行消费,最大程度上减少消息的重复消费。

本发明实施例中,当消费端连接主业务集群开始消费时,消费端就开始监测该主业务集群的可用性,如果监测到该主业务集群不可用时,重新选择主业务集群,并计算消费端初始化的消费起点偏移值;然后根据所述消费起点偏移值重新设置所述消费端的消费进度;并与重新选择的主业务集群进行连接,最后按照重新设置的消费进度在连接的所述主业务集群进行消费。本实施例不但提高了业务集群的高可用性,而且在消费端切换到新的业务集群后,按照重新设置的消费进度开始消费,大幅度减少消息的重复消费。

需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。

还请参阅图4,为本发明实施例提供的一种异地多活的分布式消息的消费装置的结构示意图,所述装置包括:监测模块41,第一选择模块42和第一消费模块43,其中,

监测模块41,用于监测服务端的至少两个业务集群是否可用;

第一选择模块42,用于在所述监测模块41监测到所述至少两个业务集群均可用时,选择所述至少两个业务集群中的任一个业务集群作为主业务集群;

其中,所述第一选择模42,具体用于在所述监测模块41监测到所述至少两个业务集群均可用时,选择至少两个业务集群中优先级高的一个业务集群作为消费的主业务集群。

第一消费模块43,用于连接所述第一选择模块42选择的所述主业务集群进行消费。

本发明实施例中,通过监测服务器端所有业务集群的可用性,并从可用的业务集群中选择一个主业务集群,然后与该主业务集群建立连接并开始消费。也就是说,本实施例中,由消费端从可用的业务集群中选择主业务集群,从而提高了业务集群的高可用性。

可选的,在另一实施例中,该实施例在上述实施例的基础上,所述装置还可以包括:第二选择模块51和第二消费模块52,其结构示意图如图5所示,其中,

第二选择模块51,用于在所述监测模块41监测到所述至少两个业务集群中只有一个业务集群可用时,将所述可用的一个业务集群作为主业务集群;

第二消费模块52,用于连接所述第二选择模块51选择的所述主业务集群进行消费。

可选的,在另一实施例中,该实施例在上述实施例的基础上,所述装置还可以包括:停止发送模块(图中未示),其中,

停止发送模块,用于在所述监测模块监测到所述至少两个业务集群中没有一个业务集群可用时,停止向所述两个业务集群中的任一个业务集群进行消费。

可选的,在另一实施例中,该实施例在上述实施例的基础上,所述装置还可以包括:第三选择模块61和第三消费模块62,其结构示意图如图6所示,其中,

所述监测模块41,还用于在开始消费后,继续监测所述主业务集群是否可用;

第三选择模块61,用于在所述监测模块41监测到所述主业务集群不可用时,从所述至少两个业务集群中重新选择次优先级高的一个业务集群作为消费的主业务集群;

第三消费模块62,用于连接所述第三选择模块61重新选择的所述主业务集群进行消费。

可选的,在另一实施例中,该实施例在上述实施例的基础上,所述装置还可以包括:计算模块71和设置模块72,其结构示意图如图7所示,

计算模块71,用于在所述第三消费模块62进行消费前,计算消费端初始化的消费起点偏移值;

其中,计算模块71具体按照下述公式计算消费起点偏移值:

offset A=offset B-Lag-调整因子,offset A≤0

其中,offsetA为业务集群A上某个主题(topic)信息的消费起点偏移值;

offsetB为业务集群B上所述topic信息目前的消费偏移值;

Lag为业务集群B上所述topic消费的滞后值,其计算公式为:Lag=LogSize-Offset,其中Offset值可以从Zookeeper中获取,offset为业务集群(比如kafka集群)中某个主题(topic)单独partation被标记为已经消费的消费偏移值;Logsize为业务集群(比如kafka集群)中某个topic单独partation的消息总量。其中,Partition为Topic包含的分区,通常情况下Topic有0-8一共9个分区。

调整因子,是为了进一步提高准确性而设置的调整值。可以根据消费速度、切换时间灵活设置。其计算公式为:QPS*Time-Intervel(校准期),其中,QPS为监测消费端的每秒查询率(Query Per Second)。

设置模块72,用于根据所述消费起点偏移值重新设置所述消费端的消费进度;

所述第三消费模块62,还用于按照重新设置的消费进度连接到重新选择的所述主业务集群进行消费。

可选的,所述装置可以集成在消费端的每个消费集群上,也可以独立部署,本实施例不作限制作。

所述装置中各个模块的功能和作用的实现过程详见上述方法中对应步骤的实现过程,在此不再赘述。

本发明实施例中,消费端在监测到该主业务集群不可用时,重新获取新的业务集群和对应的消费起点偏移值,并重新设置自身的消费进度的起点,之后,在切换到新的业务集群时按照重新设置的起点开始消费,最大程度减少消息的重复消费。

还请参阅图8,为本发明实施例提供的一种异地多活的分布式消息的消费系统的结构示意图,所述系统包括:模拟复用器80(AQM,Analogue Multiplexer Quantizer),生产端81、服务端82和消费端83。为了便于说明,本实施例中,生产端81以包括Producer1和Producer2为例,服务端82以包括健康检查中心821(HCC,Health Check Center)、业务集群(Kafka)A和业务集群(Kafka)B,以及Kafka A对应的ZookeeperA,和Kafka B对应的ZookeeperB为例,消费端83以包括Consumer1和Consumer2为例。

该实施例中,假如,AQM80向Producer1发送北京电信消息;向Producer2发送北京联通消息;下面以Producer1为例来说明。Producer2的与Producer1类似;

Producer1在接收到该北京电信消息后,监测服务端82的KafkaA和KafkaB是否可用;如果监测到所述KafkaA和KafkaB均可用,则Producer1将所述Producer1发布的消息(即接收到的北京电信消息)分别发送给所述KafkaA和KafkaB;KafkaA和KafkaB分别将存储接收到的北京电信消息,而ZookeeperA的作用主要是用来维护和监控KafkaA存储的数据的状态变化,通过监控这些数据状态的变化,从而可以达到基于数据的集群管理。同理,ZookeeperB的作用主要是用来维护和监控KafkaB存储的数据的状态变化,通过监控这些数据状态的变化,从而可以达到基于数据的集群管理。

所述Producer1从所述KafkaA和KafkaB中选择一个Kafka作为消费端连接的主Kafka;其选择的过程为:Producer1从服务端82的中心zookeeper中获取分布式锁;然后通过所述分布式锁从所述KafkaA和KafkaB中选择一个Kafka作为主Kafka,比如,将选择的标记为主Kafka。然后,Producer1将所述主KafkaA的信息更新到可用的KafkaB以及健康检查中心HCC中。服务端82的KafkaB以及健康检查中心HCC存储接收到的主KafkaA的信息。

服务端82的健康检查中心821检查服务端的每个业务集群(比如KafkaA和KafkaB)是否可用;如果所述健康检查中心821检查到至少两个业务集群(比如KafkaA和KafkaB)均可用,则为可用的所述至少两个业务集群标记集群优先级,比如,KafkaA的优先级为P1,KafkaB的优先级为P2,按照约定规则设定P1>P2等。

健康检查中心821还检查服务端的每个业务集群是否可用,如果检查到有业务集群可用,则在可用的业务集群的指定zookeeper中的保留所述业务集群信息;如果检查到有业务集群不可用,则删除不可用所述业务集群的指定zookeeper中的所述业务集群信息。

消费端(比如Consumer1)监测服务端中至少两个业务集群(比如KafkaA和KafkaB)是否可用;如果所述至少两个业务集群(比如KafkaA和KafkaB)均可用,则选择所述至少两个业务集群中的任一个业务集群作为主业务集群;比如,选择KafkaA为主业务集群,当然,也可以选择选择KafkaB作为主业务集群。然后,所述消费端连接选择的所述主业务集群进行消费。

进一步,所述消费端可以选择至少两个业务集群中优先级高的一个业务集群作为消费的主业务集群。如果KafkaA的优先级为P1,KafkaB的优先级为P2,且P1>P2,则选择KafkaA作为消费的主业务集群。

进一步,在所述消费端连接选择的所述主业务集群进行消费后,所述消费端继续监测所述主业务集群是否可用;在所述消费端监测到所述主业务集群不可用时,从所述至少两个业务集群中重新选择次优先级高的一个业务集群作为消费的主业务集群;所述消费端连接重新选择的所述主业务集群进行消费。

进一步,在所述消费端连接到重新选择的所述主业务集群进行消费前,计算消费端初始化的消费起点偏移值;根据所述消费起点偏移值重新设置所述消费端的消费进度;按照重新设置的消费进度连接到重新选择的所述主业务集群进行消费。

对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。

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

以上对本发明所提供的上述方法和装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

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