一种基于zookeeper的信息配置方法及装置转让专利

申请号 : CN201610755159.3

文献号 : CN106371932B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 冯所范王超朱超

申请人 : 北京奇虎科技有限公司奇智软件(北京)有限公司

摘要 :

本发明提供一种基于zookeeper的信息配置方法及装置,所述方法通过启动一个进程占有进程间的锁,并建立所述进程与zookeeper服务器之间的长连接,通过所述进程监控本地磁盘中所有的配置信息,所述进程根据接收到的更新配置信息通知,从所述zookeeper服务器中获取对应的配置信息并更新到本地磁盘中,以使待读取配置信息的进程只需从本地磁盘中查找自身对应的配置信息。可见本发明能够降低zookeeper服务器的负载。

权利要求 :

1.一种基于zookeeper的信息配置方法,其包括:

启动一个进程占有进程间的锁,并建立所述进程与zookeeper服务器之间的长连接,通过所述进程监控本地磁盘中所有配置信息;

所述进程根据接收到的更新配置信息通知,从所述zookeeper服务器中获取对应的配置信息并更新到本地磁盘中。

2.根据权利要求1所述的方法,其中,所述更新配置信息通知由所述zookeeper服务器在配置信息发生变动时向所述进程发送。

3.根据权利要求1所述的方法,其中,所述更新到本地磁盘中的配置信息用于供待读取配置信息的进程进行查找,以读取与所述待读取配置信息的进程自身对应的配置信息。

4.根据权利要求3所述的方法,其中,若查找到对应的配置信息,所述待读取配置信息的进程从本地磁盘中读取自身对应的配置信息,若没有查找到对应的配置信息,所述待读取配置信息的进程建立与zookeeper服务器之间的短连接,从所述zookeeper服务器中获取自身对应的配置信息并储存在本地磁盘。

5.根据权利要求1所述的方法,其中,在将从所述zookeeper服务器中获取的对应的配置信息更新到本地磁盘中之后,还包括:将从所述zookeeper服务器中获取的对应的配置信息更新到共享内存中。

6.根据权利要求5所述的方法,其中,所述更新到本地磁盘和共享内存中的配置信息用于供待读取配置信息的进程进行查找,以读取与所述待读取配置信息的进程自身对应的配置信息。

7.根据权利要求6所述的方法,其中,所述待读取配置信息的进程先在共享内存中进行查找,若查找到对应的配置信息,所述待读取配置信息的进程从共享内存中读取自身对应的配置信息;若没有查找到对应的配置信息,所述待读取配置信息的进程在本地磁盘中进行查找,若查找到对应的配置信息,所述待读取配置信息的进程从本地磁盘中读取自身对应的配置信息,若没有查找到对应的配置信息,所述待读取配置信息的进程建立与zookeeper服务器之间的短连接,从所述zookeeper服务器中获取自身对应的配置信息并储存在共享内存和本地磁盘中。

8.根据权利要求1-7中任一项所述的方法,其中,所述启动一个进程占有进程间的锁,并建立所述进程与zookeeper服务器之间的长连接,通过所述进程监控本地磁盘中所有配置信息,包括:启动一个专用于监控进程配置信息的进程占有进程间的锁;

建立所述专用于监控进程配置信息的进程与zookeeper服务器之间的长连接,通过所述专用监控配置信息的进程监控本地磁盘中所有的配置信息。

9.根据权利要求1-7中任一项所述的方法,其中,所述启动一个进程占有进程间的锁,并建立所述进程与zookeeper服务器之间的长连接,通过所述进程监控本地磁盘中所有配置信息,包括:启动待读取配置信息的进程占有进程间的锁;

在所述待读取配置信息的进程中启动一个线程或者一个进程,建立所述线程或者所述进程与zookeeper服务器之间的长连接,通过所述线程或者所述进程监控本地磁盘中所有的配置信息。

10.根据权利要求9所述的方法,其中,在所述待读取配置信息的进程中启动的一个线程为异步线程。

11.一种基于zookeeper的信息配置装置,其包括:

监控单元,用于启动一个进程占用进程间的锁,并建立所述进程与zookeeper服务器之间的长连接,通过所述进程监控本地磁盘中所有的配置信息;

更新单元,用于通过所述进程根据所述更新配置信息通知从所述zookeeper服务器中获取对应的配置信息并更新到本地磁盘中。

12.根据权利要求11所述的装置,其中,所述更新配置信息通知由所述zookeeper服务器在配置信息发生变动时向所述进程发送。

13.根据权利要求11所述的装置,其中,所述更新到本地磁盘中的配置信息用于供待读取配置信息的进程进行查找,以读取与所述待读取配置信息的进程自身对应的配置信息。

