本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種基于Zookeeper的配置更新方法及系統(tǒng)。
背景技術(shù):
ZooKeeper是一個(gè)分布式的,開放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù)系統(tǒng),它是一個(gè)為分布式應(yīng)用提供一致性服務(wù)的軟件,提供的功能包括:配置維護(hù)、名字服務(wù)、分布式同步、組服務(wù)等。一個(gè)ZooKeeper服務(wù)器可以連接多臺(tái)應(yīng)用服務(wù)器。一個(gè)應(yīng)用程序包含多個(gè)應(yīng)用程序?qū)嵗?,并且每個(gè)應(yīng)用程序示例在其中一臺(tái)應(yīng)用服務(wù)器中運(yùn)行。現(xiàn)有的基于zookeeper的信息配置方案是:每個(gè)服務(wù)器中每個(gè)進(jìn)程都要建立與zookeeper服務(wù)器之間的長(zhǎng)連接,每個(gè)進(jìn)程通過(guò)調(diào)用zookeeper服務(wù)器的接口監(jiān)控自身進(jìn)程的配置信息,當(dāng)某一個(gè)進(jìn)程的配置信息需要修改時(shí),操作人員只需要修改zookeeper服務(wù)器上相應(yīng)的配置信息,一旦發(fā)現(xiàn)zookeeper服務(wù)器的配置信息發(fā)生變動(dòng),對(duì)應(yīng)的服務(wù)器進(jìn)程及時(shí)更新自身進(jìn)程的配置信息。
disconf是一套完整的基于zookeeper的分布式配置統(tǒng)一解決方案。如圖1所示,disconf實(shí)現(xiàn)了同構(gòu)系統(tǒng)的配置發(fā)布統(tǒng)一化,提供了配置服務(wù)server,該服務(wù)可以對(duì)配置進(jìn)行持久化管理并對(duì)外提供restful接口,在此基礎(chǔ)上,基于zookeeper實(shí)現(xiàn)對(duì)配置更改的實(shí)時(shí)推送,并且,提供了穩(wěn)定有效的容災(zāi)方案,以及用戶體驗(yàn)良好的編程模型和WEB用戶管理界面。其次,實(shí)現(xiàn)了異構(gòu)系統(tǒng)的配置包管理,提出基于zookeeper的全局分布式一致性鎖來(lái)實(shí)現(xiàn)主備統(tǒng)一部署、系統(tǒng)異常時(shí)的主備自主切換。
專利號(hào)為201310472913.9的文獻(xiàn)公開了一種基于zookeeper的信息配置方法,其包括:?jiǎn)?dòng)一個(gè)進(jìn)程占有進(jìn)程間的鎖,并建立所述進(jìn)程與zookeeper服務(wù)器之間的長(zhǎng)連接,通過(guò)所述進(jìn)程監(jiān)控本地磁盤中所有配置信息,以使所述zookeeper服務(wù)器在配置信息發(fā)生變動(dòng)時(shí),向所述進(jìn)程發(fā)送更新配置信息通知;所述進(jìn)程根據(jù)接收到的更新配置信息通知,從所述zookeeper服務(wù)器中獲取對(duì)應(yīng)的配置信息并更新到本地磁盤中,以使待讀取配置信息的進(jìn)程從本地磁盤中查找自身對(duì)應(yīng)的配置信息,若查找到對(duì)應(yīng)的配置信息,所述待讀取配置信息的進(jìn)程從本地磁盤中讀取自身對(duì)應(yīng)的配置信息,若沒(méi)有查找到對(duì)應(yīng)的配置信息,所述待讀取配置信息的進(jìn)程建立與zookeeper服務(wù)器之間的短連接,從所述zookeeper服務(wù)器中獲取自身對(duì)應(yīng)的配置信息并儲(chǔ)存在本地磁盤。該方法通過(guò)啟動(dòng)一個(gè)進(jìn)程占用進(jìn)程間的鎖,使得該進(jìn)程對(duì)共享數(shù)據(jù)的修改的時(shí)間段內(nèi)其他進(jìn)程無(wú)法對(duì)該共享數(shù)據(jù)進(jìn)行任何操作,且該進(jìn)程對(duì)共享數(shù)據(jù)的操作其他進(jìn)程都能夠立刻知道,建立該進(jìn)程與zookeeper服務(wù)器之間的長(zhǎng)連接,通過(guò)該進(jìn)程監(jiān)控本地磁盤中所有的配置信息。根據(jù)接收到zookee pe r服務(wù)器發(fā)出的更新配置信息的通知,所述進(jìn)程從所述zookeeper服務(wù)器中獲取對(duì)應(yīng)的配置信息并更新到本地磁盤中,任意一個(gè)進(jìn)程運(yùn)行需要獲取配置信息時(shí),只需要去本地磁盤查找自身對(duì)應(yīng)的配置信息,而無(wú)需再與zookeeper服務(wù)器之間建立長(zhǎng)連接;若本地磁盤中沒(méi)有對(duì)應(yīng)的配置信息,說(shuō)明該進(jìn)程的相關(guān)配置信息還沒(méi)有被監(jiān)控,這種情況下只需與zookeeper服務(wù)器之間的建立一個(gè)短連接,從所述zookeeper服務(wù)器中獲取自身配置信息并儲(chǔ)存在本地磁盤,以使該進(jìn)程的配置信息也得到監(jiān)控,由于已經(jīng)與zookeeper服務(wù)器之間建立了長(zhǎng)連接的用于監(jiān)控本地磁盤中所有配置信息的進(jìn)程會(huì)實(shí)時(shí)或者定期掃描本地磁盤,當(dāng)掃描到本地磁盤中存在該進(jìn)程的配置信息,將對(duì)該進(jìn)程的配置信息也進(jìn)行監(jiān)控,以保證實(shí)時(shí)更新該進(jìn)程的配置信息。由此可見:利用本發(fā)明的方法每個(gè)服務(wù)器不需要建立每個(gè)進(jìn)程與zookeeper服務(wù)器之間的長(zhǎng)連接,而是通過(guò)利用一個(gè)進(jìn)程占有進(jìn)程間的鎖和本地磁盤的共享,只建立一個(gè)進(jìn)程與zookeeper服務(wù)器之間的長(zhǎng)連接和最初時(shí)的短連接的方式即可保證所有進(jìn)程的配置信息都得到監(jiān)控,同時(shí)降低zookeeper服務(wù)器的負(fù)載。
上述方法雖然降低了zookeeper服務(wù)器的負(fù)載,但本發(fā)明人發(fā)現(xiàn),在云服務(wù)的環(huán)境下,現(xiàn)在大部分公司都采用了云服務(wù)架構(gòu)來(lái)部署應(yīng)用;同時(shí)在實(shí)際開發(fā)過(guò)程中系統(tǒng)會(huì)存在開發(fā)環(huán)境、測(cè)試環(huán)境、聯(lián)調(diào)環(huán)境、演練環(huán)境、灰度環(huán)境、線上環(huán)境等不同的系統(tǒng)運(yùn)行環(huán)境,而考慮到安全問(wèn)題,一般情況下這些環(huán)境在云服務(wù)的架構(gòu)體系下都是網(wǎng)絡(luò)隔離的,這樣上述公開的方法和disconf解決方案都無(wú)法滿足多環(huán)境下應(yīng)用的配置需求。
NOS(Netease Object Storage)致力于提供最優(yōu)質(zhì)的對(duì)象存儲(chǔ)以及基于存儲(chǔ)的富媒體和上下行加速服務(wù),一站式解決移動(dòng)互聯(lián)網(wǎng)時(shí)代非結(jié)構(gòu)數(shù)據(jù)管理難題,助力產(chǎn)品方實(shí)現(xiàn)最佳用戶體驗(yàn)。NOS的應(yīng)用場(chǎng)景有:靜態(tài)網(wǎng)站或者網(wǎng)站的靜態(tài)數(shù)據(jù);圖片、音頻、視頻類APP;視頻播放類業(yè)務(wù);網(wǎng)盤等UGC類業(yè)務(wù);文件備份和中轉(zhuǎn)類業(yè)務(wù);日志歸檔類業(yè)務(wù);SNS類業(yè)務(wù)的非結(jié)構(gòu)化數(shù)據(jù)解決方案;基于存儲(chǔ)的上下行加速類業(yè)務(wù)等。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的之一在于提供一種基于Zookeeper的配置更新方法,解決目前使用disconf做為配置管理中遇到多環(huán)境重復(fù)配置、手工干預(yù)多、容易出錯(cuò)等問(wèn)題。
本發(fā)明的發(fā)明目的之二在于提供一種基于Zookeeper的配置更新系統(tǒng),通過(guò)引入NOS(Netease Object Storage),解決目前存在的不同環(huán)境之間網(wǎng)絡(luò)隔離的問(wèn)題。
本發(fā)明的技術(shù)方案為,一種基于Zookeeper的配置文件更新方法,包括:通過(guò)網(wǎng)絡(luò)連接的ZooKeeper、統(tǒng)一配置管理平臺(tái)、disconf配置中心和NOS;首先,獲取研發(fā)人員申請(qǐng)上線的申請(qǐng)信息,如果所述研發(fā)人員的申請(qǐng)信息經(jīng)所述統(tǒng)一配置管理平臺(tái)審批通過(guò),則生成配置文件,所述配置文件通過(guò)所述統(tǒng)一配置管理平臺(tái)上傳到所述NOS,在所述NOS中,所述配置文件按照不同環(huán)境、不同產(chǎn)品線及不同應(yīng)用存儲(chǔ)。
進(jìn)一步地,在每個(gè)環(huán)境中,都配置一個(gè)agent,所述agent定時(shí)去所述NOS中獲取對(duì)應(yīng)的配置文件,獲取完成后,自動(dòng)將所述NOS中的配置文件刪除。
進(jìn)一步地,所述agent在獲取到對(duì)應(yīng)的配置文件后,修改所述disconf配置中心的配置表。
進(jìn)一步地,所述disconf配置中心將更新后的配置文件發(fā)送到對(duì)應(yīng)的zookeeper。
進(jìn)一步地,當(dāng)網(wǎng)絡(luò)中與所述zookeeper相連的應(yīng)用監(jiān)聽到所述zookeeper的節(jié)點(diǎn)數(shù)據(jù)變化,則自動(dòng)更新其相應(yīng)的配置文件。
一種基于Zookeeper的配置文件更新系統(tǒng),包括:通過(guò)網(wǎng)絡(luò)連接的ZooKeeper、統(tǒng)一配置管理平臺(tái)、disconf配置中心和NOS;首先,獲取研發(fā)人員申請(qǐng)上線的申請(qǐng)信息,如果所述研發(fā)人員的申請(qǐng)信息經(jīng)所述統(tǒng)一配置管理平臺(tái)審批通過(guò),則生成配置文件,所述配置文件通過(guò)所述統(tǒng)一配置管理平臺(tái)上傳到所述NOS,在所述NOS中,所述配置文件按照不同環(huán)境、不同產(chǎn)品線及不同應(yīng)用存儲(chǔ)。
進(jìn)一步地,在每個(gè)環(huán)境中,都配置一個(gè)agent,所述agent定時(shí)去所述NOS中獲取對(duì)應(yīng)的配置文件,獲取完成后,自動(dòng)將所述NOS中的配置文件刪除。
進(jìn)一步地,所述agent在獲取到對(duì)應(yīng)的配置文件后,修改所述disconf配置中心的配置表。
進(jìn)一步地,所述disconf配置中心將更新后的配置文件發(fā)送到對(duì)應(yīng)的zookeeper。
進(jìn)一步地,當(dāng)網(wǎng)絡(luò)中與所述zookeeper相連的應(yīng)用監(jiān)聽到所述zookeeper的節(jié)點(diǎn)數(shù)據(jù)變化,則自動(dòng)更新其相應(yīng)的配置文件。
本發(fā)明的技術(shù)方案的有益效果在于:第一、雖然各個(gè)環(huán)境在云服務(wù)的架構(gòu)體系下都是網(wǎng)絡(luò)隔離,但本發(fā)明通過(guò)引入全網(wǎng)聯(lián)通的NOS,使得各個(gè)環(huán)境下的配置信息都能通過(guò)NOS進(jìn)行存儲(chǔ)和更新,解決了現(xiàn)有技術(shù)和disconf配置中心無(wú)法滿足多環(huán)境下應(yīng)用的配置需求的問(wèn)題。
第二、本發(fā)明創(chuàng)造性的在各個(gè)環(huán)境中,都配置一個(gè)agent,所述agent定時(shí)去所述NOS中獲取對(duì)應(yīng)的配置文件,獲取完成后在所述NOS中刪除該配置文件;所述agent在獲取到對(duì)應(yīng)的配置文件后,修改所述disconf配置中心的配置表;所述disconf配置中心將更新后的配置文件發(fā)送到對(duì)應(yīng)的zookeeper上;當(dāng)網(wǎng)絡(luò)中與所述zookeeper相連的應(yīng)用監(jiān)聽到所述zookeeper的節(jié)點(diǎn)數(shù)據(jù)變化,則自動(dòng)更新網(wǎng)絡(luò)中相應(yīng)的配置文件。這樣原來(lái)網(wǎng)絡(luò)隔離了的配置文件都能進(jìn)行存儲(chǔ)和更新,解決了現(xiàn)有技術(shù)和disconf配置中心無(wú)法滿足網(wǎng)絡(luò)隔離條件下應(yīng)用的配置需求的問(wèn)題。
附圖說(shuō)明
圖1為本發(fā)明背景技術(shù)disconf配置中心的結(jié)構(gòu)示意圖;
圖2為本發(fā)明的結(jié)構(gòu)示意圖;
圖3為本發(fā)明的流程示意圖。
具體實(shí)施方式
以下結(jié)合附圖和實(shí)施例對(duì)本發(fā)明的技術(shù)方案作詳細(xì)說(shuō)明。
如圖2和圖3所示,一種基于Zookeeper的配置文件更新方法,包括:通過(guò)網(wǎng)絡(luò)連接的ZooKeeper、統(tǒng)一配置管理平臺(tái)、disconf配置中心和NOS;首先,獲取研發(fā)人員申請(qǐng)上線的申請(qǐng)信息,如果所述研發(fā)人員的申請(qǐng)信息經(jīng)所述統(tǒng)一配置管理平臺(tái)審批通過(guò),則生成配置文件,所述配置文件通過(guò)所述統(tǒng)一配置管理平臺(tái)上傳到所述NOS,在所述NOS中,所述配置文件按照不同環(huán)境、不同產(chǎn)品線及不同應(yīng)用存儲(chǔ)。
進(jìn)一步地,在每個(gè)環(huán)境中,都配置一個(gè)agent,所述agent每隔三分鐘去所述NOS中獲取對(duì)應(yīng)的配置文件,獲取完成后,自動(dòng)將所述NOS中的配置文件刪除。
進(jìn)一步地,所述agent在獲取到對(duì)應(yīng)的配置文件后,修改所述disconf配置中心的配置表。
進(jìn)一步地,所述disconf配置中心將更新后的配置文件發(fā)送到對(duì)應(yīng)的zookeeper。
進(jìn)一步地,當(dāng)網(wǎng)絡(luò)中與所述zookeeper相連的應(yīng)用監(jiān)聽到所述zookeeper的節(jié)點(diǎn)數(shù)據(jù)變化,則自動(dòng)更新其相應(yīng)的配置文件。
以上的描述僅僅涉及本發(fā)明的一些具體實(shí)施方式,任何本領(lǐng)域的技術(shù)人員基于本發(fā)明的精神所做的替換或改進(jìn)均應(yīng)為本發(fā)明的保護(hù)范圍所涵蓋,本發(fā)明的保護(hù)范圍應(yīng)以權(quán)利要求書為準(zhǔn)。