精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

技術(shù)大牛Martin Fowle:微服務(wù)究竟如何取舍

云計(jì)算
本文作者M(jìn)artin Fowler是軟件開發(fā)和設(shè)計(jì)領(lǐng)域的專家。微服務(wù)已經(jīng)成為當(dāng)下架構(gòu)設(shè)計(jì)的熱門話題,本文分析了微服務(wù)的優(yōu)缺點(diǎn),特別指出了當(dāng)對微服務(wù)做出取舍時(shí)需要考量的各種因素,寫的很細(xì)致,發(fā)人思考。

很多開發(fā)團(tuán)隊(duì)已經(jīng)認(rèn)識到微服務(wù)架構(gòu)比單體架構(gòu)更優(yōu)越。但是也有其他團(tuán)隊(duì)感覺到這是一種消弱生產(chǎn)力的負(fù)擔(dān)。就像任何軟件架構(gòu),微服務(wù)架構(gòu)同樣有利弊。為了能做出一個(gè)明智的選擇,你必須了解這些應(yīng)用并將它們運(yùn)用到你特定的環(huán)境中。

 

模塊化

微服務(wù)***的好處是對功能模塊的劃分。這是個(gè)既重要又奇怪的好處,因?yàn)槔碚撋蠜]有理由來解釋為何微服務(wù)比單體架構(gòu)有更強(qiáng)大的模塊劃分。

那到底什么是我說的模塊邊界。我想大多數(shù)人同意,將軟件劃分成多個(gè)模塊,非常好:彼此就可以分離解耦。如果我需要改變系統(tǒng)的一小部分,大多數(shù)的時(shí)候我只需要弄清楚這一小塊,然后做些改動,我們會發(fā)現(xiàn)小變動真的很容易。對于任何程序而言,好的模塊化結(jié)構(gòu)非常有用,特別是當(dāng)軟件的規(guī)模變大,模塊化會顯得格外重要。也許,它會變得更重要,因?yàn)閳F(tuán)隊(duì)的規(guī)模也在增加。

提倡微服務(wù),需要快速介紹一下康威定律,該定律認(rèn)為一個(gè)軟件系統(tǒng)的結(jié)構(gòu)反映了團(tuán)隊(duì)的溝通結(jié)構(gòu)。對于較大的團(tuán)隊(duì),特別對于那些分散在各地的團(tuán)隊(duì),對軟件實(shí)施結(jié)構(gòu)化顯得尤為重要,跨團(tuán)隊(duì)之間的溝通與一個(gè)團(tuán)隊(duì)內(nèi)部溝通相比,將會變得不那么頻繁且更加正式。微服務(wù)允許每個(gè)團(tuán)隊(duì)用類似的溝通模式來照看相對獨(dú)立的模塊單元。

正如我前面所說,沒有理由可以解釋為何一個(gè)單體系統(tǒng)不應(yīng)該擁有一個(gè)良好的模塊化結(jié)構(gòu)[1]。但是很多人都觀察到這似乎很少見,因此大雜燴成了最常見的架構(gòu)模式。事實(shí)上單體架構(gòu)這種固有的困惑,驅(qū)動一些團(tuán)隊(duì)開始使用微服務(wù)架構(gòu)。模塊的解耦能夠起作用,是因?yàn)槟K的邊界就是模塊之間引用的障礙。麻煩的是,一個(gè)單體系統(tǒng),通常都很容易繞過障礙。這樣做,可能是構(gòu)建功能時(shí)有用的技術(shù)捷徑,可是呢,如果廣泛運(yùn)用這種方法,將削弱模塊化的結(jié)構(gòu)和降低團(tuán)隊(duì)的生產(chǎn)力。將模塊放入獨(dú)立的服務(wù),這樣做使模塊的邊界更為牢固,使這種自殺式的解決方案更難實(shí)現(xiàn)。

耦合的重要部分是持久化的數(shù)據(jù)。微服務(wù)的關(guān)鍵特征是去中心的數(shù)據(jù)管理,也就是說每個(gè)服務(wù)管理它自己的數(shù)據(jù)庫,其它的服務(wù)必須通過該服務(wù)的API來交互。這就會消除集成數(shù)據(jù)庫,這是大系統(tǒng)非常討厭耦合的主要原因。

值得強(qiáng)調(diào)的是在一個(gè)單體系統(tǒng)中,使用模塊化完全可能,但是它需要紀(jì)律來保證。同樣地,你也可能得到微服務(wù)的大雜燴模式,但是對于本身已是微服務(wù)的架構(gòu),要犯這樣的錯(cuò)還是不太容易的。在我看來,使用微服務(wù),可以幫助你實(shí)現(xiàn)更好的模塊化。如果你對團(tuán)隊(duì)紀(jì)律很有信心,那么可能會消除這一優(yōu)勢,不過,隨著團(tuán)隊(duì)的規(guī)模增加,保持紀(jì)律會變得越來越,這也就意味著維護(hù)模塊邊界將顯得更為重要性。