14.根据权利要求13所述的装置,其中,若查找到对应的配置信息,所述待读取配置信息的进程从本地磁盘中读取自身对应的配置信息,若没有查找到对应的配置信息,所述待读取配置信息的进程建立与zookeeper服务器之间的短连接,从所述zookeeper服务器中获取自身对应的配置信息并储存在本地磁盘。

15.根据权利要求11所述的装置,其中,所述装置还包括:

储存单元,用于将从所述zookeeper服务器中获取的对应的配置信息更新到共享内存中。

16.根据权利要求15所述的装置,其中,所述更新到本地磁盘和共享内存中的配置信息用于供待读取配置信息的进程进行查找,以读取与所述待读取配置信息的进程自身对应的配置信息。

17.根据权利要求16所述的装置,其中,所述待读取配置信息的进程先在共享内存中进行查找,若查找到对应的配置信息,所述待读取配置信息的进程从共享内存中读取自身对应的配置信息;若没有查找到对应的配置信息,所述待读取配置信息的进程在本地磁盘中进行查找,若查找到对应的配置信息,所述待读取配置信息的进程从本地磁盘中读取自身对应的配置信息,若没有查找到对应的配置信息,所述待读取配置信息的进程建立与zookeeper服务器之间的短连接,从所述zookeeper服务器中获取自身对应的配置信息并储存在共享内存和本地磁盘中。

18.根据权利要求11-17中任一项所述的装置,其中,所述监控单元,包括:

第一占有子单元,用于启动一个专用于监控进程配置信息的进程占有进程间的锁;

第一监控子单元,用于建立所述专用于监控进程配置信息的进程与zookeeper服务器之间的长连接,通过所述专用监控配置信息的进程监控本地磁盘中所有的配置信息。

19.根据权利要求11-17中任一项所述的装置,其中,所述监控单元,包括:

第二占有子单元,用于启动待读取配置信息的进程占有进程间的锁;

第二监控子单元,用于在所述待读取配置信息的进程中启动一个线程或者一个进程,建立所述线程或者所述进程与zookeeper服务器之间的长连接,通过所述线程或者所述进程监控本地磁盘中所有的配置信息。

20.根据权利要求19所述的装置,其中,所述第二监控子单元,用于在所述待读取配置信息的进程中启动一个异步线程,建立所述异步线程与zookeeper服务器之间的一个长连接,通过所述异步线程监控所述进程间通信中所有进程的配置信息。

说明书 :

一种基于zookeeper的信息配置方法及装置

[0001] 本发明专利申请是申请日为2013年10月11日、申请号为201310472913.9、名称为“一种基于zookeeper的信息配置方法及装置”的中国发明专利申请的分案申请。

技术领域

[0002] 本发明涉及计算机技术领域,具体涉及一种基于zookeeper的信息配置方法及装置。

背景技术

[0003] 随着计算机技术的不断发展,在网络应用中通常采用分布式系统,利用多台服务器一起提供服务,每个服务器都有上百个进程,这些服务器的进程配置通常都是一样的,当某一个进程配置需要修改时,必须对所有的服务器中该进程配置都进行修改。
[0004] 目前常利用zookeeper对多台服务器中的所有进程配置信息进行集中管理。zookeeper顾名思义动物园管理员,在计算机技术领域中zookeeper是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。现有的基于zookeeper的信息配置方案是:每个服务器中每个进程都要建立与zookeeper服务器之间的长连接,每个进程通过调用zookeeper服务器的接口监控自身进程的配置信息,当某一个进程的配置信息需要修改时,操作人员只需要修改zookeeper服务器上相应的配置信息,一旦发现zookeeper服务器的配置信息发生变动,对应的服务器进程及时更新自身进程的配置信息。
[0005] 由于在实际应用中常常是上百台服务器共同服务,每个服务器通常至少运行上百个进程,比如:若有100个服务器一起提供服务,每个服务器上运行200个进程时,每个服务器中的每个进程都与zookeeper服务器建立一个长连接,共需要建立20000个连接,可见这种配置方式给zookeeper服务器带来较大的负载,严重影响zookeeper服务器的处理性能。

发明内容

