数据同步的***、方法、装置和计算机存储介质
技术领域
本发明涉及数据信息处理技术领域,更具体地,涉及数据同步***、数据同步方法、数据同步装置和计算机存储介质。
背景技术
当某些数据设备中存储的数据发生变化,其他数据设备中存储的此类数据需要做相应的改变,使得所有数据中存储的设备保持一致,这就是数据同步。在大数据时代,数据同步显得越来越重要。不管是数据的加工生产过程中,还是在数据的提取和传输过程中,都需要进行数据同步。
在现有技术中,数据同步采用的工具通常有datax、sqoop等。这些工具通过定时定量的方式将数据同步到指定的存储中,不能在数据源发生数据变更后立即进行同步,无法达到实时同步的效果。
发明内容
根据本发明的第一方面,提供一种数据同步***,包括数据监听模块、消息分发模块、数据同步模块、以及配置管理模块;
所述数据监听模块,用于对数据源进行监听,以获取所述数据源的数据变更记录;
所述消息分发模块,用于创建与所述数据源对应的消息队列,从所述数据监听模块获取所述数据源的数据变更记录并将所述数据源的数据变更记录加入到与所述数据源对应的消息队列中;
所述配置管理模块,用于管理所述数据源的同步配置参数,所述数据源的同步配置参数包括所述数据源的标识、目标存储的位置、以及与所述数据源对应的消息队列的标识;
所述数据同步模块,用于监听所述配置管理模块以获取所述数据源的同步配置参数,按照所述数据源的同步配置参数创建与所述消息队列对应的消费协程;以及,由所述消费协程监听对应的所述消息队列,以消费对应的所述消息队列中写入的数据变更记录,按照所述数据源的同步配置参数将所述消息队列中写入的数据变更记录更新到对应的目标存储中。
可选地或优选地,所述消息分发模块采用Kafka分布式发布订阅消息***。
可选地或优选地,所述配置管理模块采用Zookeeper分布式应用程序协调服务***。
可选地或优选地,所述数据源的同步配置参数还包括与所述数据源对应的消息队列的并发速度;所述数据同步模块,还用于按照所述并发速度确定需要创建的与所述消息队列对应的消费协程的数量。
可选地或优选地,所述数据监听模块,还用于将所述数据源的数据变更记录转化为预设的格式,所述预设的格式为所述消费协程可解析的格式。
可选地或优选地,所述数据同步模块,还用于将自身注册到所述配置管理模块中,由所述配置管理模块监听所述数据同步模块的工作状态。
可选地或优选地,所述消息队列为持久化的消息队列。
根据本发明的第二方面,提供一种数据同步方法,包括:
对数据源进行监听,以获取所述数据源的数据变更记录;
创建与所述数据源对应的消息队列,将所述数据源的数据变更记录加入到与所述数据源对应的消息队列中;
对所述数据源的同步配置参数进行监听,按照所述数据源的同步配置参数创建与所述消息队列对应的消费协程;其中,所述数据源的同步配置参数包括所述数据源的标识、目标存储的位置、以及与所述数据源对应的消息队列的标识;以及,
由所述消费协程监听对应的所述消息队列,以消费对应的所述消息队列中写入的数据变更记录,按照所述数据源的同步配置参数将所述消息队列中写入的数据变更记录更新到对应的目标存储中。
根据本发明的第三方面,提供一种计算机存储介质,存储有可执行计算机指令,所述可执行计算机指令被处理器执行时,实现如本发明第二方面提供的方法。
根据本发明的第四方面,提供一种数据同步装置,包括处理器和存储器;所述存储器存储有可执行计算机指令,所述可执行计算机指令被所述处理器执行时,实现如本发明第二方面提供的方法。
本发明实施例提供的数据同步方法、***、计算机存储介质和数据同步装置,采用消息队列订阅机制,将数据变更记录加入到消息队列中,通过消费协程对消息队列的消费将数据源的变更实时写入到目标存储中,实现了数据的实时同步更新。此外,本发明实施例提供的数据同步方法、***、计算机存储介质和数据同步装置,根据同步配置参数设置消费协程,并且消费协程按照同步配置参数进行数据更新,当同步配置参数被用户更新时,数据同步***可以及时增加、删除、或者修改消费协程,因此,本发明实施例的数据同步***还具有很好的灵活性和扩展性。
附图说明
被结合在说明书中并构成说明书的一部分的附图示出了本发明的实施例,并且连同其说明一起用于解释本发明的原理。
图1示出了本发明实施例提供的数据同步***的硬件配置示意图;
图2示出了本发明实施例提供的数据同步***的示意图;
图3示出了本发明实施例提供的数据同步模块的示意图。
图4示出了本发明实施例提供的数据同步方法的流程图。
具体实施方式
现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人物已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
<数据同步***>
如图1所示,本发明实施例的数据同步***可以由服务器400实现。
服务器400提供处理、数据库、通讯设施的业务点。服务器400可以是整体式服务器或是跨多计算机或计算机数据中心的分散式服务器。服务器400可以是各种类型的,例如但不限于,网络服务器,新闻服务器,邮件服务器,消息服务器,广告服务器,文件服务器,应用服务器,交互服务器,数据库服务器,或代理服务器。在一些实施例中,服务器400可以包括硬件,软件,或用于执行服务器400所支持或实现的合适功能的内嵌逻辑组件或两个或多个此类组件的组合。例如,服务器400可以是由多台服务器组成的服务器群组,可以包括上述类型的服务器中的一种或多种等等。
在一个例子中,服务器400可以如图1所示,包括处理器4010、存储器4020、接口装置4030、通信装置4040、显示装置4050、输入装置4060等。尽管服务器也可以包括扬声器、麦克风等等,但是,这些部件与本发明无关,故在此省略。
其中,处理器4010例如可以是中央处理器CPU、微处理器MCU等。存储器4020例如包括ROM(只读存储器)、RAM(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置4030例如包括USB接口、串行接口、红外接口等。通信装置4040例如能够进行有线或无线通信。显示装置4050例如是液晶显示屏、LED显示屏触摸显示屏等。输入装置4060例如可以包括触摸屏、键盘等。
尽管在图1中对服务器400示出了多个装置,但是,本发明可以仅涉及其中的部分装置,例如,服务器400只涉及存储器4020和处理器4010。
在上述描述中,技术人员可以根据本公开所提供的方案设计指令。指令如何控制处理器进行操作,这是本领域公知,故在此不再详细描述。
图1所示的数据同步***仅是解释性的,并且决不是为了要限制本公开、其应用或用途。
参见图2所示,说明本发明实施例提供的数据同步***。
数据同步***包括数据监听模块20、消息分发模块30、数据同步模块40、以及配置管理模块50。
数据监听模块20,用于对数据源10进行监听,以获取数据源10的数据变更记录。数据源10可以是一个或者多个。也就是说,本发明实施例的数据同步***可以同时对多个数据源10进行数据同步。
消息分发模块30,用于创建与数据源对应的消息队列,即,数据源和消息队列为一一对应的关系。消息分发模块30从数据监听模块20获取数据源的数据变更记录并将数据源的数据变更记录加入到与数据源对应的消息队列中。
配置管理模块50,用于管理数据源的同步配置参数,数据源的同步配置参数包括数据源的标识、目标存储60的位置、以及与数据源对应的消息队列的标识。
数据同步模块40,用于监听配置管理模块20以获取数据源的同步配置参数,按照数据源的同步配置参数创建与消息队列对应的消费协程;以及,由消费协程监听对应的消息队列,以消费对应的消息队列中写入的数据变更记录,按照数据源的同步配置参数将消息队列中写入的数据变更记录更新到对应的目标存储60中。协程是一种程序组件,为进程中的一个相对独立的、可调度的执行单元实体。协程一般较为轻量和灵活,可以在指定位置挂起和恢复执行。消费协程是一种充当消费者角色的协程,用于消费消息队列中的消息。图2中示出了3个目标存储60,在实际应用中,可以将多个数据源10的数据合并同步到一个目标存储中,也可以将一个数据源10的数据分别同步到多个目标存储中。
本发明实施例提供的数据同步***,采用消息队列订阅机制,将数据变更记录加入到消息队列中,通过消费协程对消息队列的消费将数据源的变更实时写入到目标存储中,实现了数据的实时同步更新。
本发明实施例提供的数据同步***,根据同步配置参数设置消费协程,并且消费协程按照同步配置参数进行数据更新,当同步配置参数被用户更新时,数据同步***可以及时增加、删除、或者修改消费协程,因此,本发明实施例的数据同步***还具有很好的灵活性和扩展性。
在一个具体的例子中,数据源的同步配置参数还可以包括消息队列的并发速度。在一个例子中,与同一个消息队列对应的多个消费协程可以以并发的形式从该消息队列中消费数据。通过设置消费协程的数量,能够控制消息队列中的消息被消费的速度,也就是控制消息队列的并发速度。数据同步模块,还用于按照并发速度确定需要创建的与消息队列对应的消费协程的数量,也就是说,消息队列的并发速度越高,消费这个消息队列的消费协程的数量越多。本发明实施例提供的数据同步***,可以很方便地通过扩展消费协程的数量来增加同步速度。
在一个具体的例子中,参见图3所示,数据同步模块40的主协程41监听配置管理模块50,当数据源的同步配置参数被更新时,主协程41能够及时获得更新后的同步配置参数,根据更新后的同步配置参数对消费协程进行增加、删除、或者修改。
在图3所示的例子中,第二个数据源对应的消息队列为消息队列2,第二个数据源的同步配置参数中限定了并发速度为1,主协程41创建1个消费协程(消费协程424)监听消息队列1。第一个数据源对应的消息队列为消息队列1,第一个数据源的同步配置参数中限定了并发速度为3,主协程41会创建3个消费协程(分别为消费协程421、422、423)同时监听消息队列1,消息队列订阅机制自身能够保证1条消息只能由1个消费者消费,也就是说,每一条数据变更记录只会被一个消费协程消费,而不会被重复处理。
在一个具体的例子中,数据监听模块20,还用于将数据源的数据变更记录转化为预设的格式,使得消息队列中的数据变更记录的格式是统一的,并且这种预设的格式应当是消费协程可解析的格式,以方便消费协程消费。例如,第一个数据源的格式为Binlog格式,第一数据源的变更记录也是Binlog格式;第二个数据源的格式为Oplog格式,第二数据源的变更记录也是Oplog格式;预设的格式为JSON格式,数据同步***会将第一个数据源的数据变更记录由Binlog格式转化为JSON格式,将第二个数据源的变更记录由Oplog转化为JSON格式,再将JSON格式的数据变更记录传递给消息队列。
在一个具体的例子中,数据同步模块40,还用于将自身注册到配置管理模块50中,由配置管理模块50监听数据同步模块40的工作状态,使得用户可以及时观察到消费协程的消费进度。
在一个具体的例子中,消息分发模块30创建的消息队列为持久化的消息队列,使得数据变更记录不会轻易丢失。当消费协程需要暂停、暂停后启动、或者倒退回到某一个时间点进行重新消费时,都可以从消息队列中读取到所需的数据变更记录。
在一个具体的例子中,消息分发模块30创建的消息队列采用先进先出机制,使得消费协程可以按照顺序消费消息队列中的数据变更记录。
在一个具体的例子中,消息分发模块30采用Kafka分布式发布订阅消息***。Kafka分布式发布订阅消息***,是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java语言编写。Kafka是一种高吞吐量的分布式发布订阅消息***,它可以处理消费者规模的网站中的所有动作流数据。通过采用Kafka作为消息分发模块30,能够使本实施例中的数据同步***具有较高的吞吐量,并且容易实现持久化的消息队列。此外,基于Kafka消息分发模块自身的机制,能够保证1条消息只能由1个消费者消费,也就是说,每一条数据变更记录只会被一个消费协程消费,而不会被重复处理,从而保证了数据同步的准确高效。
在一个具体的例子中,配置管理模块50采用Zookeeper分布式应用程序协调服务***。Zookeeper分布式应用程序协调服务***是Google的一个开源的实现,为分布式应用提供一致***,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。Zookeeper分布式应用程序协调服务***具有通知机制。通过采用Zookeeper作为配置管理模块,使得配置管理模块50的性能高效并且可靠。此外,基于Zookeeper配置管理模块自身具有的通知机制,能够实现用户实时修改同步任务的效果。
在一个具体的例子中,数据同步模块40可以采用守护进程实现。守护进程是一种运行在后台的一种特殊的进程,能够独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。
下面以消息分发模块30采用Kafka分布式发布订阅消息***,配置管理模块50采用Zookeeper分布式应用程序协调服务***,数据同步模块40采用守护进程为例,说明本发明实施例提供的数据同步***:
数据同步***包括数据监听模块、Kafka消息分发模块、数据同步模块、以及Zookeeper配置管理模块。
数据监听模块对数据源进行监听,以获取数据源的数据变更记录。数据源的变更记录例如包括以下内容:数据源的标识,数据源所属数据库的标识,本次变更的时间戳,本次变更涉及的字段,变更前后的内容等。
Kafka消息分发模块,用于创建与数据源对应的Kafka消息队列,即,数据源和消息队列为一一对应的关系。Kafka消息分发模块从数据监听模块获取数据源的数据变更记录,将数据源的数据变更记录加入到与数据源对应的Kafka消息队列中。
Zookeeper配置管理模块,用于统一管理各个数据源的同步配置参数。数据源的同步配置参数包括数据源的标识、目标存储的位置、以及与数据源对应的Kafka消息队列的标识。数据源的同步配置参数例如还可以包括:需要同步更新的字段,与该数据源对应的Kafka消息队列的并发速度等。
一方面,用户通过Zookeeper配置管理模块统一管理各个数据源的同步配置参数。基于Zookeeper配置管理模块自身具有的通知机制,当用户通过Zookeeper配置管理模块修改同步配置参数时,会及时被数据同步模块的主协程获知,主协程根据同步配置参数及时调整消费进程,从而实现了用户实时修改同步任务的效果。
另一方面,数据同步模块将自身注册到Zookeeper配置管理模块中,由Zookeeper配置管理模块监听数据同步模块的工作状态。当消费协程异常关闭时,能够被Zookeeper配置管理模块及时捕捉到,使得用户可以及时观察到同步任务的状态。
具体地:
数据同步模块的主协程按照数据源的同步配置参数创建与Kafka消息队列对应的消费协程。由消费协程监听对应的Kafka消息队列,以消费对应的Kafka消息队列中写入的数据变更记录,按照数据源的同步配置参数将Kafka消息队列中写入的数据变更记录更新到对应的目标存储中。
数据同步模块的主协程监听Zookeeper配置管理模块,当数据源的同步配置参数被更新时,主协程能够及时获得更新后的同步配置参数,根据更新后的同步配置参数对消费协程进行增加、删除、或者修改。
基于Kafka消息分发模块自身的机制,能够保证1条消息只能由1个消费者消费,也就是说,每一条数据变更记录只会被一个消费协程消费,而不会被重复处理。
Kafka消息队列为持久化的消息队列,使得数据变更记录不会轻易丢失。当消费协程需要暂停、暂停后启动、或者倒退回到某一个时间点进行重新消费时,都可以从Kafka消息队列中读取到所需的数据变更记录。并且,Kafka消息队列遵循先进先出机制,保证消费过程的有序性。
对于Kafka消息分发模块来说,数据监听模块为其内容生产者,数据同步模块的消费协程为其内容消费者。Kafka消息分发模块自身具有解耦特性,可以将内容生产者和内容消费者解耦,屏蔽内容生产者和内容消费者之间的感知,当数据监听模块和数据同步模块中的任何一个模块出现问题时,都不会影响另一个模块的正常工作。
本发明实施例提供的数据同步***,采用Kafka消息订阅分发机制,将数据变更记录加入到Kafka消息队列中,通过消费协程对Kafka消息队列的消费将数据源的变更实时写入到目标存储中,实现了数据的实时同步更新。
<数据同步方法>
如图4所示,本发明实施例还提供了一种数据同步方法,包括以下步骤:
步骤S110、对数据源进行监听,以获取数据源的数据变更记录。
步骤S120、创建与数据源对应的消息队列,将数据源的数据变更记录加入到与数据源对应的消息队列中。
步骤S130、对数据源的同步配置参数进行监听,按照数据源的同步配置参数创建与消息队列对应的消费协程;其中,数据源的同步配置参数包括数据源的标识、目标存储的位置、以及与数据源对应的消息队列的标识。
步骤S140、由消费协程监听对应的消息队列,以消费对应的消息队列中写入的数据变更记录,按照数据源的同步配置参数将消息队列中写入的数据变更记录更新到对应的目标存储中。
本发明实施例提供的数据同步方法,采用消息队列订阅机制,将数据变更记录加入到消息队列中,通过消费协程对消息队列的消费将数据源的变更实时写入到目标存储中,实现了数据的实时同步更新。
在一个具体的例子中,数据源的同步配置参数还包括与数据源对应的消息队列的并发速度。按照数据源的同步配置参数创建与消息队列对应的消费协程,还包括按照并发速度确定与消息队列对应的消费协程的数量。
在一个具体的例子中,对数据源进行监听,以获取数据源的数据变更记录,还包括将数据源的数据变更记录转化为预设的格式,预设的格式为消费协程可解析的格式。
在一个例子中,采用Kafka分布式发布订阅消息***实现消息分发模块。
在一个例子中,采用Zookeeper分布式应用程序协调服务实现配置管理模块。
在一个例子中,数据源的同步配置参数还包括与数据源对应的消息队列的并发速度;数据同步模块,还用于按照并发速度确定需要创建的与消息队列对应的消费协程的数量。
在一个例子中,数据同步模块,还用于将自身注册到配置管理模块中,由配置管理模块监听数据同步模块的工作状态。
在一个具体的例子中,消息队列为持久化的消息队列。
在一个具体的例子中,消息队列采用先进先出机制。
本实施例提供的数据同步方法与前述实施例提供的数据同步***是对应的,前述数据同步***的实施例可用于解释本实施例中的数据同步方法,本实施例中不再赘述。
同样地,本发明实施例提供的数据同步方法,采用消息队列订阅机制,将数据变更记录加入到消息队列中,通过消费协程对消息队列的消费将数据源的变更实时写入到目标存储中,实现了数据的实时同步更新。此外,本发明实施例提供的数据同步方法,根据同步配置参数设置消费协程,并且消费协程按照同步配置参数进行数据更新,当同步配置参数被用户更新时,可以及时增加、删除、或者修改消费协程,因此,本发明实施例的数据同步方法还具有很好的灵活性和扩展性。
<数据同步装置>
本发明实施例还提供了一种数据同步装置,包括处理器和存储器;所述存储器存储有可执行计算机指令,所述可执行计算机指令被所述处理器执行时,能够实现前述数据同步方法实施例提供的数据同步方法。
具体的,前述数据同步方法的实施例可用于解释本实施例的数据同步装置,本数据同步装置的实施例中不再赘述。
<计算机存储介质>
本发明实施例还提供了一种计算机存储介质,所述计算机存储介质存储有可执行计算机指令,所述可执行计算机指令被处理器执行时,能够实现前述数据同步方法实施例提供的数据同步方法。
具体的,前述数据同步方法的实施例可用于解释本实施例的计算机存储介质,本计算机存储介质的实施例中不再赘述。
本发明可以是***、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人物来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人物来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人物能理解本文披露的各实施例。本发明的范围由所附权利要求来限定。