diamond簡述

diamond簡述 - 簡書
http://www.reibang.com/p/213c6c158815
為什么說基于數(shù)據(jù)庫做配置存儲是比較好的方案

  • 典型的多讀少寫(類似傳統(tǒng)的web服務(wù))

  • 數(shù)據(jù)庫的災(zāi)備很成熟蝉衣,master-master或者master-slave都可以

  • 基于數(shù)據(jù)庫比較容易做權(quán)限控制(不只是web界面的權(quán)限偶洋,還要防止惡意讀寫配置)
    為什么不存儲Properties文件,或者配置文件恶阴?

因為存儲多個properties文件,或者其它配置文件助泽,會造成比較混亂熬北,用戶不能直觀的得到所有的配置。即使用key沖突也不能及時的發(fā)現(xiàn)璧坟。

在XDiamond里是以key/value方式來存儲值既穆,一個項目里只有一個key/value的map,這樣清晰直觀雀鹃,所見即所得幻工。


需求
為什么需要全局配置中心?

  • 公共配置零散

比如有一個memcached集群黎茎,有多個項目同時會用到囊颅,那么對于管理者來說,他搞不清楚誰用了這個集群傅瞻。 對于使用者來說踢代,可能也不清楚一個Memcached Client對象是從哪里來的,使用的是哪個集群嗅骄。

  • 公共配置修改的問題

比如有一個memcached集群胳挎,一開始是3個結(jié)點的,后面增加到5個結(jié)點溺森。如果這個地址改變了的話慕爬,需要下游所有的應(yīng)用都要修改窑眯,耗時耗力,而且容易遺漏医窿。

  • client jar包里的配置問題

一種常見的情景是: 業(yè)務(wù)方A提供了一個client jar包伸但,業(yè)務(wù)方B想要使用業(yè)務(wù)A的功能時,先把業(yè)務(wù)方A的client jar加到依賴?yán)锪羯Γ缓筮€要import業(yè)務(wù)方A的spring配置文件更胖。 業(yè)務(wù)方A有自己的配置文件,那么業(yè)務(wù)方A要么自己隱式加載了配置隔显,要么需要業(yè)務(wù)方B顯式地為業(yè)務(wù)A增加配置却妨。這兩種方式都不理想,還可能會導(dǎo)致配置的key沖突的問題括眠。

  • client jar包升級彪标,配置需要升級的問題

業(yè)務(wù)方B使用了業(yè)務(wù)方A的client jar包,當(dāng)業(yè)務(wù)方A升級了jar掷豺,增加了配置捞烟,業(yè)務(wù)方B是否要跟著修改?這樣導(dǎo)致流程漫長当船,而且容易出錯题画。

  • 多個配置文件,導(dǎo)致混亂

項目時間長之后德频,配置文件會越來越多苍息,逐漸混亂。

  • 配置的安全問題

生產(chǎn)環(huán)境的數(shù)據(jù)庫連接信息是寫在svn里呢壹置,還是放在生產(chǎn)機器上竞思?能否明確有權(quán)限的人員才能看到敏感的配置信息?
為什么不使用zookeeper/etcd做為存儲钞护?

優(yōu)點:

  • 客戶端通過watch監(jiān)聽結(jié)節(jié)盖喷,更新比較方便

缺點:

  • 大量連接時,zookeeper壓力比較大(360通過增加一個proxy解決)

  • 跨機房同步問題

  • 權(quán)限管理

從實際的開源項目來看难咕,基于zookeeper的都沒有實現(xiàn)權(quán)限管理(如果有誤的話课梳,請告之)。如果有應(yīng)用惡意刪除了zookeeper上的配置步藕,將會是一場災(zāi)難惦界,而zookeeper通常是沒有備份的挑格。

為什么說基于數(shù)據(jù)庫做配置存儲是比較好的方案

  • 典型的多讀少寫(類似傳統(tǒng)的web服務(wù))

  • 數(shù)據(jù)庫的災(zāi)備很成熟咙冗,master-master或者master-slave都可以

  • 基于數(shù)據(jù)庫比較容易做權(quán)限控制(不只是web界面的權(quán)限,還要防止惡意讀寫配置)
    為什么不存儲Properties文件漂彤,或者配置文件雾消?

因為存儲多個properties文件灾搏,或者其它配置文件,會造成比較混亂立润,用戶不能直觀的得到所有的配置狂窑。即使用key沖突也不能及時的發(fā)現(xiàn)。

在XDiamond里是以key/value方式來存儲值桑腮,一個項目里只有一個key/value的map泉哈,這樣清晰直觀,所見即所得破讨。

