一种信息同步方法及装置与流程

文档序号:12786207阅读:256来源:国知局
一种信息同步方法及装置与流程

本发明涉及信息技术领域,尤其涉及一种信息同步方法及装置。



背景技术:

随着互联网上的应用使用普及,应用的用户数量也大大增加,单台服务器远不足为大规模的用户提供服务,因此,对于互联网上的任一应用,通常可以采用分布式系统,利用多个服务器一起提供服务。每个服务器上都可以有多个提供服务的进程,各个服务器的进程在运行过程中都需要获取一些特定信息,特定信息可以是包括可执行指令信息、配置信息、任务调度信息、服务资源信息等,特定信息可以是固定不变的,也可以是动态变化的。

在现有技术中,通常利用zookeeper对特定信息进行统一管理,zookeeper是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。每个服务器中每个进程分别与zookeeper建立一个长连接,则可以通过各长连接,将zookeeper上的动态变化的特定信息(称为待同步信息)同步给各个服务器的各个进程。

但是,由于在实际应用中通常是上百个服务器共同服务,每个服务器通常运行上百个提供服务的进程,比如:若有100个服务器一起提供服务,每个服务器上运行128个进程时,每个服务器中的每个进程都与zookeeper建立一个长连接,共需要建立12800个长连接,以用于同步待同步信息。由此可见,这种信息同步的方式给zookeeper带来较大的负载,严重影响zookeeper的处理性能。



技术实现要素:

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的信息同步方法及装置。

根据本发明的一个方面,提出一种信息同步方法,服务器与zookeeper相互连接,所述服务器上有多个提供服务的进程,所述方法包括:

各所述进程中,预定数量的进程分别与zookeeper建立长连接,所述预定数量少于所述服务器上提供服务的进程总数量;

所述预定数量的进程通过所述长连接,监控所述zookeeper中是否存在待同步信息;

每当监控到所述zookeeper中存在待同步信息时,通过所述长连接获取所述待同步信息,将获取的待同步信息通过进程间通信的方式同步给所述服务器上提供服务的其他进程。

可选地,所述进程间通信的方式包括管道、消息队列中的至少一种。

可选地,当所述进程间通信的方式包括管道时,将获取的待同步信息通过进程间通信的方式同步给所述服务器上提供服务的其他进程,具体包括:

所述预定数量的进程中的至少一个进程创建与所述服务器上提供服务的其他进程之间的管道;

所述至少一个进程通过创建的管道,将获取的待同步信息同步给所述其他进程。

可选地,当所述进程间通信的方式包括消息队列时,将获取的待同步信息通过进程间通信的方式同步给所述服务器上提供服务的其他进程,具体包括:

所述预定数量的进程中的至少一个进程将获取的待同步信息写入预定的消息队列中,以使所述服务器上提供服务的其他进程从所述消息队列中读取所述待同步信息并同步。

可选地,通过所述长连接获取所述待同步信息后,所述方法还包括:

所述预定数量的进程将获取的待同步信息保存至所述服务器的本地磁盘中,以使当所述预定数量的进程通过进程间通信的方式向所述其他进程同步失 败时,所述其他进程从所述本地磁盘中同步所述待同步信息。

根据本发明的另一个方面,提出一种信息同步装置,服务器与zookeeper相互连接,所述服务器上有多个提供服务的进程,所述装置位于所述服务器上,所述装置包括:

连接模块,用于使各所述进程中,预定数量的进程分别与zookeeper建立长连接,所述预定数量少于所述服务器上提供服务的进程总数量;

监控模块,用于使所述预定数量的进程通过所述长连接,监控所述zookeeper中是否存在待同步信息;

同步模块,用于使所述预定数量的进程每当监控到所述zookeeper中存在待同步信息时,通过所述长连接获取所述待同步信息,将获取的待同步信息通过进程间通信的方式同步给所述服务器上提供服务的其他进程。

可选地,所述进程间通信的方式包括管道、消息队列中的至少一种。

可选地,当所述进程间通信的方式包括管道时,所述同步模块具体用于:

使所述预定数量的进程中的至少一个进程创建与所述服务器上提供服务的其他进程之间的管道,并通过创建的管道,将获取的待同步信息同步给所述其他进程。

可选地,当所述进程间通信的方式包括消息队列时,所述同步模块具体用于:

使所述预定数量的进程中的至少一个进程将获取的待同步信息写入预定的消息队列中,以使所述服务器上提供服务的其他进程从所述消息队列中读取所述待同步信息并同步。

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

