最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

微服務(wù)指南

2021-03-05 17:00 作者:信碼由韁  | 我要投稿

【注】本文節(jié)譯自: Microservices Guide (martinfowler.com)

??簡(jiǎn)而言之,微服務(wù)架構(gòu)風(fēng)格是一種將單個(gè)應(yīng)用程序開(kāi)發(fā)為一組小型服務(wù)的方法,每個(gè)小服務(wù)都在自己的進(jìn)程中運(yùn)行,并與輕量級(jí)機(jī)制(通常是 HTTP 資源 API)進(jìn)行通信。這些服務(wù)圍繞業(yè)務(wù)功能構(gòu)建,并且可以通過(guò)全自動(dòng)部署機(jī)制獨(dú)立部署。這些服務(wù)可以用不同的編程語(yǔ)言編寫,使用不同的數(shù)據(jù)存儲(chǔ)技術(shù),只要進(jìn)行最小化的集中管理。

-- 詹姆斯·劉易斯和馬丁·福勒(2014)

martinfowler.com上有關(guān)微服務(wù)的材料指南。

馬丁·福勒

2019.8.21

? ? 2013年底,在我的圈子里聽(tīng)到了有關(guān)微服務(wù)的所有討論后,我開(kāi)始擔(dān)心微服務(wù)的定義不明確(這種命運(yùn)給SOA帶來(lái)了許多問(wèn)題)。因此,我和同事詹姆斯·劉易斯(James Lewis)聚在一起,他是這種風(fēng)格的資深從業(yè)者之一。 我們一起寫

我們寫這篇文章是為了對(duì)微服務(wù)風(fēng)格提供一個(gè)明確的定義,我們通過(guò)列出我們?cè)谠擃I(lǐng)域中看到的微服務(wù)架構(gòu)的共同特征來(lái)實(shí)現(xiàn)這一點(diǎn)。

  • 通過(guò)服務(wù)實(shí)現(xiàn)組件化

  • 圍繞業(yè)務(wù)能力進(jìn)行組織

  • 產(chǎn)品不是項(xiàng)目

  • 智能端點(diǎn)和啞管道

  • 分散治理

  • 分散數(shù)據(jù)管理

  • 基礎(chǔ)設(shè)施自動(dòng)化

  • 故障設(shè)計(jì)

  • 進(jìn)化設(shè)計(jì)

??我們還研究了一些常見(jiàn)問(wèn)題,例如“微服務(wù)的規(guī)模有多大”以及“微服務(wù)與面向服務(wù)的體系結(jié)構(gòu)之間的區(qū)別是什么”。這篇文章激發(fā)了人們對(duì)微服務(wù)的興趣。

“我們使用它,我們不使用它?

……這到底是什么呢?”

簡(jiǎn)短的介紹性演講(約25分鐘)中,我選擇了最重要的定義特征,將微服務(wù)與整體組件進(jìn)行了比較,并概述了將第一個(gè)微服務(wù)系統(tǒng)投入生產(chǎn)之前要做的重要工作。

我們什么時(shí)候應(yīng)該使用微服務(wù)?

??任何架構(gòu)風(fēng)格都需要權(quán)衡:我們必須根據(jù)它所使用的上下文來(lái)評(píng)估其優(yōu)缺點(diǎn)。微服務(wù)肯定是這種情況。盡管它是一種有用的體系結(jié)構(gòu),但實(shí)際上,大多數(shù)情況下,使用整體組件會(huì)更好。

微服務(wù)提供優(yōu)勢(shì)...

  • 強(qiáng)大的模塊邊界:微服務(wù)加強(qiáng)了模塊化結(jié)構(gòu),這對(duì)于大型團(tuán)隊(duì)而言尤其重要。

  • 獨(dú)立部署:簡(jiǎn)單服務(wù)更易于部署,并且由于它們是自治的,因此出錯(cuò)時(shí)不太可能導(dǎo)致系統(tǒng)故障。

  • 技術(shù)多樣性:使用微服務(wù),您可以混合使用多種語(yǔ)言、開(kāi)發(fā)框架和數(shù)據(jù)存儲(chǔ)技術(shù)。

…但要付出代價(jià)

  • 分布式:分布式系統(tǒng)較難編程,因?yàn)檫h(yuǎn)程調(diào)用速度很慢,并且總是面臨失敗的風(fēng)險(xiǎn)。

  • 最終一致性:對(duì)于分布式系統(tǒng)而言,保持強(qiáng)一致性非常困難,這意味著每個(gè)人都必須管理最終一致性。

  • 運(yùn)營(yíng)復(fù)雜性:您需要一個(gè)成熟的運(yùn)營(yíng)團(tuán)隊(duì)來(lái)管理大量服務(wù),這些服務(wù)會(huì)定期重新部署。