如果你不好好管理模塊的邊界,這個(gè)優(yōu)勢就會變成障礙。這就是單體優(yōu)先策略的兩個(gè)主要原因之一,也是為何我更傾向于較早使用微服務(wù),你只能在一個(gè)領(lǐng)域了解得非常透徹。

但我現(xiàn)在不會在這方面做出警告。只有經(jīng)過時(shí)間的洗禮,你才能真正講出要如何才能把一個(gè)系統(tǒng)的模塊化維護(hù)好。所以只有我們看到微服務(wù)系統(tǒng)已經(jīng)運(yùn)行好多年,才可以評估它是否會帶來更好的模塊化特性。而且,早期接納者更有才華,也就是說在我們能夠評估一般團(tuán)隊(duì)構(gòu)建的微服務(wù)系統(tǒng)的模塊化優(yōu)勢之前,還有好幾年的延遲。所以與其和高水平的團(tuán)隊(duì)比較成果,還不如比較那些已經(jīng)使用單體架構(gòu)的軟件帶來的變化,這是一個(gè)棘手的違背事實(shí)的評估。

所有我現(xiàn)在能做的,就是聽聽那些我認(rèn)識的人,他們使用微服務(wù)架構(gòu)的早期經(jīng)驗(yàn)。他們的判斷就是微服務(wù)能讓他們更容易去維護(hù)功能模塊。

有一個(gè)案例特別有意思。有一個(gè)團(tuán)隊(duì)做了一個(gè)錯(cuò)誤的決定,在一個(gè)不那么復(fù)雜的系統(tǒng)上面使用微服務(wù)。后來這個(gè)項(xiàng)目碰到了問題,需要幫助,然后很多人就跑了進(jìn)來。這方面,微服務(wù)還是有所幫助的,因?yàn)檫@個(gè)系統(tǒng)能夠吸引開發(fā)者的快速涌入,和單體架構(gòu)相比,團(tuán)隊(duì)更容易擴(kuò)張。最終這個(gè)項(xiàng)目的進(jìn)度大大超過使用單體架構(gòu)的預(yù)期,使整個(gè)團(tuán)隊(duì)趕上進(jìn)度。當(dāng)然也有負(fù)面的,和單體架構(gòu)相比,微服務(wù)的方式耗費(fèi)了更多的人力,但是微服務(wù)的架構(gòu)能夠支持未來更大的規(guī)模。

如果你想要知道更多有關(guān)于如何構(gòu)建微服務(wù)系統(tǒng),Sam Newman的這本書是很重要的資料。

分布式特性

微服務(wù)采用分布式系統(tǒng)來提高模塊化。但是分布式軟件有一個(gè)主要的缺陷,就是分布式系統(tǒng)本身。一旦你開始玩分布式系統(tǒng),你就會碰到一堆復(fù)雜的問題。我不認(rèn)為微服務(wù)社區(qū)對分布式系統(tǒng)所帶來的成本沒有概念,但是復(fù)雜性也確實(shí)存在。

首先是性能。這時(shí)候,你不得不以一種不常見的方式,看著進(jìn)程內(nèi)的函數(shù)調(diào)用轉(zhuǎn)變成性能的瓶頸,遠(yuǎn)程調(diào)用是很慢的。如果你的服務(wù)調(diào)用了很多遠(yuǎn)程服務(wù),這些遠(yuǎn)程服務(wù)本身也要調(diào)用了另外一些遠(yuǎn)程服務(wù),這些響應(yīng)時(shí)間加起來,就會帶來很恐怖的延遲特征。

當(dāng)然你有辦法減少延遲。首先,你可以增加調(diào)用的粒度,減少調(diào)用的數(shù)目。這會使你的編程模式變得復(fù)雜,使得你必須想清楚如何批量處理跨服務(wù)交互。由于你必須調(diào)用至少一次這些所有合作的服務(wù),因此到目前為止,你能做的就這么多了。

第二種方法就是使用異步通信。如果六個(gè)服務(wù)異步并行調(diào)用,延遲只會是那個(gè)最慢的調(diào)用,而不是所有調(diào)用延遲的總和。這大大改善了性能,但也帶來了認(rèn)知成本。異步編程很難,你很難用好它,而且很難調(diào)試。但我聽到的大多數(shù)微服務(wù)的例子,都需要異步來獲得預(yù)期的性能。

速度之后就是可靠性的問題。你期望in-process函數(shù)調(diào)用能夠成功,可是一個(gè)遠(yuǎn)程調(diào)用可能在任何時(shí)間失敗。在很多的微服務(wù)中,甚至有很多的潛在的故障點(diǎn)。明智的開發(fā)人員知道這些,為可能發(fā)生的故障事先設(shè)計(jì)。你為異步協(xié)作做的方案,也適應(yīng)于故障處理,還可提高服務(wù)的彈性。然而,這些補(bǔ)償仍然不夠,仍然有著額外的復(fù)雜性,你需要弄明白每一個(gè)遠(yuǎn)程調(diào)用失敗的后果。

這就是分布式計(jì)算最主要的兩個(gè)難題。