保存模块,用于使所述预定数量的进程通过所述长连接获取所述待同步信息后,将获取的待同步信息保存至所述服务器的本地磁盘中,以使当所述预定数量的进程通过进程间通信的方式向所述其他进程同步失败时,所述其他进程从所述本地磁盘中同步所述待同步信息。

根据本发明的方案,服务器上提供服务的各进程中,预定数量的进程分别与zookeeper建立长连接,所述预定数量少于所述服务器上提供服务的进程总数量;所述预定数量的进程通过所述长连接,监控所述zookeeper中是否存在待同步信息;每当监控到所述zookeeper中存在待同步信息时,通过所述长连接获取所述待同步信息,将获取的待同步信息通过进程间通信的方式同步给所述服务器上提供服务的其他进程。无需服务器上的所有提供服务的各进程分别与zookeeper建立长连接,而是可以由一部分进程分别与zookeeper建立长连接即可,并由建立长连接的这部分进程在从zookeeper同步待同步信息后,再帮助其他进程同步待同步信息。因此,可以有效地减轻zookeeper的负载,以及减少对zookeeper的处理性能的影响。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1为依据本发明一个实施例的信息同步方法的过程;

图2为基于一种实际应用场景,现有技术中各进程与zookeeper同步信息时建立的长连接示意图;

图3为基于一种实际应用场景,本发明的方案中基于管道方式,各进程与zookeeper同步信息时建立的长连接示意图;

图4为基于一种实际应用场景,本发明的方案中基于消息队列方式,各进程与zookeeper同步信息时建立的长连接示意图;

图5为依据本发明一个实施例的信息同步装置结构示意图。

具体实施方式

下面将参照附图更详细地描述本发明公开的示例性实施例。虽然附图中显示了本发明公开的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明公开的范围完整的传达给本领域的技术人员。

以下结合附图,详细说明本发明各实施例提供的技术方案。

图1为依据本发明实施例的信息同步方法的过程,该过程的执行主体可以是服务器,更具体地,该过程中的步骤可以是服务器上的进程执行的。所述服务器可以是Web服务器、应用服务器等,所述进程具体可以是提供服务的进程,以Web服务器为例,其提供服务的进程可以是快速页模式(fast page mode,fpm)进程等。本发明对服务器的类型并不做限定。

服务器与zookeeper相互连接(此处的连接指物理连接),服务器上有一个或多个提供服务的进程,可以将要向各进程同步的待同步信息保存在zookeeper上,进而可以基于zookeeper向各进程同步待同步信息。其中,所述待同步信息可以动态变化,这种变化可以指增量变化,也可以是在直接对已有信息进行的变更。需要说明的是,与zookeeper相互连接的服务器可以不止一个,每个服务器可以分别执行图1中的过程。下面对图1中的过程具体说明。

图1中的过程可以包括以下步骤:

S101:各所述进程中,预定数量的进程分别与zookeeper建立长连接,所述预定数量少于所述服务器上提供服务的进程总数量。

在本发明实施例中,对确定预定数量的进程的方式并不做限定,以下举例对几种可行的方式进行说明。

预定数量的进程可以是服务器预先确定出来的。例如,服务器可以按照各进程的启动时间,确定出启动时间靠前的预定数量的进程;或者,服务器可以在提供服务的各进程中,随机地确定出预定数量的进程;等等。

预定数量的进程可以是由服务器上提供服务的各进程通过竞争自行确定 出来的。例如,zookeeper可以预先设定与服务器之间的长连接的最大数量,该最大数量即为上述的预定数量,进而,在任意时刻,服务器上最多可以有预定数量的进程与zookeeper之间建立有长连接,而超出预定数量的进程向zookeeper请求建立长连接时,zookeeper可以拒绝该请求;或者,可以由服务器为提供服务的各进程提供竞争机制,并只允许竞争获胜的预定数量的进程与zookeeper建立长连接;等等。

在本发明实施例中,预定数量最小值为1,最大值为服务器提供服务的各进程的总数量减1。预定数量越少时,与zookeeper建立长连接的进程越少,有益效果是越能够减轻zookeeper的负担,预定数量越多时,与zookeeper建立长连接的进程越多,有益效果是信息同步的实时性越好。因此,可以根据对这两类益处效果的实际需求,确定预定数量。

S102:所述预定数量的进程通过所述长连接,监控所述zookeeper中是否存在待同步信息。