(來(lái)自微服務(wù)的權(quán)衡

微服務(wù)高級(jí)版


? 在過(guò)去的一年里,微服務(wù)架構(gòu)風(fēng)格一直是熱門話題。在最近的 O'Reilly 軟件架構(gòu)會(huì)議上,似乎每個(gè)會(huì)議都在談?wù)撐⒎?wù)。足以使每個(gè)人的“過(guò)度炒作檢測(cè)器”啟動(dòng)并閃爍起來(lái)。其后果之一是,我們已經(jīng)看到團(tuán)隊(duì)太渴望接受微服務(wù),而沒(méi)有意識(shí)到微服務(wù)會(huì)給自己帶來(lái)復(fù)雜性。這給項(xiàng)目的成本和風(fēng)險(xiǎn)增加了額外的費(fèi)用---這通常會(huì)使項(xiàng)目陷入嚴(yán)重的麻煩。

馬丁·福勒(Martin Fowler)

2015.5.13

整體優(yōu)先

當(dāng)我聽(tīng)到團(tuán)隊(duì)使用微服務(wù)架構(gòu)的故事時(shí),我注意到了一種常見(jiàn)的模式。

  1. 幾乎所有成功的微服務(wù)故事都始于一個(gè)龐大的整體,并且被分解了

  2. 我聽(tīng)說(shuō)過(guò)的從頭構(gòu)建為微服務(wù)系統(tǒng)的系統(tǒng)都遇到了嚴(yán)重的麻煩。

馬丁·福勒(Martin Fowler)

2015.6.3


不要從整體開(kāi)始

? ? 在過(guò)去的幾個(gè)月中,我反多次聽(tīng)到這樣的說(shuō)法:獲得成功的微服務(wù)架構(gòu)的唯一方法就是首先從整體開(kāi)始。用西蒙·布朗(Simon Brown)的話來(lái)說(shuō):如果您無(wú)法構(gòu)建結(jié)構(gòu)良好的整體,那么為什么您認(rèn)為可以構(gòu)建一組結(jié)構(gòu)良好的微服務(wù)呢?最近(通常是非常有說(shuō)服力的)的論點(diǎn)來(lái)自該站點(diǎn)上的馬丁·福勤。當(dāng)我有機(jī)會(huì)對(duì)早期的草案發(fā)表評(píng)論時(shí),我有一些時(shí)間來(lái)考慮這一點(diǎn)。 我之所以這樣做,尤其是因?yàn)槲彝ǔ?huì)發(fā)現(xiàn)自己與他一致,而其他一些我通常分享的觀點(diǎn)似乎也同意他。

我堅(jiān)信從整體開(kāi)始通常是錯(cuò)誤的做法。


斯蒂芬·蒂爾科夫(Stefan Tilkov)

2015.6.9


微服務(wù)先決條件

??當(dāng)我與人們談?wù)撌褂梦⒎?wù)架構(gòu)風(fēng)格時(shí),我聽(tīng)到了很多樂(lè)觀情緒。開(kāi)發(fā)人員喜歡使用較小的單元,并且期望比整體組件具有更好的模塊化。但是,與任何架構(gòu)決策一樣,都需要權(quán)衡取舍。尤其是對(duì)于微服務(wù)而言,這給運(yùn)營(yíng)帶來(lái)了嚴(yán)重后果,運(yùn)營(yíng)者現(xiàn)在必須處理小型服務(wù)的生態(tài)系統(tǒng),而不是一個(gè)定義良好的單一整體。因此,如果你沒(méi)有某些基本能力,就不應(yīng)該考慮使用微服務(wù)風(fēng)格。

馬丁·福勒(Martin Fowler)

2014.8.28


微服務(wù)和分布式對(duì)象的第一定律

在 EAA 的 P 中,我說(shuō)“不要分發(fā)您的對(duì)象”。 這個(gè)建議是否與我對(duì)微服務(wù)的興趣相矛盾?

馬丁·福勒(Martin Fowler)

2014.8.13


與薩姆·紐曼(Sam Newman)關(guān)于微服務(wù)的訪談