對于這個(gè)問題,還有一些要注意的地方。首先,很多這類的問題出現(xiàn)在單體架構(gòu)規(guī)模擴(kuò)充的時(shí)候。很少有單體架構(gòu)可以真正獨(dú)立運(yùn)行,通常是跟其他系統(tǒng)一起,這些系統(tǒng)大部分是遺留系統(tǒng)。和這些系統(tǒng)通過網(wǎng)絡(luò)進(jìn)行交互,同樣會碰到這些類似的問題。這就是為何很多人都傾向于更快轉(zhuǎn)移到微服務(wù)架構(gòu),來處理遠(yuǎn)程系統(tǒng)的交互問題。這個(gè)問題,同樣也和經(jīng)驗(yàn)有關(guān)系,更熟練的團(tuán)隊(duì)更有能力處理分布式特性所帶來的問題。

當(dāng)然,分布式特性永遠(yuǎn)都是一個(gè)成本。我總是不太愿意打分布式這張牌,因?yàn)橄氲胶芏嗪芏嗳耍虻凸肋@些難題而太快地引入了分布式系統(tǒng)。

#p#

最終一致性

我想你應(yīng)該知道,網(wǎng)站的更新著實(shí)需要一點(diǎn)耐心。更新某一個(gè)東西之后刷新屏幕,可是更新的東西還沒有出現(xiàn)。你等了一兩分鐘后,它出現(xiàn)了。

這是一個(gè)非常惱人的可用性問題,幾乎可以肯定是由于最終的一致性造成的。你的更新被節(jié)點(diǎn)P收到,可是呢,你的請求卻被另一個(gè)節(jié)點(diǎn)G處理。直到節(jié)點(diǎn) G從節(jié)點(diǎn)P那兒得到更新之前,你一直處于數(shù)據(jù)不一致的狀態(tài)。最終,它會變成一致的,但在這之前,你會疑惑是不是有什么東西弄錯(cuò)了。

像這樣的不一致是令人惱火的,但他們可以更嚴(yán)重。業(yè)務(wù)邏輯會停滯在對不一致的信息上做出決策,當(dāng)這種事發(fā)生時(shí),在不一致的窗口關(guān)閉之前,也難以診斷出到底什么出了問題。

微服務(wù)帶來了最終一致性的問題,是因?yàn)樗麄儓?jiān)持對去中心的數(shù)據(jù)管理,這種堅(jiān)持值得稱贊。單體架構(gòu),你可以一次更新一堆東西。微服務(wù)則需要多個(gè)資源的更新和分布式的處理,這確實(shí)頭疼。所以現(xiàn)在,開發(fā)者需要意識到一致性問題,在寫任何代碼之前,弄明白如何檢測數(shù)據(jù)的不一致。

單體架構(gòu)在這些問題上同樣不能全身而退。隨著系統(tǒng)的增長,更需要使用緩存來提高性能,緩存失效是另一個(gè)困難的問題。大多數(shù)應(yīng)用程序需要脫機(jī)鎖,以避免長期的數(shù)據(jù)庫事務(wù)處理。外部系統(tǒng)需要更新,不能與事務(wù)管理器協(xié)調(diào)。商業(yè)流程往往更具寬容的不一致性,因?yàn)槠髽I(yè)對可用性要求更高(業(yè)務(wù)流程,一直以來對CAP理論都是一種直覺上的理解)。

和其他分布式問題一樣,單體架構(gòu)也不能完全避免非一致性問題,但它們受到的困擾不多,特別當(dāng)它們規(guī)模很小時(shí)。

獨(dú)立部署

“ 微服務(wù)是DevOps革命后***新的軟件架構(gòu)。”-- Neal Ford

模塊化和分布式系統(tǒng)的復(fù)雜性一直伴隨著我整個(gè)職業(yè)生涯中。但是有一件事情發(fā)生了明顯的變化,就是在過去的十年中,有關(guān)生產(chǎn)環(huán)境的發(fā)布。在二十世紀(jì),生產(chǎn)環(huán)境的發(fā)布幾乎總是痛苦且罕見的事情,周末的白天或晚上部署一些能用的軟件。但是現(xiàn)在呢,熟練的團(tuán)隊(duì)頻繁發(fā)布到生產(chǎn)環(huán)境,許多團(tuán)隊(duì)實(shí)行持續(xù)交付,使他們一天能夠在生產(chǎn)環(huán)境發(fā)布很多次。

這種轉(zhuǎn)變已經(jīng)對軟件產(chǎn)業(yè)產(chǎn)生了深遠(yuǎn)的影響,并與微服務(wù)運(yùn)動深深交織在一起。當(dāng)部分的小變化可能導(dǎo)致整個(gè)部署失敗,微服務(wù)終于被單體架構(gòu)的部署難題所激發(fā)出來。微服務(wù)的一個(gè)關(guān)鍵原則是,每個(gè)服務(wù)都是系統(tǒng)的一個(gè)組件,均可獨(dú)立部署。所以現(xiàn)在當(dāng)你做出改變時(shí),你只需要測試和部署一個(gè)小服務(wù)。如果你把它搞砸了,你不會把整個(gè)系統(tǒng)都搞砸。畢竟,事先對故障進(jìn)行了設(shè)計(jì),即使失敗了,你的組件也不應(yīng)該停止其他部分的系統(tǒng)工作,盡管功能上有些退化。