在本发明实施例中,预定数量的进程中各进程可以过自己建立的长连接,监控zookeeper中是否存在待同步信息。具体的监控方式,可以是进程定期向zookeeper查询确定待同步信息是否存在;或者,也可以为各进程注册监视者(Watcher),各进程通过Watcher确定zookeeper中是否存在待同步信息;等等。

在实际应用中,为了进一步地减轻zookeeper的负担,可以由预定数量的进程中的部分进程监控zookeeper中是否存在待同步信息,并将监控结果向预定数量的进程通知。

S103:每当监控到所述zookeeper中存在待同步信息时,通过所述长连接获取所述待同步信息,将获取的待同步信息通过进程间通信的方式同步给所述服务器上提供服务的其他进程(服务器上提供服务的其他进程,以下简称为其他进程)。

在本发明实施例中,基于进程间通信的方式,预定数量的进程可以直接向其他进程发送待同步信息,因此,其他进程并不用执行磁盘读写等耗时较多的 操作即可获取到待同步信息,进而实现与zookeeper信息同步。

例如,当预定数量为进程总数量的一半时,预定数量的进程与另一半进程可以一一对应,在这种情况下,预定数量的进程中的每个进程从zookeeper中获取到待同步信息后,可以将获取的待同步信息同步给与该进程对应的进程。由于预定数量的进程中的每个进程可以并行地执行同步过程,因此,可以提高服务器上提供的各进程与zookeeper信息同步的实时性。

进一步地,进程间通信的方式具体可以是管道、消息队列、信号量、套接字。不同的进程间通信的方式可以适用于不同应用场景。下面分别进行说明。

对于管道,可以分为匿名管道(Anonymous Pipe)和命名管道(Named Pipe)两类。匿名管道是一种半双工的通讯方式,数据在匿名管道中只能单向流动,而且,匿名管道只能在具有亲缘关系的进程(如父进程和子进程、或同一个父进程的两个子进程)间使用;命名管道也是半双工的通讯方式,但是命名管道可以在无亲缘关系的进程间使用。由于服务器提供服务的各进程大部分都是相互独立的,并不具有亲缘关系,因此,相比于匿名管道,命名管道更适用于本发明的方案。

对于消息队列,消息队列是由消息构成的链表,存放在内核中并有消息队列标识符进行标识,消息队列可以动态地扩充,优点是信息承载量大,而且可以完全保留承载的信息的原有格式。两方进程在基于消息队列进行进程间通信时,可以由一方进程在消息队列中写入信息,相应地,另一方进程可以从消息队列中读取对方进程写入的信息。

对于信号量,信号量是一个计数器,其可以用来控制多个进程对共享资源的访问,共享资源可以是多个进程共享的、本地磁盘或共享内存中的资源。信号量可以作为一种锁机制,通过控制多个进程操作(包括读取和/或写入操作)共享资源实现进程间的通信,在同一时间只允许一个进程操作共享资源。

对于套接字,套接字是基于因特网协议(Internet Protocol)地址和应用层端口号的一种通讯方式。套接字既可以适用于同一个服务器上的不同进程之间 的通信,也适用于不同服务器上的不同进程之间的通信。套接字的优点是在进程之间可传输的信息量大,而且可以为信息传输过程提供完整性和保密性的机制。

通过上述方法,无需服务器上的所有提供服务的各进程分别与zookeeper建立长连接,而是可以由一部分进程分别与zookeeper建立长连接即可,并由建立长连接的这部分进程在从zookeeper同步待同步信息后,再帮助其他进程同步待同步信息。因此,可以有效地减轻zookeeper的负载,以及减少对zookeeper的处理性能的影响。这种方案相当于是将zookeeper原来承载的一部分负担转移到了各服务器上,从而也提高了由zookeeper以及与zookeeper相互连接的各服务器构成的分布式系统的负载均衡程度。

为了便于理解,下面对图1中的步骤进一步地说明。

上面列举了若干种适用于本发明的方案的进程间通信的方式。信号量的方式一般需要基于本地磁盘或共享内存实现,套接字的方式对服务器的要求较高,而管道和消息队列则没有这些限制,因此,从实施成本的角度考虑,可以优先采用管道或消息队列实施本发明的方案,下面分别对这两种方案的实施进一步地说明。

依据本发明的一个实施例,对于步骤S103,当所述进程间通信的方式包括管道时,将获取的待同步信息通过进程间通信的方式同步给所述服务器上提供服务的其他进程,具体可以包括:所述预定数量的进程中的至少一个进程创建与所述服务器上提供服务的其他进程之间的管道;所述至少一个进程通过创建的管道,将获取的待同步信息同步给所述其他进程。