goto會(huì)議要求我對(duì)薩姆·紐曼的書《Monoliths to Microservices》進(jìn)行采訪。這變成了有關(guān)微服務(wù)及其何時(shí)使用它們的一般性討論。薩姆認(rèn)為它們的三個(gè)主要原因是獨(dú)立的可部署性、數(shù)據(jù)的隔離性和反映組織結(jié)構(gòu)。我對(duì)第一個(gè)更為懷疑,但認(rèn)為數(shù)據(jù)和人員是軟件開(kāi)發(fā)的復(fù)雜部分。

馬丁·福勒(Martin Fowler)

2020.9.4


構(gòu)建微服務(wù)

??微服務(wù)架構(gòu)是相當(dāng)新的,但我很幸運(yùn),自從最早出現(xiàn)以來(lái),我們就一直在 ThoughtWorks 與它們合作。關(guān)于如何最好地與他們合作的最好描述,最好的介紹是薩姆·紐曼(Sam Newman)的書《構(gòu)建微服務(wù)》,他根據(jù)我們的經(jīng)驗(yàn)和其他已發(fā)表的經(jīng)驗(yàn)撰寫了這本書。

? ? 在過(guò)去的幾年中,基于服務(wù)的架構(gòu)已轉(zhuǎn)向更小、更集中的“微”服務(wù)。這種方法有很多好處,例如能夠獨(dú)立部署、擴(kuò)展和維護(hù)每個(gè)組件,并使多個(gè)團(tuán)隊(duì)之間的開(kāi)發(fā)并行化。但是,一旦引入了這些額外的網(wǎng)絡(luò)分區(qū),就需要重新考慮應(yīng)用于單片進(jìn)程應(yīng)用的測(cè)試策略。在這里,我們計(jì)劃討論一些方法,用于管理多個(gè)可獨(dú)立部署的組件的額外測(cè)試復(fù)雜性,以及在多個(gè)團(tuán)隊(duì)各自充當(dāng)不同服務(wù)的監(jiān)護(hù)人的情況,如何讓測(cè)試和應(yīng)用保持正確。

托比·克萊姆森(Toby Clemson)

2014.11.18

.

如何將單體應(yīng)用分解為微服務(wù)

隨著整體系統(tǒng)變得太大而無(wú)法處理,許多企業(yè)傾向于將其分解為微服務(wù)架構(gòu)風(fēng)格。 這是一次值得的旅程,但并不容易。 我們已經(jīng)了解到,要做到這一點(diǎn),我們需要從簡(jiǎn)單的服務(wù)開(kāi)始,然后再基于對(duì)業(yè)務(wù)很重要并且會(huì)經(jīng)常更改的垂直功能來(lái)提供服務(wù)。這些服務(wù)起初應(yīng)該很大,最好不依賴于其余的整體。我們應(yīng)該確保遷移的每一步都代表了整個(gè)體系結(jié)構(gòu)的原子性改進(jìn)。

扎馬克·德加尼(Zhamak Dehghani)

2018.4.24

.

微前端

? 好的前端開(kāi)發(fā)很難。擴(kuò)展前端開(kāi)發(fā),使許多團(tuán)隊(duì)可以同時(shí)處理大型復(fù)雜產(chǎn)品,這變得更加困難。在本文中,我們將描述最近的一種趨勢(shì),即將前端整體拆分成許多更小、更易于管理的部分,以及這種架構(gòu)如何提高前端代碼團(tuán)隊(duì)的效率。除了討論各種收益和成本外,我們還將介紹一些可用的實(shí)現(xiàn)選項(xiàng),并深入研究演示該技術(shù)的完整示例應(yīng)用。

卡姆·杰克遜(Cam Jackson)

2019.6.19


如何從單體中提取數(shù)據(jù)豐富的服務(wù)

當(dāng)將整體式服務(wù)器拆分成較小的服務(wù)時(shí),最困難的部分實(shí)際上是拆分存在于整體式數(shù)據(jù)庫(kù)中的數(shù)據(jù)。要提取數(shù)據(jù)豐富的服務(wù),遵循一系列步驟始終保持?jǐn)?shù)據(jù)的單個(gè)寫副本是很有用的。這些步驟首先在現(xiàn)有的整體中進(jìn)行邏輯分離:將服務(wù)行為拆分為單獨(dú)的模塊,然后將數(shù)據(jù)拆分為單獨(dú)的表。這些元素可以分別移動(dòng)到新的自治服務(wù)中。

普拉富爾·托德卡爾(Praful Todkar)

2018.8.30

.

基礎(chǔ)設(shè)施即代碼