這種關(guān)系是雙向的。由于許多微服務(wù)需要頻繁部署,統(tǒng)一部署行為顯得尤為重要。這就是為什么應(yīng)用的快速部署和快速配置是微服務(wù)的先決條件。對于任何以此為基礎(chǔ)的服務(wù),你都需要做持續(xù)的交付。

持續(xù)交付的好處是減少了由想法變成軟件的時(shí)間。那么,團(tuán)隊(duì)可以快速響應(yīng)市場變化,并快于競爭對手先引入新的功能。

盡管許多人認(rèn)為持續(xù)交付是使用微服務(wù)的一個(gè)原因,但值得注意的是,即使單體架構(gòu)也可以持續(xù)交付。Facebook和Etsy是兩個(gè)***的例子。還有一些嘗試微服務(wù)的例子,因?yàn)槎鄠€(gè)服務(wù)需要認(rèn)真協(xié)調(diào)才能發(fā)布,因此無法獨(dú)立部署[2]。同時(shí)我也聽到很多人認(rèn)為使用微服務(wù)能更容易做持續(xù)交付,我是不太相信模塊化可以使持續(xù)發(fā)布更容易,盡管它可以大大提高交付的速度。

運(yùn)維的復(fù)雜性

能夠迅速部署獨(dú)立的小單位,是項(xiàng)目開發(fā)的一大福音,但由于幾十個(gè)應(yīng)用現(xiàn)在轉(zhuǎn)變?yōu)閹装賯€(gè)小的微服務(wù),給運(yùn)維額外增加了負(fù)擔(dān)。許多組織會發(fā)現(xiàn),處理這樣一個(gè)迅速變化的工具,有一種令人望而卻步的難度。

這加強(qiáng)了持續(xù)交付的重要性。而持續(xù)交付是單體架構(gòu)一項(xiàng)有價(jià)值的技能,也是一個(gè)微服務(wù)所必須的。如果沒有自動化協(xié)作,持續(xù)交付也無法處理那么多的服務(wù)。運(yùn)維的復(fù)雜性也是由管理這些服務(wù)和監(jiān)控的需求的增加而增加。運(yùn)維的復(fù)雜性對單體架構(gòu)的應(yīng)用也有所幫助,不過對微服務(wù)來說,這是必然的。

微服務(wù)的支持者指出,由于每個(gè)服務(wù)更小,所以更容易理解。但風(fēng)險(xiǎn)在于,復(fù)雜性并沒有消除,它只是轉(zhuǎn)移到服務(wù)之間的相互聯(lián)系中。這會增加運(yùn)維的復(fù)雜性,比如調(diào)試、跨服務(wù)的難度。良好的服務(wù)邊界的選擇將減少這個(gè)問題,但如果用錯(cuò)地方,則更糟糕。

處理這種運(yùn)維復(fù)雜度,需要一個(gè)新的技能和工具——重點(diǎn)是技能。工具仍然是不成熟的,但我的直覺告訴我,即使有更好的工具,微服務(wù)還得靠高技能。

然而,對技能和工具的需求不是解決運(yùn)維復(fù)雜性最難的部分。想要高效地解決,你還需要引入一個(gè)DevOps文化:開發(fā)者和運(yùn)維之間的緊密合作,每個(gè)人都參與軟件交付。文化變革是困難的,尤其是在更大和更老的組織中。如果你不改變這個(gè)技能和文化,單體架構(gòu)的應(yīng)用只會受到阻礙,而微服務(wù)應(yīng)用則會受到創(chuàng)傷。

技術(shù)的多樣性

由于每個(gè)微服務(wù)都是一個(gè)獨(dú)立的部署單元,你有相當(dāng)?shù)淖杂蛇x擇需要的技術(shù)。微服務(wù)可以用不同的語言,使用不同的庫,并使用不同的數(shù)據(jù)存儲方式。這使得團(tuán)隊(duì)可以選擇合適的工具來工作,有些語言和庫更適合某些類型的問題。

技術(shù)多樣性通常以***的工具為中心進(jìn)行討論,但往往微服務(wù)***的好處確是更令人頭疼的版本問題。在單體架構(gòu)中你可以只使用一個(gè)單一的版本庫,這種情況經(jīng)常導(dǎo)致升級出現(xiàn)問題。系統(tǒng)的一部分可能需要升級,來實(shí)現(xiàn)使用它的新功能,但不能因?yàn)樯壎袛嘞到y(tǒng)的另一部分。處理庫的版本問題是其中的一個(gè)難題,因?yàn)殡S著代碼庫的增大,難度會呈指數(shù)級增長。

這里有一個(gè)風(fēng)險(xiǎn),有這么多的技術(shù)多樣性,開發(fā)團(tuán)隊(duì)會被壓倒。我所認(rèn)識的大多數(shù)組織都鼓勵(lì)有限的一組技術(shù)。這種鼓勵(lì)是通過提供共同的工具來支持監(jiān)測,使它更容易將服務(wù)穩(wěn)定在一個(gè)小的通用環(huán)境中。

