軟件系統(tǒng)復(fù)雜度的來(lái)源之一——可擴(kuò)展性

——————————————————摘抄自《極客時(shí)間 李運(yùn)華 從0開始學(xué)架構(gòu)》

1 What:什么是架構(gòu)的可擴(kuò)展性鹃两?

業(yè)務(wù)需求冗茸、運(yùn)行環(huán)境方面的變化都會(huì)導(dǎo)致軟件系統(tǒng)發(fā)生變化谈山,而這種軟件系統(tǒng)對(duì)上述變化的適應(yīng)能力就是可擴(kuò)展性窖铡。

可擴(kuò)展性可以理解為是一種從功能需求方面考慮的軟件屬性琅豆,屬性就會(huì)存在好壞之分榔幸。

按照可擴(kuò)展性的定義允乐,一個(gè)具備良好可擴(kuò)展性的架構(gòu)設(shè)計(jì)應(yīng)當(dāng)符合開閉原則:對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉削咆。衡量一個(gè)軟件系統(tǒng)具備良好可擴(kuò)展性主要表現(xiàn)但不限于:(1)軟件自身內(nèi)部方面牍疏。在軟件系統(tǒng)實(shí)現(xiàn)新增的業(yè)務(wù)功能時(shí),對(duì)現(xiàn)有系統(tǒng)功能影響較少拨齐,即不需要對(duì)現(xiàn)有功能作任何改動(dòng)或者很少改動(dòng)麸澜。(2)軟件外部方面。軟件系統(tǒng)本身與其他存在協(xié)同關(guān)系的外部系統(tǒng)之間存在松耦合關(guān)系奏黑,軟件系統(tǒng)的變化對(duì)其他軟件系統(tǒng)無(wú)影響炊邦,其他軟件系統(tǒng)和功能不需要進(jìn)行改動(dòng)。反之熟史,則是一個(gè)可擴(kuò)展性不好的軟件系統(tǒng)馁害。

2 How:如何設(shè)計(jì)可擴(kuò)展性好的架構(gòu)?

面向?qū)ο笏枷膈迤ァ⒃O(shè)計(jì)模式都是為了解決可擴(kuò)展性的而出現(xiàn)的方法與技術(shù)碘菜。

設(shè)計(jì)具備良好可擴(kuò)展性的系統(tǒng),有兩個(gè)思考角度:(1)從業(yè)務(wù)維度限寞。對(duì)業(yè)務(wù)深入理解忍啸,對(duì)可預(yù)計(jì)的業(yè)務(wù)變化進(jìn)行預(yù)測(cè)。(2)從技術(shù)維度履植。利用擴(kuò)展性好的技術(shù)计雌,實(shí)現(xiàn)對(duì)變化的封裝。

(1)在業(yè)務(wù)維度玫霎。對(duì)業(yè)務(wù)深入理解凿滤,對(duì)業(yè)務(wù)的發(fā)展方向進(jìn)行預(yù)判妈橄,也就是不能完全不考慮可擴(kuò)展性;但是翁脆,變化無(wú)處不在眷蚓,在業(yè)務(wù)看得遠(yuǎn)一點(diǎn)的同時(shí),需要注意:警惕過(guò)度設(shè)計(jì)反番;不能每個(gè)設(shè)計(jì)點(diǎn)都考慮可擴(kuò)展性沙热;所有的預(yù)測(cè)都存在不正確的可能性。

(2)在技術(shù)維度罢缸。預(yù)測(cè)變化是一回事校读,采取什么方案來(lái)應(yīng)對(duì)變化,又是另外一個(gè)復(fù)雜的事情祖能。即使預(yù)測(cè)很準(zhǔn)確,如果方案不合適蛾洛,則系統(tǒng)擴(kuò)展一樣很麻煩养铸。第一種應(yīng)對(duì)變化的常見方案是將“變化”封裝在一個(gè)“變化層”,將不變的部分封裝在一個(gè)獨(dú)立的“穩(wěn)定層”轧膘。第二種常見的應(yīng)對(duì)變化的方案是提煉出一個(gè)“抽象層”和一個(gè)“實(shí)現(xiàn)層”钞螟。

