服務(wù)拆分-變更孤島

變更孤島

1 定義

變更孤島爽蝴,是一種創(chuàng)建可演化的架構(gòu)的模式沐批。其主旨是將大型系統(tǒng)分割成多個獨立可替換的部分纫骑,這些可替換的部分在之后的架構(gòu)演化中逐步替代以適合的架構(gòu)形態(tài),針對可替代性而不是可重用性設(shè)計九孩。

2 上下文和問題

在構(gòu)建系統(tǒng)的時候先馆,不一定從一開始就能設(shè)計出合適的架構(gòu)。此時需要先構(gòu)建一個初始的架構(gòu)躺彬,并使其能隨對系統(tǒng)理解的加深而逐步進行演化煤墙。

3 解決方案

對于上述可演化的架構(gòu),存在一種構(gòu)建方法宪拥,使用此方法構(gòu)建的架構(gòu)具有適應(yīng)性仿野,能夠在特定的時間點轉(zhuǎn)換為合設(shè)的架構(gòu)。這種構(gòu)建方法需要遵循以下的原則:

  • 將大型的系統(tǒng)分割成“變更孤島”

  • 針對可替代性進行設(shè)計她君,而不是可重用性

  • 最小化共享依賴脚作,重點關(guān)注自治和冗余,而不是重用

先將系統(tǒng)按變更作用的范圍進行大粒度的劃分缔刹,劃分出的各個部分的變更僅影響系統(tǒng)內(nèi)部球涛,而不會影響彼此。此時劃分的部分稱為“變更孤島”校镐。之后的架構(gòu)演進亿扁,圍繞替換這些變更孤島,而不是重用或者重構(gòu)這些變更孤島來進行鸟廓。即設(shè)計出提供某個孤島相同能力的子系統(tǒng)時魏烫,對此孤島進行替換。

而對于子系統(tǒng)肝箱,也可采用這種方式進一步進行變更孤島的劃分哄褒、替換,直到系統(tǒng)的架構(gòu)全部清晰煌张。

由于劃分的孤島彼此耦合很小呐赡,功能內(nèi)聚,可到達最小化共享依賴的目的骏融。因此對孤島進行冗余链嘀、替代都非常容易。這樣可方便的對某個孤島的架構(gòu)和實現(xiàn)進行實驗档玻,一旦失敗也可以方便的回退到原架構(gòu)怀泊。

比如,在服務(wù)的劃分中误趴,經(jīng)常會劃分成前端服務(wù)霹琼、業(yè)務(wù)邏輯服務(wù)和數(shù)據(jù)服務(wù),它們之間的調(diào)用關(guān)系如下:

三層邏輯關(guān)系.png

前端服務(wù)、業(yè)務(wù)邏輯服務(wù)枣申、數(shù)據(jù)服務(wù)都是功能內(nèi)聚的部分售葡,可作為變更孤島,即他們內(nèi)部的變更在內(nèi)部消化忠藤,不影響到使用方挟伙。但如果直接按調(diào)用關(guān)系組織這些服務(wù),是無法達到變更孤島的架構(gòu)目標(biāo)的模孩,因為前端服務(wù)使用了業(yè)務(wù)邏輯服務(wù)尖阔,會受業(yè)務(wù)邏輯服務(wù)變更的影響;而業(yè)務(wù)邏輯服務(wù)使用了數(shù)據(jù)服務(wù)榨咐,又會受數(shù)據(jù)服務(wù)變更的影響介却。這種架構(gòu)是無法實現(xiàn)不同“孤島”間的松耦合的。

從長期來看祭芦,業(yè)務(wù)邏輯的變化比數(shù)據(jù)存儲技術(shù)和前端技術(shù)的變化慢得多筷笨,依賴應(yīng)向著更穩(wěn)定的方向憔鬼,因此前端服務(wù)和數(shù)據(jù)服務(wù)依賴業(yè)務(wù)邏輯服務(wù)是合理的龟劲。而數(shù)據(jù)服務(wù)、前端服務(wù)應(yīng)該是能隨需求的變化或技術(shù)的迭代轴或,快速變更的昌跌。這樣,我們通過依賴反轉(zhuǎn)方法照雁,將業(yè)務(wù)邏輯服務(wù)對數(shù)據(jù)服務(wù)的依賴關(guān)系反向蚕愤。如下圖:

依賴反轉(zhuǎn).png

按這種方式進行調(diào)整之后,業(yè)務(wù)邏輯服務(wù)只依賴抽象的數(shù)據(jù)接口饺蚊,而不再依賴具體的數(shù)據(jù)服務(wù)了萍诱。而數(shù)據(jù)服務(wù)只要實現(xiàn)數(shù)據(jù)接口,無論內(nèi)部怎樣變更污呼,替換成哪種實現(xiàn)技術(shù)裕坊,都可以支撐業(yè)務(wù)邏輯服務(wù),并且這種變化不會被業(yè)務(wù)邏輯服務(wù)感知燕酷。

而業(yè)務(wù)邏輯服務(wù)只要對前端服務(wù)提供的接口不變籍凝,也可以有效的對前端服務(wù)屏蔽變化。這樣苗缩,前端服務(wù)饵蒂、業(yè)務(wù)邏輯服務(wù)、數(shù)據(jù)服務(wù)就能達成變更孤島的架構(gòu)目標(biāo)了酱讶。

下面擴展一下業(yè)務(wù)邏輯服務(wù)和數(shù)據(jù)服務(wù)之間的關(guān)系退盯。在實際的系統(tǒng)設(shè)計中,經(jīng)常出現(xiàn)多個業(yè)務(wù)邏輯服務(wù)都使用數(shù)據(jù)服務(wù)的情形,直接的調(diào)用關(guān)系如下圖:

兩個服務(wù)依賴數(shù)據(jù)服務(wù).png

這種架構(gòu)中得问,數(shù)據(jù)服務(wù)被業(yè)務(wù)服務(wù)A和B重用(共享)囤攀,但卻使業(yè)務(wù)服務(wù)A、業(yè)務(wù)服務(wù)B和數(shù)據(jù)服務(wù)產(chǎn)生了強耦合:不但讓業(yè)務(wù)服務(wù)A宫纬、業(yè)務(wù)服務(wù)B都感知了數(shù)據(jù)服務(wù)的變化焚挠,而且從業(yè)務(wù)服務(wù)A出發(fā)產(chǎn)生的數(shù)據(jù)服務(wù)變更也會被業(yè)務(wù)服務(wù)B感知,業(yè)務(wù)服務(wù)B不得不因為業(yè)務(wù)服務(wù)A的變更而變更漓骚。

從架構(gòu)層面來看蝌衔,對服務(wù)的重用越多,服務(wù)間的耦合就會越重蝌蹂。重用并非服務(wù)間良好的組織方式噩斟。如果從變更孤島的思路來思考,業(yè)務(wù)服務(wù)A和業(yè)務(wù)服務(wù)B看數(shù)據(jù)服務(wù)孤个,都應(yīng)該是可替換的剃允。可以采用依賴反轉(zhuǎn)將重用使用關(guān)系改變齐鲤。如下圖:

依賴反轉(zhuǎn)2.png

在這種關(guān)系下斥废,業(yè)務(wù)服務(wù)A和業(yè)務(wù)服務(wù)B都不再依賴數(shù)據(jù)服務(wù),而是依賴彼此定義的抽象數(shù)據(jù)接口给郊。數(shù)據(jù)服務(wù)的變更可封閉在數(shù)據(jù)服務(wù)內(nèi)部牡肉。而且,可以為業(yè)務(wù)服務(wù)A和業(yè)務(wù)服務(wù)B使用不同的數(shù)據(jù)服務(wù)實現(xiàn)淆九,增強了系統(tǒng)的擴展性统锤。這就是針對替代性而不是可重用性進行設(shè)計的意義所在。如下圖:

變更孤島.png

4 優(yōu)點

  • 架構(gòu)中的部件功能內(nèi)聚炭庙,彼此松耦合饲窿,可逐步演進;

  • 系統(tǒng)各個部分可方便的替換焕蹄、回退逾雄,利于實驗性特性的實現(xiàn),比如A/B測試擦盾;

  • 復(fù)雜系統(tǒng)架構(gòu)演進時嘲驾,可劃分成多個變更孤島各自進行架構(gòu)演進。由于孤島之間互不干擾迹卢,因此系統(tǒng)演進可從容地分階段辽故、分層次地開展。

  • 由于孤島可替代腐碱,而不是被依賴誊垢,這種架構(gòu)符合依賴倒置原則(DIP)掉弛,有利于將具體技術(shù)決策延后,增強架構(gòu)對變化的適應(yīng)性喂走。