当预定数量的进程中包含父进程,且其他进程中包含该父进程的子进程(即父进程与子进程之间通信)时,或者,当预定数量的进程中包含子进程,且其他进程中包含该子进程隶属于同一个父进程的子进程(即两个子进程之间通信)时,在该实施例中的管道可以是匿名管道,且该匿名管道可以由父进程创建,或者,由父进程的子进程通过继承父进程创建的管道创建。

以父进程与子进程之间通信为例,首先,由父进程创建父进程与子进程之间的匿名管道,并获取对该匿名管道的读写句柄,然后,父进程可以向该匿名管道中写入或读取待同步信息,相应地,子进程可以继承父进程获取的读写句柄,进而子进程也可以该匿名管道中写入或读取待同步信息。

当预定数量的进程与其他进程没有亲缘关系,为相互独立的进程时,在该实施例中的管道可以是命名管道,为了便于描述,将与预定数量的进程称为服务端进程,将其他进程称为客户端进程。服务端进程创建与客户端进程之间的命名管道,并获得该命名管道的管道句柄,通过该管道句柄可以侦听客户端进程的连接请求,相应地,客户端进程可以向服务端进程发送连接请求已建立连接。建立连接后,服务端进程与客户端进程可以使用管道句柄,在命名管道中读取或写入待同步信息。

进一步地,通过管道同步待同步信息时,服务端进程可以在管道的发送端可以对待同步信息进行封装后再以信息流的方式写入管道中,相应地,在管道的接收端可以对读取到的信息流进行解封装从而获取待同步信息。这样的话,在管道传输过程中屏蔽了不同的待同步信息的原有格式。

依据本发明的一个实施例,对于步骤S103,当所述进程间通信的方式包括消息队列时,将获取的待同步信息通过进程间通信的方式同步给所述服务器上提供服务的其他进程,具体可以包括:所述预定数量的进程中的至少一个进程将获取的待同步信息写入预定的消息队列中,以使所述服务器上提供服务的其他进程从所述消息队列中读取所述待同步信息并同步。

前面已经提到,消息队列是一个链表。服务端进程可以将从zookeeper获取的待同步信息封装成为一条或多条消息,并分别在该链表的每个节点中写入一条消息。消息队列对于消息内包含的内容的格式并不做限定,因此,即使待同步信息是不同的格式,根据不同格式的待同步信息封装出的各消息也可以写入同一个消息队列中。

消息队列还提供了字段用于限定,每条消息的最大长度和消息队列的最大 长度。以Linux系统下的消息队列为例,“MSGMAX”字段用于限定每条消息的最大长度,“MSGMNB”用于限定消息队列的最大长度。

相比于管道,消息队列还具有以下优点:消息队列可以独立于进程而存在,可靠性较高;进程从消息队列中读取消息时,可以根据消息类型有选择地读取。

上面对基于进程间通信的方式同步待同步信息的实施方案进行了说明。在实际应用中,当服务器重启时,服务端上提供服务的各进程会因为掉电而消亡,则可能导致正在进行的信息同步过程失败,以及可能导致各进程已从zookeeper同步的信息(同步的信息一般可以保存在分配给各进程的内存空间中)丢失。在这种情况下,当服务器重启完毕后,各进程也会相应的重启,进而会向zookeeper进行全量的同步,给zookeeper带来了较大负担。不仅如此,为了防止上述情况发生,可以将从zookeeper同步的信息都保存在服务器的本地磁盘中,本地磁盘即使掉电也不会丢失已保存的信息。不仅如此,在实际应用中,除了掉电以外,也可能存在其他异常(如进程资源冲突、内存溢出等)使得基于进程间通信的方式的信息同步过程执行失败。

根据以上分析,为了进一步地提高本发明的方案的可靠性,依据本发明的一个实施例,对于步骤S103,通过所述长连接获取所述待同步信息后,还可以执行以下步骤:所述预定数量的进程将获取的待同步信息保存至所述服务器的本地磁盘中,以使当所述预定数量的进程通过进程间通信的方式向所述其他进程同步失败时,所述其他进程从所述本地磁盘中同步所述待同步信息。进一步地,当服务器重启后,启动的提供服务的各进程可以先尝试从本地磁盘中同步信息,这样的话,即使本地磁盘并未与zookeeper完全同步,各进程可也以从本地磁盘中同步一部分信息,再从zookeeper同步剩余的信息,而无需从zookeeper全量同步,因此,也可以减轻zookeeper的负担。