不要低估了支持使用新技術(shù)的價(jià)值。用單體架構(gòu)系統(tǒng),早期對語言和框架的決定是很難逆轉(zhuǎn)的。經(jīng)過十年左右,這些的決定可能會限制團(tuán)隊(duì)并使團(tuán)隊(duì)陷入尷尬的技術(shù)境地。微服務(wù)讓團(tuán)隊(duì)嘗試新工具,并逐步一次遷移系統(tǒng)的一個(gè)服務(wù),使新老技術(shù)有所關(guān)聯(lián)。

#p#

其他因素

在我看來,上面的因素是作為首要權(quán)衡指標(biāo)來考慮的。這里要討論的一些事情,我認(rèn)為就沒那么重要了。

微服務(wù)的支持者們經(jīng)常說服務(wù)更容易擴(kuò)展:一個(gè)服務(wù)得到大量的負(fù)載,你就可以擴(kuò)展,而不用對整個(gè)應(yīng)用進(jìn)行擴(kuò)展。然而,我努力回憶起一個(gè)過往的經(jīng)驗(yàn)報(bào)告,它使我相信,和千篇一律的應(yīng)用復(fù)制相比,它實(shí)際上是更有效地進(jìn)行選擇性擴(kuò)展。

微服務(wù)允許你隔離敏感數(shù)據(jù)以及給數(shù)據(jù)增加安全性。此外,在保證微服務(wù)間交互安全的前提下,微服務(wù)難以被攻入。安全問題越來越重要,這可以成為使用微服務(wù)的主要考慮因素。即使不用微服務(wù),對于單體架構(gòu)的系統(tǒng)創(chuàng)建隔離服務(wù)來處理敏感數(shù)據(jù),也是很常見的。

批評者說微服務(wù)應(yīng)用的測試要比單體架構(gòu)的應(yīng)用難度更大。雖然這個(gè)真正的困難部分來自于分布式應(yīng)用程序的復(fù)雜性,但還是有好的方法可以測試微服務(wù)。在這里,最重要的是要有紀(jì)律,要認(rèn)真測試,單體架構(gòu)和微服務(wù)應(yīng)用的測試方法的區(qū)別只是第二位的。

總結(jié)

任何有關(guān)架構(gòu)的綜述文章都會受到一般性建議的限制。所以讀一篇這樣的文章不能幫助你做決定,但這樣的文章可以幫助你確保考慮到你應(yīng)該考慮的各種因素。這里對不同的系統(tǒng),成本和收益做了不同的權(quán)重,甚至成本收益會被顛倒過來(在更復(fù)雜的系統(tǒng)中強(qiáng)模塊化更好,但對于一個(gè)簡單的系統(tǒng),這就增加了障礙),你所做的任何決定取決于環(huán)境中使用條件,評估哪些因素最重要,以及它們?nèi)绾斡绊懩愕奶囟ㄔu估條件。此外,我們對微服務(wù)架構(gòu)經(jīng)驗(yàn)相對有限。在一個(gè)系統(tǒng)成熟后,你通常只會在這個(gè)體系中決定相應(yīng)的架構(gòu)。我們還沒有很多關(guān)于長期運(yùn)行的微服務(wù)架構(gòu)的實(shí)例。

單體架構(gòu)和微服務(wù)并不是簡單的二選一。兩者都是模糊的定義,意味著大多數(shù)系統(tǒng)都將在一個(gè)模糊的邊界區(qū)域。當(dāng)然也還有其他系統(tǒng),不適合這兩個(gè)類別的。大多數(shù)人,包括我自己,討論微服務(wù)時(shí)用單體架構(gòu)作對比,這是因?yàn)樗鼈兏R姡覀儽仨氂涀。€是有系統(tǒng)不屬于這兩類的。我認(rèn)為,單體架構(gòu)和微服務(wù)是架構(gòu)設(shè)計(jì)領(lǐng)域重要的兩部分。它們值得被討論,因?yàn)樗鼈兇嬖谟腥さ奶匦裕约坝杏玫挠懻摚菦]有合適的架構(gòu)師可以對它們在架構(gòu)設(shè)計(jì)領(lǐng)域進(jìn)行一個(gè)全面的區(qū)分。

總結(jié)起來,微服務(wù)的好處:微服務(wù)提高了生產(chǎn)效率,但同時(shí)也帶來了復(fù)雜性。所以如果你可以用單體架構(gòu)管理好你的系統(tǒng),那么就無需微服務(wù)。

對微服務(wù)的討論不應(yīng)該讓我們忘記了更重要的問題,驅(qū)動軟件項(xiàng)目成功和失敗的重要因素。軟因素如團(tuán)隊(duì)中人的素質(zhì),以及他們?nèi)绾伪舜撕献鳎c領(lǐng)域?qū)<业臏贤芰Γ@都會對是否使用微服務(wù)有更加的影響。在純技術(shù)層面上來講,更重要的是把重點(diǎn)放在干凈的代碼、完善的測試,并持續(xù)關(guān)注架構(gòu)的演化進(jìn)步。

腳注

