国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

ZooKeeper做為應(yīng)用系統(tǒng)參數(shù)配置服務(wù)的實(shí)踐

Gu_Yan / 1208人閱讀

摘要:配置之痛與解決之道當(dāng)有很多項(xiàng)目需要你來(lái)不停的向集成測(cè)試和生產(chǎn)環(huán)境發(fā)時(shí)配置文件的差異性會(huì)造成很大的困撓一方面你不希望把敏感信息到處保存另一方面會(huì)大量的地址信息需要配置每個(gè)引入的第三方都需要配置往往不同環(huán)境的還都不一樣一旦搞錯(cuò)了輕則項(xiàng)目起不來(lái)

配置之痛與解決之道

當(dāng)有很多項(xiàng)目需要你來(lái)不停的向集成,測(cè)試和生產(chǎn)環(huán)境發(fā)時(shí), 配置文件的差異性會(huì)造成很大的困撓.
一方面你不希望把敏感信息到處保存. 另一方面會(huì)大量的地址信息,url,api-key,username/password需要配置. 每個(gè)引入的第三方api都需要配置, 往往不同環(huán)境的還都不一樣. 一旦搞錯(cuò)了,輕則項(xiàng)目起不來(lái),重則數(shù)據(jù)搞亂. 總之,頭疼得很.

把這一切交給zookeeper, 讓項(xiàng)目只有zookeeper的連接,其他找zookeeper要, 不失為一個(gè)解決辦法.
如果將zookeeper寫(xiě)入hosts文件或dns服務(wù), 則完全有可能實(shí)現(xiàn)應(yīng)用零配置發(fā)布. 而zookeeper有完整的分布管理,權(quán)限管理等解決方案, 真正的開(kāi)箱可用.

commons-configuration介紹

項(xiàng)目主頁(yè)

commons-configuration包解決的是項(xiàng)目配置參數(shù)集中管理的問(wèn)題.
配置參數(shù)可能來(lái)自于不同渠道,操作系統(tǒng)環(huán)境變量,JVM啟動(dòng)參數(shù),各種配置文件,數(shù)據(jù)庫(kù),web.xml中的應(yīng)用初始化參數(shù)和servlet初始參數(shù)等等. 通過(guò)統(tǒng)的一接口,為應(yīng)用程序屏避這個(gè)細(xì)節(jié)上的差異,同時(shí)保持多種渠道完成應(yīng)用配置的靈活性.同時(shí)增加緩存功能, 減少參數(shù)獲取的時(shí)間延遲.

cofiguration接口實(shí)現(xiàn)類的繼承關(guān)系

commons-configuration-zookeeper擴(kuò)展介紹

github上有三個(gè)類似的項(xiàng)目
針對(duì)的是不同版本的commons-configuration

擴(kuò)展模塊主頁(yè),與commons-configuration 1.10整合, 本文以此為例.

簡(jiǎn)單整合
這個(gè)只接實(shí)現(xiàn)的Configuration接口,把節(jié)點(diǎn)路徑做為key,節(jié)點(diǎn)data做為value.
可以對(duì)屬性進(jìn)行回寫(xiě),支持不同數(shù)據(jù)類型,是一個(gè)不錯(cuò)的輕量級(jí)的方案.缺點(diǎn)是不能對(duì)zookeeper數(shù)據(jù)修改做出反應(yīng).

commons-configuration2.0整合
這個(gè)項(xiàng)目master上沒(méi)有發(fā)布,develope分支上有代碼,沒(méi)有構(gòu)建好的庫(kù)到maven庫(kù).
直接使用會(huì)有些不方便.

pudn上也有一個(gè) http://www.pudn.com/Download/...
但沒(méi)有積分了, 下載不下來(lái),也就當(dāng)沒(méi)看見(jiàn)了.