? 基礎(chǔ)架構(gòu)即代碼是通過(guò)源代碼定義計(jì)算和網(wǎng)絡(luò)基礎(chǔ)架構(gòu)的方法,然后可以像對(duì)待任何軟件系統(tǒng)一樣對(duì)待它們??梢詫⒋祟惔a保留在源代碼控制中,以允許可審核性和可復(fù)制的構(gòu)建,服務(wù)從于測(cè)試實(shí)踐,以及持續(xù)交付的完整規(guī)范。在過(guò)去的十年中,這種方法已用于應(yīng)對(duì)不斷增長(zhǎng)的云計(jì)算平臺(tái),并且將成為下一個(gè)處理計(jì)算基礎(chǔ)架構(gòu)的主要方法。

馬丁·福勒(Martin Fowler)

2016.3.1

基礎(chǔ)設(shè)施即代碼

??基礎(chǔ)架構(gòu)即代碼是通過(guò)源代碼定義計(jì)算和網(wǎng)絡(luò)基礎(chǔ)架構(gòu)的方法,然后可以像對(duì)待任何軟件系統(tǒng)一樣對(duì)待它們。可以將此類代碼保留在源代碼控制中,以允許可審核性和可復(fù)制的構(gòu)建,服務(wù)從于測(cè)試實(shí)踐,以及持續(xù)交付的完整規(guī)范。在過(guò)去的十年中,這種方法已用于應(yīng)對(duì)不斷增長(zhǎng)的云計(jì)算平臺(tái),并且將成為下一個(gè)處理計(jì)算基礎(chǔ)架構(gòu)的主要方法。

馬丁·福勒(Martin Fowler)

2016.3.1


DevOps 文化

??敏捷軟件開(kāi)發(fā)打破了需求分析、測(cè)試和開(kāi)發(fā)之間的一些孤島。部署、操作和維護(hù)是其他活動(dòng),它們與其余軟件開(kāi)發(fā)過(guò)程有著類似的分離。DevOps 運(yùn)動(dòng)旨在消除這些孤島,并鼓勵(lì)開(kāi)發(fā)與運(yùn)營(yíng)之間的協(xié)作。

魯安·威爾森納赫(Rouan Wilsenach)

2015.7.9


熔斷器

? ? 對(duì)于軟件系統(tǒng),通常是遠(yuǎn)程調(diào)用運(yùn)行在不同進(jìn)程中的軟件,可能是在網(wǎng)絡(luò)中的不同計(jì)算機(jī)上。內(nèi)存內(nèi)調(diào)用和遠(yuǎn)程調(diào)用之間的最大區(qū)別之一是,遠(yuǎn)程調(diào)用可能會(huì)失敗,或者掛起而沒(méi)有響應(yīng),直到達(dá)到某個(gè)超時(shí)限制。更糟糕的是,如果您在沒(méi)有響應(yīng)的供應(yīng)商上有許多調(diào)用者,那么您可能會(huì)耗盡關(guān)鍵資源,從而導(dǎo)致多個(gè)系統(tǒng)之間的級(jí)聯(lián)故障。 邁克爾·尼加德(Michael Nygard)在他的優(yōu)秀著作《釋放它》(Release It)中推廣了斷路器模式,以防止這種災(zāi)難性的連鎖反應(yīng)。

? 熔斷器的基本原理非常簡(jiǎn)單。將受保護(hù)的函數(shù)調(diào)用包裝在熔斷器對(duì)象中,該對(duì)象將監(jiān)視故障。 一旦故障達(dá)到某個(gè)閾值,熔斷器將跳閘,并且所有進(jìn)一步的熔斷器調(diào)用都會(huì)返回錯(cuò)誤,而根本不會(huì)進(jìn)行受保護(hù)的調(diào)用。通常,如果熔斷器跳閘,您還需要某種監(jiān)控器警報(bào)。

馬丁·福勒(Martin Fowler)

2014.3.6



微服務(wù)指南的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
辰溪县| 梧州市| 普格县| 芜湖市| 安塞县| 安泽县| 隆林| 高要市| 西贡区| 七台河市| 樟树市| 黄陵县| 喀喇沁旗| 阿拉善右旗| 康乐县| 墨脱县| 神木县| 亚东县| 封开县| 大连市| 三河市| 牟定县| 镇沅| 丽水市| 罗平县| 乌鲁木齐县| 定边县| 庆云县| 什邡市| 新丰县| 石渠县| 玉门市| 佛学| 利辛县| 上饶市| 十堰市| 开江县| 四川省| 凤城市| 阿合奇县| 石河子市|