[1] 有些人認(rèn)為“單體架構(gòu)“是一種侮辱,總是意味著很糟糕的模塊化結(jié)構(gòu)。在微服務(wù)世界,大多數(shù)人不這樣做,他們將單體架構(gòu)定義為將整個(gè)應(yīng)用構(gòu)建為一個(gè)獨(dú)立的單元。當(dāng)然,微服務(wù)倡導(dǎo)者相信大多數(shù)單體架構(gòu)最終會變成大雜燴,但我不知道有誰會認(rèn)為建立一個(gè)結(jié)構(gòu)良好的單體架構(gòu)毫無可能。

[2] 能獨(dú)立部署服務(wù)是微服務(wù)定義的一部分。所以這么說還是有道理的,即必須在其部署時(shí)協(xié)調(diào)服務(wù)的架構(gòu)不是微服務(wù)架構(gòu)。也可以這么說,很多團(tuán)隊(duì)嘗試微服務(wù)架構(gòu)而陷入麻煩是因?yàn)樗麄冏罱K不得不協(xié)調(diào)多個(gè)服務(wù)來部署。

致謝

Brian Mason、Chris Ford、Rebecca Parsons、Rob Miles、Scott Robinson、Stefan Tilkov、Steven Lowe以及Unmesh Joshi和我一起討論這篇文章的草稿。

原文鏈接:http://www.dockone.io/article/492

責(zé)任編輯:Ophira 來源: dockerone
相關(guān)推薦

2024-07-30 11:40:00

數(shù)據(jù)庫NoSQLSQL

2024-09-12 15:28:38

localhost?網(wǎng)絡(luò)IPv4

2011-08-04 10:33:39

筆記本用戶體驗(yàn)

2017-10-16 15:41:13

SDN路由器NFV

2020-10-18 07:25:55

MQ消息冪等架構(gòu)

2022-11-26 00:00:07

內(nèi)存數(shù)組程序

2017-10-21 23:02:49

微服務(wù)軟件架構(gòu)

2024-09-03 14:16:54

2017-04-26 15:07:56

騰訊云

2018-02-01 09:32:16

傳統(tǒng)運(yùn)維SRE

2011-05-07 15:13:24

兼容墨盒評測

2012-10-22 13:18:05

KVM

2016-01-28 09:51:55

2021-09-03 15:13:49

API網(wǎng)關(guān)微服務(wù)

2021-01-14 09:55:21

Java微服務(wù)Go

2010-06-30 09:09:15

預(yù)覽版SQL Serv

2025-06-18 13:07:01

2020-12-21 09:57:33

無鎖緩存并發(fā)緩存

2024-07-03 10:33:07

2025-01-17 10:49:01

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