擴(kuò)展以zookeeper的數(shù)據(jù)樹(shù)為來(lái)源,看成類似的分布式的文件系統(tǒng),讀取某個(gè)節(jié)點(diǎn)的數(shù)據(jù),
通過(guò)Properties的文本鍵值對(duì)格式或XML格式進(jìn)行解析并緩存在內(nèi)存中, 在遠(yuǎn)程數(shù)據(jù)沒(méi)有變化時(shí),后續(xù)的getProperty讀取的是本地緩存,如果遠(yuǎn)程數(shù)據(jù)發(fā)生改變, 緩存會(huì)觸發(fā)更新,后續(xù)讀取getProperty會(huì)得到新的數(shù)據(jù).

值得說(shuō)明的是setProperty與getProperty并不對(duì)稱. 你設(shè)置的值僅在本地緩存里發(fā)生改變,并沒(méi)有真正持久化到遠(yuǎn)程的zookeeper.這與DatabaseConfiguration的行為是不一樣的,只有DatabaseConfiguration是真正持久化的.

通過(guò)zookeeper獲得動(dòng)態(tài)屬性與Spring進(jìn)行整合

為spring bean的PropertyPlaceHolder賦值

可以硬編碼實(shí)現(xiàn),但這樣顯然不好 ;), 但好處是少引入兩個(gè)包(spring-context, spring-context-support),因?yàn)椴恍枰狝pplicationContext, 只要BeanFactory即可.

     Properties p =
             Config.getZooProperties(ZK_CONFIG_SPRING_PATH);
             PropertyPlaceholderConfigurer cfg = new
             PropertyPlaceholderConfigurer();
             cfg.setProperties(p);
             cfg.postProcessBeanFactory(m_oXMLlBeanFactory);

可以用注解的方式, 但對(duì)spring3.1的項(xiàng)目不太友好.
XML是經(jīng)典的方式, 讓我們來(lái)試試

先定義的個(gè)類,繼承BeanFactoryPostProcessor

public class MyBeanFactoryPostProcessor implements BeanFactoryPostProcessor {  

    private static final String ZK_CONFIG_SPRING_PATH="default";
    private String path=ZK_CONFIG_SPRING_PATH;
    public void setPath(String path){this.path=path;}
    
    @Override
    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {  
       
        Properties p  = Config.getZooProperties(path);
        PropertyPlaceholderConfigurer cfg = new PropertyPlaceholderConfigurer();
        cfg.setProperties(p);
        cfg.postProcessBeanFactory(beanFactory);     
    }  
  
}  

再在XML聲明一行

    
    
    

這樣做的好處是path變得可配置. 而不是硬編碼進(jìn)去,在同時(shí)運(yùn)行多個(gè)應(yīng)用時(shí),易于解決沖突問(wèn)題.

可視化工具zookeeper-inspector

這個(gè)也有幾個(gè)不同的版本
我用的是這個(gè)
https://github.com/zzhang5/zo...

雖然在github上星多,但也是有幾年沒(méi)有更新了,還好,對(duì)我的一些需求來(lái)說(shuō)足夠好了.
可以可視化展示所有節(jié)點(diǎn)和數(shù)據(jù),能編輯修改文本節(jié)點(diǎn)和數(shù)據(jù). 遺憾的是沒(méi)有備份和恢復(fù)功能.

下載后通過(guò)maven構(gòu)建一下就可以用了.
不過(guò)有個(gè)小問(wèn)題就是新版本的Mac OS (High Sierra / Java 8)下Java路徑判斷有問(wèn)題

把pom.xml中的appassemble-maven-plugin的版本升級(jí)至2.0.0就可以了

diff --git a/pom.xml b/pom.xml
index 9e80d00..26b38be 100644
--- a/pom.xml
+++ b/pom.xml
@@ -67,7 +67,7 @@
       
         org.codehaus.mojo
         appassembler-maven-plugin
-        1.1.1
+        2.0.0
         
           
             .sh
備份與維護(hù)

zookeeper官方說(shuō)法是拷貝datadir下的文件和binlog日志. 我也沒(méi)有找到太好的方法, 誰(shuí)知道給留個(gè)言.

項(xiàng)目源碼

