数据传输系统、方法、装置及设备与流程

文档序号:19471994发布日期:2019-12-21 02:24阅读:172来源:国知局
本申请涉及计算机
技术领域
:,尤其涉及一种数据传输系统、方法、装置及设备。
背景技术
::现有技术中,数据仓库的数据源大多是业务数据库,如mysql,构建过程依赖数据同步。常用的数据同步方案是直接连接mysql去批量查询获取数据,然后存储到中间介质,最后把文件装载到数仓hive表中。随着业务规模的不断增长,直接从业务mysql库查询大量数据,容易造成对mysql库的慢查询,从而影响业务线上的正常服务。因此现有的数据同步的方法一般采用基于t+1延迟调度的方式,在晚上统一进行数据同步,这样数据仓库中的数据的时效性就会大大降低,无法满足一些对时效性要求高的数据查询业务。因此,需要提供耗时更少、更灵活的数据传输方法。技术实现要素:有鉴于此,本申请实施例提供了一种数据传输系统、方法、装置及设备,用于提高数据传输的时效性。为解决上述技术问题,本说明书实施例是这样实现的:本说明书实施例提供的一种数据传输系统,包括:业务数据库、消息中间件和数据仓库,所述业务数据库用于将业务表变更日志集合中的业务变更日志进行编译后发送至所述消息中间件,所述数据仓库用于按照设定周期从所述消息中间件中获取编译后的各所述业务变更日志。本说明书实施例提供的一种数据传输方法,包括:获取业务数据库中的业务变更日志集合;将所述业务变更日志集合中的每一条业务变更日志进行编译后,得到设定格式的消息,存放到消息队列中;按照设定周期将所述消息队列中的所述设定格式的消息发送至数据仓库。本说明书实施例提供的另外一种数据传输方法,包括:捕获业务变更日志集合快照;按照所述业务变更日志集合快照读取所述业务变更日志集合中的各业务变更日志;将所述业务变更日志集合中的各业务变更日志发送至消息中间件。本说明书实施例提供的一种数据传输装置,包括:业务变更日志集合获取模块,用于获取业务数据库中的业务变更日志集合;业务变更日志编译模块,用于将所述业务变更日志集合中的每一条业务变更日志进行编译后,得到设定格式的消息,存放到消息队列中;设定格式的消息发送模块,用于按照设定周期将所述消息队列中的所述设定格式的消息发送至数据仓库。本说明书实施例提供的另外一种数据传输装置,包括:快照捕获模块,用于捕获业务变更日志集合快照;读取模块,用于按照所述业务变更日志集合快照读取所述业务变更日志集合中的各业务变更日志;发送模块,用于将所述业务变更日志集合中的各业务变更日志发送至消息中间件。本说明书实施例提供的一种数据传输设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:获取业务数据库中的业务变更日志集合;将所述业务变更日志集合中的每一条业务变更日志进行编译后,得到设定格式的消息,存放到消息队列中;按照设定周期将所述消息队列中的所述设定格式的消息发送至数据仓库。本说明书实施例提供的另外一种数据传输设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:捕获业务变更日志集合快照;按照所述业务变更日志集合快照读取所述业务变更日志集合中的各业务变更日志;将所述业务变更日志集合中的各业务变更日志发送至消息中间件。本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:本技术方案从业务数据库中获取业务表变更日志集合中的业务变更日志,并将编译后的业务变更日志发送数据仓库中进行存储。由于传输到数据仓库中的是业务变更日志,无需直接从业务mysql库中获取数据,不影响业务线上的其他正常服务。因为,业务变更日志是对业务mysql库中的数据进行的操作的记录,也可以表示业务mysql库中的数据,因此本方案可以做到业务数据的实时传输,大大提高数据传输的时效性。附图说明此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:图1为本说明书实施例提供的一种数据传输系统的结构示意图;图2为本说明书实施例提供的一种数据传输方法的流程示意图;图3为本说明书实施例提供的另一种数据传输方法的流程示意图;图4为本说明书实施例提供的一种数据传输方法的实施例的流程示意图;图5为数据实时摄取模块从初始化snapshot开始的流程示意图图6为binlog的示意图;图7为消息队列中设定格式的消息;图8为本说明书实施例提供的对应于图2的一种数据传输装置的结构示意图;图9为本说明书实施例提供的对应于图3的一种数据传输装置的结构示意图;图10为本说明书实施例提供的对应于图2的一种数据传输设备的结构示意图。图11为本说明书实施例提供的对应于图3的一种数据传输设备的结构示意图。具体实施方式为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。数据仓库的数据源大多是业务数据库如mysql,构建过程依赖数据同步。常用的数据同步方案是直连mysql去批量查询获取数据,然后存储到中间介质,最后把文件装载到数据仓库hive表中。随着业务规模的不断增长,批量查询->中间存储->装载hive的这种数据流耗费的时间越来越长,将无法满足下游数据仓库生产的时间要求。为了解决上述问题,本说明书实施例提供了一种可以实时进行数据传输的方案,改变数据仓库的数据源,不是采用mysql,而是采用业务数据库中的业务变更日志,通过业务变更日志来代替业务数据的传输,然后将存储的业务变更日志再还原为业务数据。这样就避免了直接从业务mysql库查询大量数据,因此不会造成对mysql库的慢查询,也不会影响业务线上的正常服务。因此,本说明书实施例提供的数据传输方案可以提供数据传输的实时性,而且也不会影响其他的线上操作。以下结合附图,详细说明本申请各实施例提供的技术方案。图1为本说明书实施例提供的一种数据传输系统的结构示意图。如图1所示,所述系统包括:业务数据库11、消息中间件12和数据仓库13,所述业务数据库11用于将业务表变更日志集合中的业务变更日志进行编译后发送至所述消息中间件12,所述数据仓库13用于按照设定周期从所述消息中间件中获取编译后的各所述业务变更日志。业务数据库11可以是业务服务器中的数据库,用于存储全部的业务数据,可以包括数据源信息,还可以包括变更日志。变更日志是用于记录业务数据变化的过程,它随着业务数据的变化同时进行更新,因此,可以根据原始数据结构表和变更日志得到任意时刻的业务数据,而且不影响其他线上操作。因此,在面对大量数据的传输时,采用本发明提供的数据传输系统进行数据传输,可以提高时效性。消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。消息中间件适用于需要可靠的数据传送的分布式环境。采用消息中间件机制的系统中,不同的对象之间通过传消息来激活对方的事件,完成相应的操作。发送者将消息发送给消息服务器,消息服务器将消息存放在若干队列中,在合适的时候再将消息转发给接收者。消息中间件能在不同平台之间通信,它常被用来屏蔽掉各种平台及协议之间的特性,实现应用程序之间的协同,其优点在于能够在客户和服务器之间提供同步和异步的连接,并且在任何时刻都可以将消息进行传送或者存储转发,这也是它比远程过程调用更进一步的原因。在本说明书的一个或多个实施例中,消息中间件12可以采用kafka。kafka的目的是通过hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。数据仓库13用来存储业务变更日志,并不做其他的限定,可以采用hive等。图2为本说明书实施例提供的一种数据传输方法的流程示意图。在本发明提供的数据传输系统中,以数据中间件为执行主体。从程序角度而言,流程的执行主体可以为搭载于服务器或客户端的程序。如图2所示,该流程可以包括以下步骤:步骤202:获取业务数据库中的业务变更日志集合。在本说明书实施例中,在第一次执行数据采集操作的时候,需要由客户端进行触发,该客户端不是常规定义中的用户客户端,而是用于业务数据的运营方的操作端,这个操作端可以有多个。只要有一个客户端触发采集指令,该数据采集过程就会一直延续下去。在数据采集过程中,如果有特殊情况,也可以选择终止或暂停等操作,问题解决了或者故障排除了,再重启任务。数据业务库可以存储在业务服务器中。业务变更日志集合中的业务变更日志是随着业务数据的变化而不断增加的。另外,为了缓解数据增长带来的读写压力,现有技术采用对数据源分库分表的操作,这使得查询和导入数据仓库的过程变得复杂和繁重。本说明书实施例不从数据源中直接获取数据,而是间接的获取业务变更日志,避免了分库分表带来的问题。步骤204:将所述业务变更日志集合中的每一条业务变更日志进行编译后,得到设定格式的消息,存放到消息队列中。为了便于传输和保存,在获取了业务变更日志之后,需要对每一条变更日志进行编译,编译成适合存储的格式,或者满足数据仓库的存储要求。如可以包括变更前后数据的消息,然后按照时间顺序将编译后的业务变更日志存放到消息队列中。步骤206:按照设定周期将所述消息队列中的所述设定格式的消息发送至数据仓库。在本说明书实施例中,触发消息中间件将消息队列中的所述设定格式的消息发送至数据仓库的条件可以是由客户端发起的,而且只要触发一次就可以一直持续进行。周期可以自定义,或者按照业务变更日志的新增数据的数量或速度进行确定,还可以根据下游业务对数据时效性的要求进行确定。例如,下游业务的对数据时效性的要求为半个小时,那么可以将周期设定为半个小时,或者小于半个小时,其最短周期可以到分钟级。需要注意的是,步骤202中“获取业务变更日志集合”的操作是实时进行的,而步骤206中的“将所述消息队列中的所述设定格式的消息发送至数据仓库”的操作是按照设定周期进行的。在理论上,步骤202的两次“获取操作”的时间间隔要小于步骤206中的“设定周期”。但是,设定周期也可以达到分钟级,即每分钟发送消息队列里的消息到数据仓库。另外,消息队列中的消息是永远保存的,并不会因为将消息发送至数据仓库就删除消息队列中的对应数据。另外,消息队列中的数据是按照时间顺序排列的。图2中的方法,通过从业务数据库中获取业务表变更日志集合中的业务变更日志,并将编译后的业务变更日志发送数据仓库中进行存储。由于传输到数据仓库中的是业务变更日志,无需直接从业务mysql库中获取数据,不影响业务线上的其他正常服务。因为,业务变更日志是对业务mysql库中的数据进行的操作的记录,也可以表示业务mysql库中的数据,因此本方案可以做到业务数据的实时传输,大大提高数据传输的时效性。基于图2的方法,本说明书实施例还提供了该方法的一些具体实施方式,下面进行说明。在本说明书的一个或者多个实施例中,在所述将所述业务变更日志集合中的每一条业务变更日志进行编译后,得到设定格式的消息,存放到消息队列中之前,还包括:获取业务数据库中的业务数据表结构信息;所述将所述业务变更日志集合中的每一条业务变更日志进行编译后,得到设定格式的消息,具体包括:根据所述业务数据表结构信息对所述业务变更日志集合中的每一条业务变更日志进行编译,得到设定格式的消息,所述设定格式包括:变更前数据、变更后数据、数据源信息和数据类型。为了根据业务变更日志得到符合设定格式的消息,还需要从业务数据库中获取业务数据表结构信息。业务数据表结构信息可以包括多个业务数据表的格式,比如包括哪些条目等等。然后根据这些业务数据表结构和业务表更日志就可以恢复这条业务表更日志针对的变更前后的数据具体是什么。在本说明书的一个或者多个实施例中,设定格式可以包括:变更前数据、变更后数据、数据源信息和数据类型。数据类型可以包括:更新、插入和删除等等。在本说明书的一个或者多个实施例中,所述按照设定周期将所述消息队列中的所述设定格式的消息发送至数据仓库,具体包括:确定所述消息队列中的第一断点位置;获取所述消息队列中位于所述第一断点位置之后的设定格式的消息,其中,所述消息队列中的设定格式的消息按照进入所述消息队列的时间先后顺序进行排序;将所述第一断点位置之后的设定格式的消息发送至数据仓库。为了避免重复的将消息队列中的消息发送至数据仓库中,在每次向数据仓库发送完数据之后,可以在消息队列中做一个标记,标明最后一个发送的消息的位置。这样在下次向数据仓库发送数据的时候,就可以从标记的位置后面进行数据发送,等这一个周期发送完毕后,再对最后一个数据进行标记。例如,可以将kafka的offsets保存在文件中来管理偏移量(即标记断点位置),以便在任务失败和任务重启时,可以从上次提交的偏移量开始。在本说明书的一个或者多个实施例中,在所述将所述业务变更日志集合中的每一条变更日志进行编译后,得到设定格式的消息,存放到消息队列中之后,所述方法还包括:基于分库分表的名称正则表达式,根据主题对符合设定格式的消息进行合并存储。为了方便数据的传输和存储,在将业务变更日志进行编译之后,然后按照主题对这些消息进行存储。一个主题下存储的消息都是针对同一个业务数据表进行的变更,这样存储数据,有利于数据仓库中的数据进行存储,也有利于外部对业务数据的调用。图3为本说明书实施例提供的另一种数据传输方法的流程示意图。图3的执行主体为业务数据库。如图3所示,所述方法可以包括以下步骤:步骤302:捕获业务变更日志集合快照。在获取业务变更日志集合中的业务变更日志时,需要首先获取业务变更日志集合快照,从而确定需要获取的业务变更日志有哪些。步骤304:按照所述业务变更日志集合快照读取所述业务变更日志集合中的各业务变更日志。在获取业务变更日志集合快照之后,就可以逐条读取业务变更日志集合的各业务变更日志了。在业务变更日志集合中,业务变更日志是按照时间顺序进行排列的。步骤306:将所述业务变更日志集合中的各业务变更日志发送至消息中间件。步骤302-步骤306的操作是实时进行的,一旦客户端触发数据传输,就一直不断的执行步骤302-步骤306的操作。在本说明书的一个或者多个实施例中,在所述按照所述业务变更日志集合快照读取所述业务变更日志集合中的各业务变更日志之后,还包括;在所述业务变更日志集合中的最后一条业务变更日志的位置进行标记。因为业务变更日志集合是不断增加的,为了避免重复的读取所述业务变更日志中的业务变更日志,在每次读取之后,会在读取的最后一条业务变更日志的位置进行标记,以便于下次从标记后的位置开始读取业务变更日志,并发送给消息中间件。在本说明书的一个或者多个实施例中,所述按照所述业务变更日志集合快照读取所述业务变更日志集合中的各业务变更日志,具体包括:确定业务变更日志集合中的第二断点位置;获取所述业务变更日志集合中位于所述第二断点位置之后的一个或多个业务变更日志。上述方法限定了非初次获取业务变更日志集合中的业务变更日志的方法,即初次之后的每一次读取业务变更日志的方法。第二断点位置标记的就是上次读取数据的最后位置,第二断点位置之前的业务变更日志是已经读取且发送至消息中间件中的,第二断点位置之后的业务并更日志是新生成的,需要被读取且发送至消息中间件的数据。这样操作避免了重复读取数据,而且任务失败或者任务重启时,也可以从上次的断点位置进行读取数据。在本说明书的一个或者多个实施例中,在所述捕获业务变更日志集合快照之后,还包括:对所述业务变更日志集合快照加锁,屏蔽其他客户端的写操作;在所述按照所述业务变更日志集合快照读取所述业务变更日志集合中的各业务变更日志之后,还包括:释放对所述业务变更日志集合快照的锁。为了防止其他用户对业务变更日志集合的日志进行恶意操作,如修改或者删除业务变更日志集合的操作,本方法还设置了风控措施,即对业务变更日志集合快照加锁,防止其他客户端的写操作。在读取所述业务变更日志集合中的各业务变更日志之后,再释放锁。图4为本说明书实施例提供的一种数据传输方法的实施例的流程示意图。如图4所示,包括3个实体(数据源、消息队列和数据仓库)和2个模块(数据实时摄取模块和数据定时装载模块)。数据实时摄取模块和数据定时装载模块构建为rest服务,支持自定义的dsl语法配置。其中,数据实时摄取模块基于对mysql的binlog解析,以全量snapshot和持续解析binlog的方式,实现对mysql的无缝同步,编译成hive需要的表数据更改前后的内容。数据定时装载模块,定时获取kafka消息队列累计消息,每行数据写入hive,进行分钟粒度的分区存储。平台化的统一处理数据实时摄取模块和数据定时装载模块的全生命周期管理,可通过web系统进行交互友好的操作,或者传递高度抽象化的dsl语言调用restfulapi进行传输任务的创建,启动,停止,热更新等操作。同时监听传输链路状况,提供监控dashboard和监控报警功能。图6为数据实时摄取模块从初始化snapshot开始的流程示意图。如图6所述,所述数据实时摄取模块用于:(1)获取全表snapshot:获取全局读锁,读取表schema和当前binlog(二进制日志)位置,释放读锁,在事务内扫描当时全表数据连同建表语句写入特定消息队列主题。(图5为binlog的示意图)(2)实时读binlog:从全局snapshot时的记录断点开始,实时读取binlog并生成变更前后的表数据,持续写入消息队列,并基于分库分表的名称正则表达式,合并到一个主题。图7为消息队列中设定格式的消息。所述设定格式包括:变更前数据、变更后数据、数据源信息和数据类型。数据实时摄取模块构建语法如下:其中,1、“name”指明模块。2、“config”指明配置:(1)“database.source”指明数据库地址和端口号;(2)“user”指明具备相应权限的mysql账户名;(3)“poassword”指明该账户名的密码;(4)“database.include”指明需要监听的库名,如果参数是“database.exclude”则指明需要过滤的库名,两个配置不可同时存在;(5)“table.include”指明需要监听的表名,参数是“table.exclude”时指明需要过滤的表名,两个配置不可同时存在,通过正则表达式将分库分表的数据统一录入kafka消息队列;(6)“column.exclude”指明需要过滤的列名,即该列变化时不写消息队列;(7)“kafk.servers”指明kafka消息队列brokers所在的地址端口号;(8)“kafka.topic”指明kafka消息队列主题;(9)“heartbeat.interval.ms”指明探活周期。数据定时装载模块,以可定制的频率从kafka消息队列中获取数据,为每个topic创建一个hive外部分区表。使用wal机制确保每条记录准确地导出到hdfs一次。此外,将kafka的offsets保存在文件中来管理偏移量,以便在失败和任务重启时,可以从上次提交的偏移量开始。自定义分区模式,可进行分钟粒度的分区存储。定时装载模块构建语法:其中、1.“name”指明模块。2.“config”指明配置:(1)“duration.ms”指明定时调度的间隔周期;(2)“kafka.servers”指明kafka消息队列brokers所在的地址端口号;(3)“kafka.topic”指明消息队列主题;(4)“hdfs.url”指明写入的hdfs地址;(5)“hive.metastore.uris”指明元数据存储地址;(6)“hive.database”指明hive库;(7)“path.format”指明存储路径的格式。本说明书实施例能够达到的有益效果是:充分发挥了实时流的优势,分摊单次大量摄取数据的压力,避免对线上服务的影响,同时使完成单次同步任务的时长大幅降低,不影响数据仓库下游多级依赖生产,且使数据仓库的数据同步延迟从天级降低至分钟级。基于同样的思路,本说明书实施例还提供了上述方法对应的装置。图8为本说明书实施例提供的对应于图2的一种数据传输装置的结构示意图。如图8所示,该装置可以包括:业务变更日志集合获取模块801,用于获取业务数据库中的业务变更日志集合;业务变更日志编译模块802,用于将所述业务变更日志集合中的每一条业务变更日志进行编译后,得到设定格式的消息,存放到消息队列中;设定格式的消息发送模块803,用于按照设定周期将所述消息队列中的所述设定格式的消息发送至数据仓库。在本说明书的一个或多个实施例中,所述装置还可以包括:业务数据表结构信息获取模块,用于在所述将所述业务变更日志集合中的每一条业务变更日志进行编译后,得到设定格式的消息,存放到消息队列中之前,获取业务数据库中的业务数据表结构信息;业务变更日志编译模块802,具体可以用于:根据所述业务数据表结构信息对所述业务变更日志集合中的每一条业务变更日志进行编译,得到设定格式的消息,所述设定格式包括:变更前数据、变更后数据、数据源信息和数据类型。在本说明书的一个或多个实施例中,所述设定格式的消息发送模块803,具体可以包括:第一断点位置确定单元,用于确定所述消息队列中的第一断点位置;获取单元,用于获取所述消息队列中位于所述第一断点位置之后的设定格式的消息,其中,所述消息队列中的设定格式的消息按照进入所述消息队列的时间先后顺序进行排序;发送单元,用于将所述第一断点位置之后的设定格式的消息发送至数据仓库。在本说明书的一个或多个实施例中,所述装置还可以包括:合并和存储模块,用于在所述将所述业务变更日志集合中的每一条变更日志进行编译后,得到设定格式的消息,存放到消息队列中之后,基于分库分表的名称正则表达式,根据主题对符合设定格式的消息进行合并存储。基于同样的思路,本说明书实施例还提供了上述方法对应的装置。图9为本说明书实施例提供的对应于图3的一种数据传输装置的结构示意图。如图9所示,该装置可以包括:快照捕获模块901,用于捕获业务变更日志集合快照;读取模块902,用于按照所述业务变更日志集合快照读取所述业务变更日志集合中的各业务变更日志;发送模块903,用于将所述业务变更日志集合中的各业务变更日志发送至消息中间件。在本说明书的一个或多个实施例中,所述装置还可以包括:标记模块,用于在所述按照所述业务变更日志集合快照读取所述业务变更日志集合中的各业务变更日志之后,在所述业务变更日志集合中的最后一条业务变更日志的位置进行标记。在本说明书的一个或多个实施例中,所述读取模块902,具体可以包括:第二断点位置确定单元,用于确定业务变更日志集合中的第二断点位置;读取单元,用于获取所述业务变更日志集合中位于所述第二断点位置之后的一个或多个业务变更日志。在本说明书的一个或多个实施例中,所述装置还可以包括:加锁模块,用于在所述捕获业务变更日志集合快照之后,对所述业务变更日志集合快照加锁,屏蔽其他客户端的写操作;解锁模块,用于在所述按照所述业务变更日志集合快照读取所述业务变更日志集合中的各业务变更日志之后,释放对所述业务变更日志集合快照的锁。基于同样的思路,本说明书实施例还提供了上述方法对应的设备。图10为本说明书实施例提供的对应于图2的一种设备的结构示意图。如图10所示,设备1000可以包括:至少一个处理器1010;以及,与所述至少一个处理器通信连接的存储器1030;其中,所述存储器1030存储有可被所述至少一个处理器1010执行的指令1020,所述指令被所述至少一个处理器1010执行,以使所述至少一个处理器1010能够:获取业务数据库中的业务变更日志集合;将所述业务变更日志集合中的每一条业务变更日志进行编译后,得到设定格式的消息,存放到消息队列中;按照设定周期将所述消息队列中的所述设定格式的消息发送至数据仓库。图11为本说明书实施例提供的对应于图3的一种设备的结构示意图。如图11所示,设备1100可以包括:至少一个处理器1110;以及,与所述至少一个处理器通信连接的存储器1130;其中,所述存储器1130存储有可被所述至少一个处理器1110执行的指令1120,所述指令被所述至少一个处理器1110执行,以使所述至少一个处理器1110能够:捕获业务变更日志集合快照;按照所述业务变更日志集合快照读取所述业务变更日志集合中的各业务变更日志;将所述业务变更日志集合中的各业务变更日志发送至消息中间件。为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1