基于zookeeper的web集群配置管理方案

在web項目中都會有一些配置信息,如appkey、IP白名單等。這些配置信息數(shù)量少,一般會保存到內(nèi)存、文件或者數(shù)據(jù)庫。有的時候需要動態(tài)更新這些配置。當(dāng)需要在多個應(yīng)用服務(wù)器中修改這些配置文件的時候,需要做到快速、簡單、不停止應(yīng)用服務(wù)器的方式修改并同步配置信息到所有應(yīng)用中去。

可用的的web集群配置方案

  • 將配置信息保存在程序代碼中,這種方式非常簡單,但是每次更新配置的時候都要修改該代碼,重新編譯,部署應(yīng)用。顯然這個方案很不方便,也不可靠,無法做到袖帶的實時生效。對于某些業(yè)務(wù)需要頻繁的修改配置,這樣就很不合適了。
  • 將配置信息保存在屬性文件中。當(dāng)需要修改配置的時候,直接修改屬性文件,這樣不需要重新編譯,只需要重新部署修改的文件按即可。這個方案如果集群內(nèi)的機器非常多的話,這簡直就是一個噩夢。
  • 將配置信息保存在數(shù)據(jù)庫中,或者再從數(shù)據(jù)庫加載到緩存中,當(dāng)需要修改配置的時候,直接修改數(shù)據(jù)庫,如果還同時使用了緩存的話,需要再將更新后的配置加載到緩存中,這種做法比上面那種要簡單,但是面臨著單點失效問題。如果數(shù)據(jù)庫宕機了,就不能更新配置。

基于Zookeeper的集群配置管理方案

直接將配置信息保存在Zookeeper中,或者把屬性文件內(nèi)容保存到Zookeeper,當(dāng)屬性文件內(nèi)容發(fā)生變化時,就通知web應(yīng)用去重新讀取配置文件。

這里采用的是Zookeeper的發(fā)布與訂閱模式,就是發(fā)布者將數(shù)據(jù)發(fā)布到Zookeeper的節(jié)點上,供訂閱者獲取數(shù)據(jù),實現(xiàn)配置信息的集中式管理和動態(tài)更新。使用場景:應(yīng)用在啟動的時候會主動來獲取一次配置,同時,在節(jié)點上注冊一個watcher,這樣一來,以后每次配置有更新的時候,都會實時通知到訂閱的客戶端,從而獲取最新的配置信息。這樣的場景適合數(shù)據(jù)量很小,但是數(shù)據(jù)更新可能比較快的需求。

基于Zookeeper的集群配置管理方案優(yōu)點

借助Zookeeper實現(xiàn)的配置信息管理方案有如下優(yōu)點:

  1. 簡單。修改配置的整個過程變的非常簡單,用戶只需要修改配置,無需進(jìn)行其他任何操作,配置自動生效
  2. 可靠。Zookeeper服務(wù)集群具有無單點失效的特性,使整個系統(tǒng)更加可靠。即使Zookeeper集群中的一臺機器失效,也不會影響整體服務(wù),更不會影響應(yīng)用配置的更新
  3. 實時。Zookeeper的數(shù)據(jù)更新通知機制,可以在數(shù)據(jù)發(fā)生變化后,立即通知給分布式應(yīng)用程序,具有很強的變化響應(yīng)能力。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容