4.在實(shí)際工作場(chǎng)景中的解決方案
在實(shí)際軟件系統(tǒng)架構(gòu)設(shè)計(jì)中,常通過(guò)以下技術(shù)手段實(shí)現(xiàn)良好的可擴(kuò)展性:(1)使用分布式服務(wù)(框架)構(gòu)建可復(fù)用的業(yè)務(wù)平臺(tái)谎碍。(2)使用分布式消息隊(duì)列降低業(yè)務(wù)模塊間的耦合性鳞滨。

(1)分布式服務(wù)框架
利用分布式服務(wù)框架(如Dubbo)可以將業(yè)務(wù)邏輯實(shí)現(xiàn)和可復(fù)用組件服務(wù)分離開,通過(guò)接口降低子系統(tǒng)或模塊間的耦合性蟆淀。新增功能時(shí)拯啦,可以通過(guò)調(diào)用可復(fù)用的組件實(shí)現(xiàn)自身的業(yè)務(wù)邏輯,而對(duì)現(xiàn)有系統(tǒng)沒有任何影響熔任“矗可復(fù)用組件升級(jí)變更的時(shí)候,可以提供多版本服務(wù)對(duì)應(yīng)用實(shí)現(xiàn)透明升級(jí)疑苔,對(duì)現(xiàn)有應(yīng)用不會(huì)造成影響甫匹。

(2) 分布式消息隊(duì)列
基于生產(chǎn)者-消費(fèi)者編程模式,利用分布式消息隊(duì)列(如RabbitMQ)將用戶請(qǐng)求惦费、業(yè)務(wù)請(qǐng)求作為消息發(fā)布者將事件構(gòu)造成消息發(fā)布到消息隊(duì)列兵迅,消息的訂閱者作為消費(fèi)者從消息隊(duì)列中獲取消息進(jìn)行處理。通過(guò)這種方式將消息生產(chǎn)和消息處理分離開來(lái)薪贫,可以透明地增加新的消息生產(chǎn)者任務(wù)或者新的消息消費(fèi)者任務(wù)恍箭。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市瞧省,隨后出現(xiàn)的幾起案子季惯,更是在濱河造成了極大的恐慌吠各,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件勉抓,死亡現(xiàn)場(chǎng)離奇詭異贾漏,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)藕筋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門纵散,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人隐圾,你說(shuō)我怎么就攤上這事伍掀。” “怎么了暇藏?”我有些...
    開封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵蜜笤,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我盐碱,道長(zhǎng)把兔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任瓮顽,我火速辦了婚禮县好,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘暖混。我一直安慰自己缕贡,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開白布拣播。 她就那樣靜靜地躺著晾咪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪贮配。 梳的紋絲不亂的頭發(fā)上禀酱,一...
    開封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音牧嫉,去河邊找鬼剂跟。 笑死,一個(gè)胖子當(dāng)著我的面吹牛酣藻,可吹牛的內(nèi)容都是我干的曹洽。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼辽剧,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼送淆!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起怕轿,我...
    開封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤偷崩,失蹤者是張志新(化名)和其女友劉穎辟拷,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體阐斜,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡衫冻,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了谒出。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片隅俘。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖笤喳,靈堂內(nèi)的尸體忽然破棺而出为居,到底是詐尸還是另有隱情,我是刑警寧澤杀狡,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布蒙畴,位于F島的核電站,受9級(jí)特大地震影響呜象,放射性物質(zhì)發(fā)生泄漏膳凝。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一董朝、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧干跛,春花似錦子姜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至嘉熊,卻和暖如春遥赚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背阐肤。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工凫佛, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人孕惜。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓愧薛,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親衫画。 傳聞我的和親對(duì)象是個(gè)殘疾皇子毫炉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355

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