[0006] 本发明的一种基于zookeeper的信息配置方法及装置,用以保证服务器中所有进程配置信息得到监控的同时有效地降低zookeeper服务器的负载。
[0007] 为此,本发明提供如下技术方案:
[0008] 第一方面,本发明提供了一种基于zookeeper的信息配置方法,其包括:启动一个进程占有进程间的锁,并建立所述进程与zookeeper服务器之间的长连接,通过所述进程监控本地磁盘中所有配置信息;所述进程根据接收到的更新配置信息通知,从所述zookeeper服务器中获取对应的配置信息并更新到本地磁盘中。
[0009] 在另一优选实施例中,所述更新配置信息通知由所述zookeeper服务器在配置信息发生变动时向所述进程发送。
[0010] 在另一优选实施例中,所述更新到本地磁盘中的配置信息用于供待读取配置信息的进程进行查找,以读取与所述待读取配置信息的进程自身对应的配置信息。
[0011] 在另一优选实施例中,若查找到对应的配置信息,所述待读取配置信息的进程从本地磁盘中读取自身对应的配置信息,若没有查找到对应的配置信息,所述待读取配置信息的进程建立与zookeeper服务器之间的短连接,从所述zookeeper服务器中获取自身对应的配置信息并储存在本地磁盘。
[0012] 在另一优选实施例中,在将从所述zookeeper服务器中获取的对应的配置信息更新到本地磁盘中之后,还包括:
[0013] 将从所述zookeeper服务器中获取的对应的配置信息更新到共享内存中。
[0014] 在另一优选实施例中,所述更新到本地磁盘和共享内存中的配置信息用于供待读取配置信息的进程进行查找,以读取与所述待读取配置信息的进程自身对应的配置信息。
[0015] 在另一优选实施例中,所述待读取配置信息的进程先在共享内存中进行查找,若查找到对应的配置信息,所述待读取配置信息的进程从共享内存中读取自身对应的配置信息;若没有查找到对应的配置信息,所述待读取配置信息的进程在本地磁盘中进行查找,若查找到对应的配置信息,所述待读取配置信息的进程从本地磁盘中读取自身对应的配置信息,若没有查找到对应的配置信息,所述待读取配置信息的进程建立与zookeeper服务器之间的短连接,从所述zookeeper服务器中获取自身对应的配置信息并储存在共享内存和本地磁盘中。
[0016] 在另一优选实施例中,所述启动一个进程占有进程间的锁,并建立所述进程与zookeeper服务器之间的长连接,通过所述进程监控本地磁盘中所有配置信息,包括:
[0017] 启动一个专用于监控进程配置信息的进程占有进程间的锁;
[0018] 建立所述专用于监控进程配置信息的进程与zookeeper服务器之间的长连接,通过所述专用监控配置信息的进程监控本地磁盘中所有的配置信息。
[0019] 在另一优选实施例中,所述启动一个进程占有进程间的锁,并建立所述进程与zookeeper服务器之间的长连接,通过所述进程监控本地磁盘中所有配置信息,包括:
[0020] 启动待读取配置信息的进程占有进程间的锁;
[0021] 在所述待读取配置信息的进程中启动一个线程或者一个进程,建立所述线程或者所述进程与zookeeper服务器之间的长连接,通过所述线程或者所述进程监控本地磁盘中所有的配置信息。
[0022] 在另一优选实施例中,在所述待读取配置信息的进程中启动的一个线程为异步线程。
[0023] 第二方面,本发明提供了一种基于zookeeper的信息配置装置,所述装置包括:
[0024] 监控单元,用于启动一个进程占用进程间的锁,并建立所述进程与zookeeper服务器之间的长连接,通过所述进程监控本地磁盘中所有的配置信息;
[0025] 更新单元,用于通过所述进程根据所述更新配置信息通知从所述zookeeper服务器中获取对应的配置信息并更新到本地磁盘中。
[0026] 在另一优选实施例中,所述更新配置信息通知由所述zookeeper服务器在配置信息发生变动时向所述进程发送。
[0027] 在另一优选实施例中,所述更新到本地磁盘中的配置信息用于供待读取配置信息的进程进行查找,以读取与所述待读取配置信息的进程自身对应的配置信息。
[0028] 在另一优选实施例中,若查找到对应的配置信息,所述待读取配置信息的进程从本地磁盘中读取自身对应的配置信息,若没有查找到对应的配置信息,所述待读取配置信息的进程建立与zookeeper服务器之间的短连接,从所述zookeeper服务器中获取自身对应的配置信息并储存在本地磁盘。
[0029] 在另一优选实施例中,所述装置还包括:
[0030] 储存单元,用于将从所述zookeeper服务器中获取的对应的配置信息更新到共享内存中。
[0031] 在另一优选实施例中,所述更新到本地磁盘和共享内存中的配置信息用于供待读取配置信息的进程进行查找,以读取与所述待读取配置信息的进程自身对应的配置信息。
[0032] 在另一优选实施例中,所述待读取配置信息的进程先在共享内存中进行查找,若查找到对应的配置信息,所述待读取配置信息的进程从共享内存中读取自身对应的配置信息;若没有查找到对应的配置信息,所述待读取配置信息的进程在本地磁盘中进行查找,若查找到对应的配置信息,所述待读取配置信息的进程从本地磁盘中读取自身对应的配置信息,若没有查找到对应的配置信息,所述待读取配置信息的进程建立与zookeeper服务器之间的短连接,从所述zookeeper服务器中获取自身对应的配置信息并储存在共享内存和本地磁盘中。
[0033] 在另一优选实施例中,所述监控单元,包括:
[0034] 第一占有子单元,用于启动一个专用于监控进程配置信息的进程占有进程间的锁;
[0035] 第一监控子单元,用于建立所述专用于监控进程配置信息的进程与zookeeper服务器之间的长连接,通过所述专用监控配置信息的进程监控本地磁盘中所有的配置信息。
[0036] 在另一优选实施例中,所述监控单元,包括:
[0037] 第二占有子单元,用于启动待读取配置信息的进程占有进程间的锁;
[0038] 第二监控子单元,用于在所述待读取配置信息的进程中启动一个线程或者一个进程,建立所述线程或者所述进程与zookeeper服务器之间的长连接,通过所述线程或者所述进程监控本地磁盘中所有的配置信息。
[0039] 在另一优选实施例中,所述第二监控子单元,用于在所述待读取配置信息的进程中启动一个异步线程,建立所述异步进程与zookeeper服务器之间的一个长连接,通过所述异步进程监控所述进程间通信中所有进程的配置信息。
[0040] 由上述实施例可以看出,与现有技术相比,本发明的有益效果在于:
[0041] 通过启动一个进程占用进程间的锁,使得该进程对共享数据的修改的时间段内其他进程无法对该共享数据进行任何操作,且该进程对共享数据的操作其他进程都能够立刻知道,建立该进程与zookeeper服务器之间的长连接,通过该进程监控本地磁盘中所有的配置信息。
[0042] 根据接收到zookeeper服务器发出的更新配置信息的通知,所述进程从所述zookeeper服务器中获取对应的配置信息并更新到本地磁盘中,任意一个进程运行需要获取配置信息时,只需要去本地磁盘查找自身对应的配置信息,而无需再与zookeeper服务器之间建立长连接;若本地磁盘中没有对应的配置信息,说明该进程的相关配置信息还没有被监控,这种情况下只需与zookeeper服务器之间的建立一个短连接,从所述zookeeper服务器中获取自身配置信息并储存在本地磁盘,以使该进程的配置信息也得到监控,由于已经与zookeeper服务器之间建立了长连接的用于监控本地磁盘中所有配置信息的进程会实时或者定期扫描本地磁盘,当扫描到本地磁盘中存在该进程的配置信息,将对该进程的配置信息也进行监控,以保证实时更新该进程的配置信息。由此可见:利用本发明的方法每个服务器不需要建立每个进程与zookeeper服务器之间的长连接,而是通过利用一个进程占有进程间的锁和本地磁盘的共享,只建立一个进程与zookeeper服务器之间的长连接和最初时的短连接的方式即可保证所有进程的配置信息都得到监控,同时降低zookeeper服务器的负载。