說(shuō)了半天,沒(méi)有源碼就太不厚道了. 所以呢, 猛擊此處下載 , 加不加星,就不強(qiáng)求了, 但有bug一定要反饋喲!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/68482.html

相關(guān)文章

  • 數(shù)人云工程師手記 | 雙劍合璧,分布式部署兩步走

    摘要:今天小數(shù)給大家?guī)?lái)的是數(shù)人云工程師金燁的分享,有關(guān)于自動(dòng)快速部署服務(wù)相關(guān)組件的一些實(shí)踐。當(dāng)與相遇,雙劍合璧,一切變得如此簡(jiǎn)單有趣。通過(guò)將服務(wù)注冊(cè)到來(lái)做健康檢查。 今天小數(shù)給大家?guī)?lái)的是數(shù)人云工程師金燁的分享,有關(guān)于自動(dòng)快速部署DCOS服務(wù)相關(guān)組件的一些實(shí)踐。當(dāng)Ansible與Docker相遇,雙劍合璧,一切變得如此簡(jiǎn)單有趣。 本次分享將包括以下內(nèi)容: 云平臺(tái)部署使用的服務(wù)、組件 Do...

    Jonathan Shieber 評(píng)論0 收藏0
  • ZooKeeper 概念與基礎(chǔ)

    摘要:由于分布式系統(tǒng)和應(yīng)用可以提供更強(qiáng)的計(jì)算能力,還能更好地容災(zāi)和擴(kuò)展,所以逐漸受到青睞。基礎(chǔ)由若干條指令組成,用于完成特定功能的過(guò)程稱為原語(yǔ)。 信息飛速膨脹,很多應(yīng)用無(wú)法依賴單個(gè)服務(wù)器處理龐大的數(shù)據(jù)量。由于分布式系統(tǒng)和應(yīng)用可以提供更強(qiáng)的計(jì)算能力,還能更好地容災(zāi)和擴(kuò)展,所以逐漸受到青睞。 在開(kāi)發(fā)分布式應(yīng)用時(shí),通常需要花費(fèi)大量時(shí)間和精力來(lái)處理異構(gòu)系統(tǒng)中的協(xié)作通信問(wèn)題。 什么是 ZooKeepe...

    endless_road 評(píng)論0 收藏0
  • QConf搭建配置中心

    摘要:今天來(lái)跟大家分享的是奇虎開(kāi)源的配置中心。容錯(cuò)當(dāng)進(jìn)程死掉,網(wǎng)絡(luò)終端,機(jī)器重啟等異常情況發(fā)生時(shí),我們希望能盡可能的提供可靠的配置獲取服務(wù)。配置更新及時(shí)可以秒級(jí)同步到所有客戶端機(jī)器。本身是沒(méi)有的恭喜你,你已經(jīng)構(gòu)建完自己的配置中心了。 今天來(lái)跟大家分享的是奇虎360開(kāi)源的 QConf 配置中心。 為什么我們需要做這么一件事情? 因?yàn)橛龅搅耍?dāng)業(yè)務(wù)分布較廣,配置分布較廣的時(shí)候,就會(huì)很容易地出現(xiàn)一...

    JiaXinYi 評(píng)論0 收藏0
  • zookeeper和etcd有狀態(tài)服務(wù)部署實(shí)踐

    摘要:二總結(jié)使用的和的,能夠很好的支持這樣的有狀態(tài)服務(wù)部署到集群上。部署方式有待優(yōu)化本次試驗(yàn)中使用靜態(tài)方式部署集群,如果節(jié)點(diǎn)變遷時(shí),需要執(zhí)行等命令手動(dòng)配置集群,嚴(yán)重限制了集群自動(dòng)故障恢復(fù)擴(kuò)容縮容的能力。 一. 概述 kubernetes通過(guò)statefulset為zookeeper、etcd等這類有狀態(tài)的應(yīng)用程序提供完善支持,statefulset具備以下特性: 為pod提供穩(wěn)定的唯一的...

    dingda 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<