XDiamond配置中心的解決方案

  • 類maven的依賴關(guān)系丛晦,抽取公共配置,通過依賴關(guān)系解決公共配置提陶,client jar配置的問題

  • 支持足夠復(fù)雜的維度烫沙,參考maven:groupId, artifactId, version(僅有g(shù)roup維度不夠)

  • 支持多種環(huán)境/profile(實際業(yè)務(wù)是復(fù)雜的,僅支持product/dev/test不夠)

  • 一個應(yīng)用只有一個最終的properties隙笆,界面所見即所得

  • 結(jié)合Spring PropertyPlaceholder 機制锌蓄,應(yīng)用輕松遷移

  • 應(yīng)用啟動時打印配置,避免隱藏加載

  • 通過權(quán)限控制撑柔,結(jié)合Secret key瘸爽,保證配置的安全

  • 配置緩存在本地,防止應(yīng)用因為網(wǎng)絡(luò)問題而不能啟動
    權(quán)限設(shè)計

  • Group里的用戶有access等級:owner, master, developer, reporter, guest

  • Profile可以設(shè)置access等級铅忿,只有owner/master的用戶才可以查看修改product環(huán)境下的配置

  • 組/用戶管理蝶糯,可以同步LDAP數(shù)據(jù)

  • 用secretkey防止惡意訪問
    XDiamond Server

  • tcp端口5678,長連接辆沦,主動推送修改的配置

  • http api

  • 配置以key/value方式保存


XDiamond Client

客戶端用以下的參數(shù)來獲取配置

  • groupId

  • artifactId

  • version

  • profile

  • secretkey(可選)

對于應(yīng)用來說昼捍,獲取到的是一個properties對象,結(jié)合Spring的PropertyPlaceholderConfigurer肢扯。

對于應(yīng)用來說妒茬,遷入遷出成本非常低。遷入只要在spring xml里增加一個Bean蔚晨,遷出可以直接改回傳統(tǒng)的加載Properties文件的方式乍钻。應(yīng)用不需要編寫任何代碼,和Spring結(jié)合非常簡單铭腕。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末银择,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子累舷,更是在濱河造成了極大的恐慌浩考,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件被盈,死亡現(xiàn)場離奇詭異析孽,居然都是意外死亡搭伤,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門袜瞬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來怜俐,“玉大人,你說我怎么就攤上這事邓尤∨睦穑” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵汞扎,是天一觀的道長殿漠。 經(jīng)常有香客問我,道長佩捞,這世上最難降的妖魔是什么绞幌? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮一忱,結(jié)果婚禮上莲蜘,老公的妹妹穿的比我還像新娘。我一直安慰自己帘营,他們只是感情好票渠,可當(dāng)我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著芬迄,像睡著了一般问顷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上禀梳,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天杜窄,我揣著相機與錄音,去河邊找鬼算途。 笑死塞耕,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的嘴瓤。 我是一名探鬼主播扫外,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼廓脆!你這毒婦竟也來了筛谚?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤停忿,失蹤者是張志新(化名)和其女友劉穎驾讲,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡蝎毡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年厚柳,在試婚紗的時候發(fā)現(xiàn)自己被綠了氧枣。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沐兵。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖便监,靈堂內(nèi)的尸體忽然破棺而出扎谎,到底是詐尸還是另有隱情,我是刑警寧澤烧董,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布毁靶,位于F島的核電站,受9級特大地震影響逊移,放射性物質(zhì)發(fā)生泄漏预吆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一胳泉、第九天 我趴在偏房一處隱蔽的房頂上張望拐叉。 院中可真熱鬧,春花似錦扇商、人聲如沸凤瘦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蔬芥。三九已至,卻和暖如春控汉,著一層夾襖步出監(jiān)牢的瞬間笔诵,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工姑子, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留嗤放,地道東北人。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓壁酬,卻偏偏與公主長得像次酌,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子舆乔,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,465評論 2 348

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理岳服,服務(wù)發(fā)現(xiàn),斷路器希俩,智...
    卡卡羅2017閱讀 134,628評論 18 139
  • 需求 為什么需要全局配置中心吊宋? - 公共配置零散 比如有一個memcached集群,有多個項目同時會用到颜武,那么對于...
    胖虎大哥閱讀 812評論 0 2
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,773評論 6 342
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,737評論 25 707
  • 今天爸爸回來了璃搜,一個多月沒看見爸爸了拖吼,看見爸爸很高興飛奔過去抱住爸爸,爸爸問他想我嗎这吻?兒子趕緊點頭說想了吊档。爸爸問他...
    小燕子_9d7e閱讀 200評論 0 2