5 問題和注意事項

一開始的劃分不宜粒度太細殃饿。孤島的劃分時,優(yōu)先從現(xiàn)有功能可替代角度思考芋肠。避免一開始就被架構(gòu)是否優(yōu)美乎芳、部件如何共享如何重用等無關(guān)功能解耦的問題束縛住手腳。

6 應(yīng)用場景

  • 對大型系統(tǒng)進行微服務(wù)劃分帖池,但初期無法完全理解系統(tǒng)奈惑,不能細粒度的劃分微服務(wù)時;

  • 將現(xiàn)有大型系統(tǒng)遷移至微服務(wù)架構(gòu)睡汹,存在某些因素?zé)o法判斷微服務(wù)拆分是否合理時肴甸,可采用這種可演化的架構(gòu)方式;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末囚巴,一起剝皮案震驚了整個濱河市原在,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌彤叉,老刑警劉巖庶柿,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異姆坚,居然都是意外死亡澳泵,警方通過查閱死者的電腦和手機实愚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門兼呵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人腊敲,你說我怎么就攤上這事击喂。” “怎么了碰辅?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵懂昂,是天一觀的道長。 經(jīng)常有香客問我没宾,道長凌彬,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任循衰,我火速辦了婚禮铲敛,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘会钝。我一直安慰自己伐蒋,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著先鱼,像睡著了一般俭正。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上焙畔,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天掸读,我揣著相機與錄音,去河邊找鬼宏多。 笑死寺枉,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的绷落。 我是一名探鬼主播姥闪,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼砌烁!你這毒婦竟也來了筐喳?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤函喉,失蹤者是張志新(化名)和其女友劉穎避归,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體管呵,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡梳毙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了捐下。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片账锹。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖坷襟,靈堂內(nèi)的尸體忽然破棺而出奸柬,到底是詐尸還是另有隱情,我是刑警寧澤婴程,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布廓奕,位于F島的核電站,受9級特大地震影響档叔,放射性物質(zhì)發(fā)生泄漏桌粉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一衙四、第九天 我趴在偏房一處隱蔽的房頂上張望铃肯。 院中可真熱鬧,春花似錦届搁、人聲如沸缘薛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宴胧。三九已至漱抓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間恕齐,已是汗流浹背乞娄。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留显歧,地道東北人仪或。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像士骤,于是被迫代替她去往敵國和親范删。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,979評論 2 355

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

  • 技術(shù)中臺拷肌、業(yè)務(wù)中臺和數(shù)據(jù)中臺對比 前言 隨著大數(shù)據(jù)時代的發(fā)展到旦,互聯(lián)網(wǎng)人口紅利的逐漸消失,流量焦慮和數(shù)據(jù)孤島等問題日...
    言射手閱讀 879評論 0 12
  • 從去年開始,好像就有一只無形的手一直將我與“微服務(wù)”若锁、“平臺化”搁骑、“中臺化”撮合在一起,給我?guī)砹撕芏嗟睦_和...
    宮若石閱讀 682評論 0 1
  • 前言 航司PSS又固、E-Commerce仲器、Customer Service等三大層級應(yīng)用及系統(tǒng)群,在互聯(lián)網(wǎng)+的沖擊下...
    67fbeff17243閱讀 841評論 1 1
  • 引言: 隨著云計算口予、大數(shù)據(jù)娄周、物聯(lián)網(wǎng)等技術(shù)興起涕侈,數(shù)據(jù)朝著多樣性沪停、高體量、高速度方向發(fā)展裳涛,如何將海量數(shù)據(jù)安全木张、穩(wěn)定、高...
    曹元_閱讀 1,432評論 0 5
  • 傳統(tǒng)行業(yè)向互聯(lián)網(wǎng)行業(yè)的轉(zhuǎn)型 背景 2012年以后端三,因為移動互聯(lián)網(wǎng)的興起舷礼,隨著網(wǎng)名數(shù)量的增多,需求變化大郊闯,用戶群體大...
    哈嘍沃德先生閱讀 867評論 0 2