服务器上提供服务的各进程在信息同步完毕后,可以根据同步的信息的类型,执行相应的操作。比如,对于同步的可执行指令信息(如批处理脚本等),各进程可以执行可执行指令信息中包含的指令;对于配置信息,各进程可以加 载该配置信息并根据加载的配置信息运行;等等。

上面对图1进行了详细说明。为了便于理解,本发明还基于一种实际应用场景,对本发明的方案与现有技术的方案进行了对比,如图2、图3、图4所示。

首先对该实际应用场景进行说明。在该实际应用场景,Web服务器(可以有一个或多个,在该例中示出了其中一个)与zookeeper相互连接,Web服务器上有多个fpm进程,zookeeper上有需要同步给fpm进程的待同步信息。

图2为现有技术中各fpm进程与zookeeper同步信息时建立的长连接示意图。

在图2中可以看到,Web服务器上的每个fpm进程分别与zookeeper建立了一个长连接,用于从zookeeper同步信息。因此,zookeeper服务器与每个Web服务器之间都要长期维持大量长连接,负担较重,影响处理性能。

图3为本发明的方案中基于管道方式,各fpm进程与zookeeper同步信息时建立的长连接示意图。假定建立长连接的fpm进程与未建立长连接的fpm进程的数量相同。

图4为本发明的方案中基于消息队列方式,各fpm与zookeeper同步信息时建立的长连接示意图。假定建立长连接的fpm进程与未建立长连接的fpm进程的数量相同。

相比于图2,在图3、图4中,Web服务器上只有一半数量的fpm进程(即为本发明中所述的预定数量的进程)与zookeeper建立了长连接。在长连接的存续时间内中,可以一直这些fpm进程负责从zookeeper获取待同步信息,并将获取的待同步信息通过管道或消息队列的方式,同步给未建立长连接的各进程,从而,服务器上提供服务的各进程均可以完成信息同步。由此可见,相比于图2中的现有技术,图3、图4中本发明的方案有效地减轻了zookeeper的负担,减小了对zookeeper的处理性能的影响。

以上为本发明实施例提供的一种信息同步方法,基于同样的发明思路,本 发明实施例还提供一种信息同步装置,如图5所示。

图5为依据本发明一个实施例的信息同步装置结构示意图,服务器与zookeeper相互连接,所述服务器上有多个提供服务的进程,所述装置位于所述服务器上,所述装置包括:

连接模块501,用于使各所述进程中,预定数量的进程分别与zookeeper建立长连接,所述预定数量少于所述服务器上提供服务的进程总数量;

监控模块502,用于使所述预定数量的进程通过所述长连接,监控所述zookeeper中是否存在待同步信息;

同步模块503,用于使所述预定数量的进程每当监控到所述zookeeper中存在待同步信息时,通过所述长连接获取所述待同步信息,将获取的待同步信息通过进程间通信的方式同步给所述服务器上提供服务的其他进程。

可选地,所述进程间通信的方式包括管道、消息队列中的至少一种。

可选地,当所述进程间通信的方式包括管道时,所述同步模块503具体用于:

使所述预定数量的进程中的至少一个进程创建与所述服务器上提供服务的其他进程之间的管道,并通过创建的管道,将获取的待同步信息同步给所述其他进程。

当所述进程间通信的方式包括消息队列时,所述同步模块503具体用于:

使所述预定数量的进程中的至少一个进程将获取的待同步信息写入预定的消息队列中,以使所述服务器上提供服务的其他进程从所述消息队列中读取所述待同步信息并同步。

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

保存模块504,用于使所述预定数量的进程通过所述长连接获取所述待同步信息后,将获取的待同步信息保存至所述服务器的本地磁盘中,以使当所述预定数量的进程通过进程间通信的方式向所述其他进程同步失败时,所述其他进程从所述本地磁盘中同步所述待同步信息。

通过上述装置,无需服务器上的所有提供服务的各进程分别与zookeeper建立长连接,而是可以由一部分进程分别与zookeeper建立长连接即可,并由建立长连接的这部分进程在从zookeeper同步待同步信息后,再帮助其他进程同步待同步信息。因此,可以有效地减轻zookeeper的负载,以及减少对zookeeper的处理性能的影响。

在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要 求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的拦截应用程序中的植入信息的设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”或“包括”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

本申请可以应用于计算机系统/服务器,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与计算机系统/服务器一起使用的众所周知的计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。

计算机系统/服务器可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。

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