一级淫片在线观看| 日韩偷拍一区二区| 日本特黄一级片| 思热99re视热频这里只精品| 欧美色另类天堂2015| 日韩电影大全在线观看| 91成人在线免费| 精品91在线| 在线观看日韩视频| 一区二区在线免费观看视频| 在线毛片观看| 国产精品成人一区二区艾草| 成人蜜桃视频| 久久精品偷拍视频| 欧美福利网址| 亚洲人午夜色婷婷| 成人做爰69片免费| 电影一区电影二区| 亚洲成人一区在线| 亚洲一区二区三区免费观看| 欧美视频一二区| 裸体在线国模精品偷拍| 羞羞色国产精品| 五月天av网站| 国产99精品一区| 欧美成人性福生活免费看| 天天碰免费视频| 超碰在线资源| 中文字幕亚洲欧美在线不卡| 激情视频一区二区| www.我爱av| 秋霞午夜鲁丝一区二区老狼| 2019中文字幕全在线观看| 人妻久久一区二区| 97在线精品| 国产亚洲精品久久久久久| 蜜臀aⅴ国产精品久久久国产老师| 欧美日韩破处视频| 日韩欧美高清视频| 婷婷五月综合缴情在线视频| 国产素人视频在线观看| 亚洲国产精品二十页| 久久国产精品高清| 亚洲国产欧美另类| 国产一区二区在线影院| 国产精品一区二区三区在线播放| 国产成人在线免费视频 | 91精品国产综合久久久蜜臀粉嫩| 欧美成人xxxxx| aa级大片免费在线观看| 亚洲综合在线观看视频| av中文字幕av| 黄色的网站在线观看| 国产日产欧美一区二区视频| 乱色588欧美| 五月婷婷丁香网| 成人av在线播放网站| 超碰97人人人人人蜜桃| 精品国产av一区二区| 韩国毛片一区二区三区| 成人xxxx视频| 91午夜交换视频| 精品在线播放午夜| 成人免费视频网址| 99在线精品视频免费观看20| 国产一区二区三区在线观看精品| 成人日韩在线电影| 国产视频aaa| 国产麻豆精品95视频| 亚洲xxx自由成熟| 亚洲黄色在线播放| 成人高清视频免费观看| 九九九九精品九九九九| 视频一区二区三区在线看免费看| 久久婷婷久久一区二区三区| 日本欧洲国产一区二区| av亚洲在线| 日韩一区欧美一区| 国产一区 在线播放| 538视频在线| 亚洲在线成人精品| 日本成年人网址| 成人开心激情| 91麻豆精品国产91| 日韩女优在线视频| 女人丝袜激情亚洲| 日韩一区二区精品视频| 欧美日韩大片在线观看| 国产日韩1区| 国产精品久久久999| 999久久久久| 91玉足脚交白嫩脚丫在线播放| 欧美日韩一区二区三区在线观看免 | 亚洲自拍av在线| 亚洲精品免费在线观看视频| 久久蜜桃香蕉精品一区二区三区| 婷婷久久伊人| 性欧美高清come| 日韩欧美一区二区三区| 91丝袜超薄交口足| 日韩大片在线免费观看| 日韩网站免费观看高清| 国产成人无码精品亚洲| 蜜桃一区二区三区在线观看| 国产经品一区二区| 国产精品一区在线看| 亚洲欧美色图小说| 国产精品视频一区二区三区四区五区 | 国产一级成人av| 一区二区三区四区在线观看视频| caoporn91| 久久免费国产| 999热视频在线观看| 免费在线观看一级毛片| 亚洲六月丁香色婷婷综合久久 | 国产一区二区免费电影| 国产高清自拍视频在线观看| 亚洲午夜在线电影| 成人综合久久网| 国产精品羞羞答答在线观看 | 视频国产一区二区| 国产亚洲一级| 99re在线观看视频| аⅴ资源新版在线天堂| 精品高清美女精品国产区| 男生操女生视频在线观看| 一区三区在线欧| 欧美激情精品久久久久久变态| 进去里视频在线观看| 99久久精品免费精品国产| 国产麻豆电影在线观看| www成人在线视频| 亚洲黄色www| 麻豆视频在线观看| 国产另类ts人妖一区二区| 天天久久人人| 2022成人影院| 日韩av在线免费| 午夜少妇久久久久久久久| 免费一级片91| 日本精品二区| 欧美日韩大片| 国产婷婷成人久久av免费高清| 国产无遮挡又黄又爽| 国产精品一区二区黑丝| 亚洲一区二区三区免费看| se01亚洲视频| 国产一区二区日韩精品欧美精品| 成年人免费高清视频| 成人免费av在线| 国产91沈先生在线播放| 精品亚洲a∨一区二区三区18| 日韩网站免费观看| 国产又粗又猛又爽又黄的| 欧美国产一区二区| 午夜免费看视频| 亚州av乱码久久精品蜜桃| 国产精品一区二区三区成人| yiren22亚洲综合伊人22| 欧美专区日韩专区| 麻豆一区在线观看| 久久国产婷婷国产香蕉| 欧洲美女和动交zoz0z| 24小时成人在线视频| 久久亚洲私人国产精品va| 国产精品高潮呻吟AV无码| 亚洲欧美偷拍另类a∨色屁股| 天天操夜夜操很很操| 综合一区av| 国产91精品入口17c| av中文字幕在线观看第一页| 亚洲精品第一页| 天天操天天干天天摸| 亚洲国产高清不卡| 手机av在线网站| 亚洲黄色精品| 欧美日韩免费精品| 亚洲人体在线| 久久久人成影片一区二区三区| 色婷婷av一区二区三| 色综合久久88色综合天天6| 国产激情av在线| 国产精品一区在线观看乱码| 黄色一级片黄色| 首页亚洲中字| 国产主播在线一区| 97蜜桃久久| 亚洲性生活视频| 国产成人久久精品77777综合| 亚洲国产日韩a在线播放| 久久久久久久久久久国产精品| 奇米亚洲午夜久久精品| 成人在线免费观看视频网站| 亚洲黄页网站| 成人免费观看网址| 欧美xxxhd| 久久亚洲国产精品成人av秋霞| 熟妇人妻系列aⅴ无码专区友真希| 在线看不卡av| 欧美又粗又大又长| 久久久电影一区二区三区| 九一精品久久久| 国产精品日韩| 色撸撸在线观看| 丝袜连裤袜欧美激情日韩| 成人性生交大片免费观看嘿嘿视频| 24小时免费看片在线观看| 国产一区二区三区中文| 丰满少妇高潮在线观看| 欧美日韩在线免费视频| 国产成人在线免费观看视频| 国产精品国产三级国产专播品爱网| 国产精品一区二区在线免费观看| 免费观看在线综合| 欧美韩国日本在线| 欧美日本不卡高清| 在线一区日本视频| 亚洲资源网站| 国产精品大全| 一级欧美视频| 国产精品久久久久久久美男| 超碰在线99| 久久成人一区二区| 国产精品99999| 亚洲国产婷婷香蕉久久久久久| 国产三级漂亮女教师| 欧美亚洲动漫精品| 亚洲第一网站在线观看| 亚洲成人综合在线| 劲爆欧美第一页| 亚洲色图.com| 日韩一区二区三区四区视频| 久久女同精品一区二区| 亚洲香蕉中文网| 国产精品一级二级三级| 可以看污的网站| 日本亚洲天堂网| 欧美私人情侣网站| 国产精品呻吟| 少妇高潮毛片色欲ava片| 欧美特黄a级高清免费大片a级| 免费观看中文字幕| 欧美电影一区| 宅男噜噜99国产精品观看免费| 欧美系列电影免费观看| 奇米视频888战线精品播放| 亚洲婷婷丁香| 久久精品一区二区三区不卡免费视频| 国产 日韩 欧美 综合 一区| 成人动漫在线观看视频| 日韩欧美高清一区二区三区| 91在线|亚洲| 日韩中文在线| 国产精品v欧美精品∨日韩| 日本伊人久久| 国产a一区二区| 国内精品免费| 久久精品国产99精品国产亚洲性色| 欧美18免费视频| 蜜桃狠狠色伊人亚洲综合网站| 亚洲专区视频| 亚洲 国产 日韩 综合一区| 欧美艳星介绍134位艳星| 亚洲ai欧洲av| 99久精品视频在线观看视频| 男插女免费视频| 午夜天堂精品久久久久| 免费高清一区二区三区| 激情欧美一区| 国产三区在线视频| 奇米影视一区二区三区| 交换做爰国语对白| 成人污视频在线观看| avtt香蕉久久| 国产亚洲综合av| 亚洲色图日韩精品| 亚洲精品中文在线影院| 日本三级视频在线| 日本韩国欧美一区二区三区| 伊人网免费视频| 日韩欧美国产精品| 四虎免费在线观看| 一本大道久久加勒比香蕉| 免费高清完整在线观看| 欧美国产日本在线| 成人美女大片| 91免费在线视频网站| 国产精品22p| 午夜精品美女久久久久av福利| 1024精品久久久久久久久| 久久这里只有精品23| 日本欧美韩国一区三区| 中文字幕无码毛片免费看| 久久蜜桃香蕉精品一区二区三区| 在线免费看av网站| 欧美性猛交xxxx偷拍洗澡| 国产又大又黄的视频| 亚洲国产精品网站| 久久日韩视频| 91国产一区在线| 国产精品一区二区美女视频免费看| 九九九热999| 久久精品亚洲欧美日韩精品中文字幕| 青娱乐自拍偷拍| 久久精品国产亚洲a| 国产十八熟妇av成人一区| 日韩一区欧美小说| 亚洲精品中文字幕乱码三区91| 日韩一级完整毛片| 不卡在线视频| 91精品国产91久久久久久| 国产精品1区在线| 欧美精品一区二区三区在线四季| 综合av在线| 鲁一鲁一鲁一鲁一av| 99久久久国产精品免费蜜臀| fc2ppv在线播放| 色综合一个色综合| 免费观看黄色一级视频| 日韩一区二区福利| 日本.亚洲电影| 久久久久久久有限公司| 国产精品videosex极品| 最新天堂中文在线| 国产农村妇女毛片精品久久麻豆| 国产精品日日夜夜| 日韩一区二区影院| 久久bbxx| 国产欧美日韩视频| 精品久久影视| 久久美女福利视频| 91丨porny丨首页| 日韩精品成人在线| 精品久久人人做人人爱| 自拍亚洲图区| 成人久久一区二区| 天天色综合色| 邪恶网站在线观看| 国产亚洲成av人在线观看导航| 性无码专区无码| 日韩av综合网站| a级片在线免费观看| 99国产超薄丝袜足j在线观看 | 欧美mv日韩mv亚洲| 亚洲区欧洲区| 国产91视觉| 亚洲精品韩国| 亚洲一区二区在线免费| 亚洲国产cao| 欧美一区,二区| 97视频在线播放| 天海翼亚洲一区二区三区| 久草热视频在线观看| 91网上在线视频| 五月天婷婷激情| 亚洲精品网站在线播放gif| 欧美成人黑人| 亚洲欧美日本国产有色| 久久国产精品99久久人人澡| 国产又黄又粗又猛又爽的| 国产欧美不卡| wwwxxxx在线观看| 亚洲影视在线观看| 三级视频在线看| 青草热久免费精品视频| 国产一区网站| 麻豆三级在线观看| 亚洲人午夜精品天堂一二香蕉| 精品国产无码一区二区| 久久久久久亚洲精品不卡| 欧美人成在线观看ccc36| 亚洲精品无码久久久久久| 中文字幕高清一区| 国产美女明星三级做爰| 欧美精品videossex88| 香蕉久久夜色精品国产更新时间| 999香蕉视频| 亚洲视频香蕉人妖| 黄色av免费观看| 538国产精品视频一区二区| 精品视频亚洲| 国产传媒免费观看| 亚洲1区2区3区4区| 97视频精彩视频在线观看| 91超碰在线电影| 香蕉成人久久| 国产小视频你懂的| 欧美精品一区二区精品网| 精品视频一区二区三区四区五区| 国产又粗又爽又黄的视频| 91在线视频网址| 97caocao| 91国产美女视频| 午夜av一区| 成人h动漫精品一区| 8v天堂国产在线一区二区| f2c人成在线观看免费视频| 亚洲午夜精品福利| av电影天堂一区二区在线观看| 中文字幕一区二区三区波野结|