附图说明

[0043] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
[0044] 图1是本发明实施例一种基于zookeeper的信息配置方法实施例1的流程示意图;
[0045] 图2是本发明实施例一种基于zookeeper的信息配置方法实施例2的流程示意图;
[0046] 图3是本发明实施例一种基于zookeeper的信息配置框架示意图;
[0047] 图4是现有技术的基于zookeeper的信息配置框架示意图;
[0048] 图5是本发明实施例一种基于zookeeper的信息配置装置实施例1的示意图;
[0049] 图6是本发明实施例一种基于zookeeper的信息配置装置实施例2的示意图。

具体实施方式

[0050] 为了使本技术领域的人员更好地理解本发明方案,下面结合附图和实施方式对本发明实施例作进一步的详细说明。
[0051] 参见图1,示出了图1是本发明实施例一种基于zookeeper的信息配置方法实施例1的流程示意图,所述方法包括:
[0052] 步骤101,启动一个进程占有进程间的锁,并建立所述进程与zookeeper服务器之间的长连接,通过所述进程监控本地磁盘中所有配置信息。
[0053] 进程是操作系统结构的基础,是一个正在执行的程序,服务器中任意一个进程启动运行时,都需要先读取配置信息,然后按照配置进行程序流程处理。
[0054] 本发明实施例中启动一个进程占有进程间的锁是为了实现服务器中多个进程之间共享资源,一个进程对共享数据的修改的时候,其他进程无法在同一时间对共享数据进行操作,任何一个进程对共享数据进行操作,其他进程能够立刻看到。为了实现这个目的,需要服务器系统内核提供锁,这种锁的具体实现方式是:文件锁(记录锁)、System V信号量锁(信号灯)、互斥锁、条件变量、读写锁等。文件锁、信号量锁一般用于进程间的同步,互斥锁、条件变量、读写锁一般用于线程间的同步,具体根据实际的情况决定,在此并不做具体限定。
[0055] 本步骤中启动一个进程占用进程间的锁,并建立所述进程与zookeeper服务器之间的长连接,通过所述进程监控本地磁盘中所有的配置信息,具体有两种实现方式,下面分别对这两种实现方式进行解释说明。
[0056] 第一种实现方式,可以包括:
[0057] 启动一个专用于监控进程配置信息的进程占有进程间的锁;
[0058] 建立所述专用于监控进程配置信息的进程与zookeeper服务器之间的长连接,通过所述专用于监控进程配置信息的进程监控本地磁盘中所有的配置信息。
[0059] 服务器启动一个专用于监控进程配置信息的进程,该进程只用于监控服务器中所有进程的配置信息。该进程占有进程间的锁就实现所有进程间的同步,锁的实际功能是当专用于监控进程配置信息的进程对本地磁盘中数据进行写入操作时,其他进程不能对该本地磁盘的数据进行任何操作,同样,当其他进程从本地磁盘中读取数据时,专用于监控进程配置信息的进程也不能对本地磁盘进行任何操作,因此通过占有进程间的锁来保证所有进程对本地磁盘操作的互不干扰。
[0060] 第二种实现方式,可以包括:
[0061] 启动所述待读取配置信息的进程占有进程间的锁;
[0062] 在所述待读取配置信息的进程中启动一个线程或者一个进程,建立所述线程或者所述进程与zookeeper服务器之间的长连接,通过所述线程或者所述进程监控本地磁盘中所有的配置信息。
[0063] 当服务器中一个进程需要读取配置信息时,利用这个待读取配置信息的进程占有进程间的锁,这个锁的具体作用和上面的功能一样,在此不再赘述。
[0064] 所述待读取配置信息的进程可以启动一个线程与zookeeper服务器之间的长连接,并通过该线程监控本地磁盘中所有的配置信息;也可以是,所述待读取配置信息的进程启动一个进程与zookeeper服务器之间的长连接,并通过该进程监控本地磁盘中所有的配置信息。
[0065] 为了不影响进程的主流程执行速率,不浪费系统资源,本发明实施例还提供了一种任选方案。
[0066] 作为本发明实施例一种任选方案,所述待读取配置信息的进程启动的一个线程可以为异步线程。
[0067] 由于进程与zookeeper服务器之间保持着长连接,当操作人员需要修改配置时,只需要修改zookeeper服务器上的对应的配置信息即可,当zookeeper服务器中监控的配置信息发生变动时,就会立刻向所述进程发出更新配置信息通知。
[0068] 步骤102,所述进程根据接收到的更新配置信息通知,从所述zookeeper服务器中获取对应的配置信息并更新到本地磁盘中。
[0069] 其中,所述更新配置信息通知可由所述zookeeper服务器在配置信息发生变动时向所述进程发送。所述更新到本地磁盘中的配置信息用于供待读取配置信息的进程进行查找,以读取与所述待读取配置信息的进程自身对应的配置信息。若查找到对应的配置信息,所述待读取配置信息的进程从本地磁盘中读取自身对应的配置信息;若没有查找到对应的配置信息,所述待读取配置信息的进程建立与zookeeper服务器之间的短连接,并从所述zookeeper服务器中获取自身对应的配置信息并储存在本地磁盘。
[0070] 根据所述更新配置信息通知从zookeeper服务器中获取配置信息并更新到本地磁盘中,保证本地磁盘中储存的是最新的配置信息,以使任意一个进程从所述本地磁盘读取对应的配置信息都是最新的配置信息,确保配置信息的实时更新,以保证服务器中各个进程正确执行。
[0071] 当服务器中有进程需要运行,必须先读取自身配置信息,只需要从本地磁盘中查找自身对应的配置信息。
[0072] 当没有查找到对应的配置信息时,说明当前待读取配置信息的进程的配置信息还没有被监控,因此,需要当前待读取配置信息的进程建立与zookeeper服务器之间的短连接,从所述zookeeper服务器中获取自身对应的配置信息,并储存在本地磁盘中。
[0073] 所谓短连接是与长连接相对的两种连接方式,短连接的操作步骤是:建立连接---数据传输---关闭连接。短连接的方式是在建立连接传输数据后立刻断开连接。长连接的操作步骤是:建立连接---数据传输---(一直保持连接)---数据传输----关闭连接。长连接的方式在建立连接传输数据后并不断开,这种通信连接关系一直存在。相比之下短连接方式能够节约服务器系统资源。
[0074] 与zookeeper服务器建立长连接的进程会扫描本地磁盘,当发现本地磁盘中有新的进程的配置信息时(也就是本地磁盘中存在还未被监控的配置信息时),将该配置信息加入监控内容中,保证本地磁盘中所有进程的配置信息都能够及时得到监控,以实现实时更新所有进程的配置信息。
[0075] 由上述实施例可以看出,与现有技术相比,本发明的有益效果在于:
[0076] 通过启动一个进程占用进程间的锁,使得该进程对共享数据的修改的时间段内其他进程无法对该共享数据进行任何操作,且该进程对共享数据的操作其他进程都能够立刻知道,建立该进程与zookeeper服务器之间的长连接,该进程扫描本地磁盘,以监控本地磁盘中所有的配置信息。
[0077] 根据接收到的通知从所述zookeeper服务器中获取对应的配置信息,并更新到本地磁盘中,任意一个进程运行需要获取配置信息时,只需要去本地磁盘获取对应的配置信息,而无需再与zookeeper服务器之间建立长连接;若本地磁盘中没有对应的配置信息,说明该进程的相关配置信息还没有被监控,这种情况下该进程只需建立与zookeeper服务器之间的短连接,从所述zookeeper服务器中获取自身配置信息并储存在本地磁盘,以使该配置信息也得到监控。
[0078] 由此可见:依据本发明提供的方法,每个服务器不需要建立每个进程与zookeeper服务器之间的长连接,而是利用进程间的锁和本地磁盘的共享,只建立一个进程与zookeeper服务器之间的长连接,并利用最初时的短连接方式,就能够保证所有进程的配置信息都得到监控,同时降低zookeeper服务器的负载。
[0079] 上述基于zookeeper的信息配置方法实施例1中将配置信息储存在本地磁盘中,由于进程查看本地磁盘并从中获取自身对应的配置信息的处理速率低下,导致整个服务器的进程处理性能低下,因此,本发明还提供了一种任选方案。
[0080] 参见图2,示出了本发明实施例一种基于zookeeper的信息配置方法实施例2的流程示意图,所述方法包括:
[0081] 步骤201,启动一个进程占有进程间的锁,并建立所述进程与zookeeper服务器之间的长连接,通过所述进程监控共享内存中所有配置信息。
[0082] 其中,在配置信息发生变动时,所述zookeeper服务器向所述进程发送更新配置信息通知;
[0083] 步骤202,所述进程根据接收到的更新配置信息通知,从所述zookeeper服务器中获取对应的配置信息并更新到本地磁盘和共享内存中。
[0084] 其中,所述更新到本地磁盘和共享内存中的配置信息用于供待读取配置信息的进程进行查找,以读取与所述待读取配置信息的进程自身对应的配置信息。所述待读取配置信息的进程先在共享内存中进行查找,若查找到对应的配置信息,所述待读取配置信息的进程从共享内存中读取自身对应的配置信息;若没有查找到对应的配置信息,所述待读取配置信息的进程在本地磁盘中进行查找,若查找到对应的配置信息,所述待读取配置信息的进程从本地磁盘中读取自身对应的配置信息,若没有查找到对应的配置信息,所述待读取配置信息的进程建立与zookeeper服务器之间的短连接,从所述zookeeper服务器中获取自身对应的配置信息并储存在共享内存和本地磁盘中。
[0085] 当服务器中的任意一个进程需要运行时需要先获取自身配置信息,首先查看共享内存中是否保存对应的配置信息,若没有,再查看本地磁盘中是否保存对应的配置信息,步骤202中可知任意一个进程的配置信息当保存在共享内存的同时都会保存在本地磁盘中,因此,本地磁盘和共享内存中所保存的配置信息是一致的。只需要查看其中任意一个即可,但是考虑到,共享内存中的数据可能由于某些原因造成数据丢失,而本地磁盘中的数据一般都是持久化保存的、不容易丢失。因此,将配置信息储存在本地磁盘的方式保证了配置信息的可靠性,将配置信息储存在共享内存的方式保证了系统的运行速率,提高系统性能。因此,在共享内存和本地磁盘都进行查看避免信息查看疏漏。
[0086] 与实施例1所不同的是,本实施例中在将所述配置信息储存在本地磁盘之后,还增加了将所述配置信息储存在共享内存,进程从共享内存中读取数据的速度要远远大于从本地磁盘中读取数据的速度,因此通过从共享内存中读取对应的配置信息,以提高进程配置信息的速率。
[0087] 下面以web服务器为例对上述一种基于zookeeper的信息配置方法实施例2做进一步解释说明,具体请参与图3,为本发明实施例提供的一种基于zookeeper的信息配置框架示意图。
[0088] 一个web服务器通常运行128个快速页模式(英文fast page mode,缩写fpm)进程提供服务,按照上述步骤201和步骤202,启动一个进程占用进程间的锁,并建立一个进程与zookeeper服务器之间的长连接,然后所述进程根据所述更新配置信息通知从所述zookeeper服务器中获取配置信息,并更新至本地磁盘和共享内存中,当web服务器中任意一个进程需要获取配置信息时,直接从共享内存中查找对应的配置信息,若查找到,直接获取该配置信息;若没有查找到,则通过建立与zookeeper服务器之间的短连接,以获取自身对应的配置信息,并储存在本地磁盘和共享内存中。可见,整个web服务器只需要与zookeeper服务器之间建立一个长连接,和初次获取配置信息时建立的短连接即可保证所有进程的配置信息得到监控和及时更新。
[0089] 请注意,虽然上述实施例的技术方案会将配置信息存储在共享内存和本地磁盘中,但在查找的时候也可以仅从共享内存中查找,并在没有查找到的时候直接与zookeeper服务器建立短链接来获取自身对应的配置信息,而不是继续在本地磁盘中查找。本领域的技术人员应可理解,在本发明的基本原理下,对配置信息的存储方式(位置)及查询方式(位置)可根据具体要求做不同的变化,本发明并非仅限于上述实施例中的固定方式。
[0090] 参与图4,示出的现有技术中的基于zookeeper的信息配置框架示意图,web服务器中的每个进程都必须与zookeeper服务器之间建立一个长连接,相比之下本发明实施例提供的基于zookeeper的信息配置方法,能够大幅度减少与zookeeper之间的长连接,从而在保证服务器中所有进程配置信息得到监控的同时,降低zookeeper服务器的负载。
[0091] 由上述实施例可以看出,与现有技术相比,本发明的有益效果在于:
[0092] 通过启动一个进程占有进程间的锁,并建立该进程与zookeeper服务器之间的长连接,就能够保证进程运行所使用的配置信息及时得到更新保存,降低zookeeper服务器的负载。另外,通过将配置信息储存在共享内存中,以使待读取配置信息的进程通过共享内存获取自身对应的配置信息,提高获取配置信息的速率,进而提高服务器的处理性能。
[0093] 与基于zookeeper的信息配置方法实施例1相对应,本发明实施例还提供了一种基于zookeeper的信息配置装置。
[0094] 参见图5,示出了本发明实施例一种基于zookeeper的信息配置装置实施例1的示意图,所述装置包括:监控单元301和更新单元302,下面结合该装置的工作原理进一步介绍其内部结构以及连接关系。
[0095] 监控单元301,用于启动一个进程占用进程间的锁,并建立所述进程与zookeeper服务器之间的长连接,通过所述进程监控本地磁盘中所有的配置信息;
[0096] 更新单元302,用于通过所述进程根据所述更新配置信息通知从所述zookeeper服务器中获取对应的配置信息并更新到本地磁盘中。
[0097] 其中,所述更新配置信息通知可由所述zookeeper服务器在配置信息发生变动时向所述进程发送。所述更新到本地磁盘中的配置信息用于供待读取配置信息的进程进行查找,以读取与所述待读取配置信息的进程自身对应的配置信息。若查找到对应的配置信息,所述待读取配置信息的进程从本地磁盘中读取自身对应的配置信息;若没有查找到对应的配置信息,所述待读取配置信息的进程建立与zookeeper服务器之间的短连接,并从所述zookeeper服务器中获取自身对应的配置信息并储存在本地磁盘。
[0098] 作为本发明一种任选方案,所述监控单元,包括:
[0099] 第一占有子单元,用于启动一个专用于监控进程配置信息的进程占有进程间的锁;
[0100] 第一监控子单元,用于建立所述专用于监控进程配置信息的进程与zookeeper服务器之间的长连接,通过所述专用监控配置信息的进程监控本地磁盘中所有的配置信息。
[0101] 作为本发明一种任选方案,,所述监控单元,包括:
[0102] 第二占有子单元,用于启动所述待读取配置信息的进程占有进程间的锁;
[0103] 第二监控子单元,用于在所述待读取配置信息的进程中启动一个线程或者一个进程,建立所述线程或者所述进程与zookeeper服务器之间的长连接,通过所述线程或者所述进程监控本地磁盘中所有的配置信息。
[0104] 作为本发明一种任选方案,所述第二监控子单元,所述第二监控子单元,具体用于在所述待读取配置信息的进程中启动一个异步线程,建立所述异步进程与zookeeper服务器之间的一个长连接,通过所述异步线程监控所述进程间通信中所有进程的配置信息。
[0105] 由上述实施例可以看出,本发明的有益效果在于:
[0106] 通过启动一个进程占用进程间的锁,使得该进程对共享数据的修改的时间段内其他进程无法对该共享数据进行任何操作,且该进程对共享数据的操作其他进程都能够立刻知道,建立该进程与zookeeper服务器之间的长连接,该进程扫描本地磁盘,以监控本地磁盘中所有的配置信息。
[0107] 根据接收到的通知从所述zookeeper服务器中获取对应的配置信息,并更新到本地磁盘中,任意一个进程运行需要获取配置信息时,只需要去本地磁盘获取对应的配置信息,而无需再与zookeeper服务器之间建立长连接;若本地磁盘中没有对应的配置信息,说明该进程的相关配置信息还没有被监控,这种情况下该进程只需建立与zookeeper服务器之间的短连接,从所述zookeeper服务器中获取自身配置信息并储存在本地磁盘,以使该配置信息也得到监控。
[0108] 由此可见:依据本发明提供的装置,每个服务器不需要建立每个进程与zookeeper服务器之间的长连接,而是利用进程间的锁和本地磁盘的共享,只建立一个进程与zookeeper服务器之间的长连接,并利用最初时的短连接方式,就能够保证所有进程的配置信息都得到监控的同时,降低zookeeper服务器的负载。
[0109] 与基于zookeeper的信息配置方法实施例2相对应,本发明实施例还提供了一种基于zookeeper的信息配置装置。
[0110] 参见图6,示出了本发明实施例一种基于zookeeper的信息配置装置实施例2的示意图,所述装置包括:监控单元401、更新单元402和储存单元403,下面结合该装置的工作原理进一步介绍其内部结构以及连接关系。
[0111] 监控单元401,用于启动一个进程占用进程间的锁,并建立所述进程与zookeeper服务器之间的长连接,通过所述进程监控本地磁盘中所有的配置信息。
[0112] 其中,在配置信息发生变动时,所述zookeeper服务器向所述进程发送更新配置信息通知。
[0113] 更新单元402,用于通过所述进程根据所述更新配置信息通知从所述zookeeper服务器中获取对应的配置信息并更新到本地磁盘中。
[0114] 储存单元403,用于将配置信息更新到本地磁盘或者储存在本地磁盘的同时,更新或者储存至共享内存中。
[0115] 其中,所述更新到本地磁盘和共享内存中的配置信息用于供待读取配置信息的进程进行查找,以读取与所述待读取配置信息的进程自身对应的配置信息。所述待读取配置信息的进程先在共享内存中进行查找,若查找到对应的配置信息,所述待读取配置信息的进程从共享内存中读取自身对应的配置信息;若没有查找到对应的配置信息,所述待读取配置信息的进程在本地磁盘中进行查找,若查找到对应的配置信息,所述待读取配置信息的进程从本地磁盘中读取自身对应的配置信息,若没有查找到对应的配置信息,所述待读取配置信息的进程建立与zookeeper服务器之间的短连接,从所述zookeeper服务器中获取自身对应的配置信息并储存在共享内存和本地磁盘中。
[0116] 与一种基于zookeeper的信息配置装置实施例1所不同的是,本实施例增加了储存单元,用于在将配置信息更新或者储存至本地磁盘,同时还更新或者储存至共享内存中。这样处理使得共享内存中同时也保存在所有进程的配置信息,以使所述待读取配置信息的进程从所述共享内存中读取自身对应的配置信息。
[0117] 由上述实施例可以看出,与现有技术相比,本发明的有益效果在于:
[0118] 通过启动一个进程占有进程间的锁,并建立该进程与zookeeper服务器之间的长连接,就能够保证进程运行所使用的配置信息及时得到更新保存,降低zookeeper服务器的负载。另外,通过将配置信息储存在共享内存中,以使进程通过共享内存获取配置信息,提高获取配置信息的速率,进而提高服务器的处理性能。
[0119] 本发明方案可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序单元。一般地,程序单元包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明方案,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序单元可以位于包括存储设备在内的本地和远程计算机存储介质中。
[0120] 本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0121] 以上对本发明实施例进行了详细介绍,本文中应用了具体实施方式对本发明进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及设备;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。