亚洲国产日韩人妖另类,久久只有这里有精品热久久,依依成人精品视频在线观看,免费国产午夜视频在线

      
      

        什么是微服務(wù)?

        什么是微服務(wù)?

        微服務(wù)已經(jīng)成為現(xiàn)代軟件開發(fā)的新寵,盡管它們已有十多年的歷史。但是,盡管有好處,但這種范式很容易出錯。那么讓我們來探討一下微服務(wù)是什么,更重要的是,它們不是什么。

        什么是微服務(wù)?

        微服務(wù)架構(gòu)是一種軟件設(shè)計方法,它將應(yīng)用程序分解為通過定義明確的 API 進(jìn)行通信的小型獨立服務(wù)。由于每個服務(wù)都可以由自治團(tuán)隊開發(fā)和維護(hù),因此它是最具可擴展性的軟件開發(fā)方法。

        微服務(wù)與單體

        微服務(wù)設(shè)計與單體開發(fā)截然相反。單體是一個實現(xiàn)所有功能的大型代碼庫(“廚房水槽”)。一切都在一個地方,沒有一個組件可以孤立地工作。這意味著應(yīng)用程序必須作為一個整體進(jìn)行測試。

        從好的方面來說,單體應(yīng)用很容易啟動和運行。由于單體架構(gòu)不同部分之間的關(guān)系是透明的,因此進(jìn)行廣泛的更改很容易。

        然而,隨著公司的發(fā)展和團(tuán)隊規(guī)模的擴大,單體開發(fā)變得更加困難。很快,系統(tǒng)就不能再裝在一個頭上了——移動部件太多了,所以事情變慢了。

        微服務(wù)使公司能夠保持團(tuán)隊規(guī)模小而敏捷。這個想法是將應(yīng)用程序分解為可以由緊密結(jié)合的團(tuán)隊自主開發(fā)和部署的小型服務(wù)。

        微服務(wù)的好處

        可擴展性

        公司采用微服務(wù)的主要原因是可擴展性。服務(wù)可以獨立開發(fā)和發(fā)布,無需在組織內(nèi)安排大規(guī)模的協(xié)調(diào)工作。

        誤隔離

        擁有分布式系統(tǒng)的一個好處是能夠避免單個故障點。您可以使用支持云的技術(shù)在不同的可用區(qū)部署微服務(wù),確保您的用戶永遠(yuǎn)不會遇到中斷。

        較小的團(tuán)隊

        使用微服務(wù),開發(fā)團(tuán)隊可以保持小而有凝聚力。小組越小,溝通開銷越少,協(xié)作越好。

        亞馬遜通過他們的兩個披薩團(tuán)隊將團(tuán)隊規(guī)模發(fā)揮到了極致。這意味著一個團(tuán)隊?wèi)?yīng)該足夠小,可以吃兩個比薩餅。

        選擇技術(shù)堆棧的自由

        對于單體應(yīng)用,語言和技術(shù)堆棧選項幾乎從一開始就設(shè)置好了。新開發(fā)人員必須適應(yīng)過去做出的任何選擇。

        相比之下,每個微服務(wù)都可以使用最適合解決手頭任務(wù)的技術(shù)堆棧。因此,團(tuán)隊可以為工作和他們的技能選擇最佳工具。例如,您可以使用 Go 或 C 實現(xiàn)高性能服務(wù),并使用 Erlang 或 Elixir 實現(xiàn)高容錯微服務(wù)。

        更頻繁的發(fā)布

        隨著小團(tuán)隊迭代速度更快,開發(fā)和測試周期更短。而且,由于他們還可以隨時部署更新,微服務(wù)的部署頻率比單體應(yīng)用要高得多。

        微服務(wù)設(shè)計挑戰(zhàn)

        有這么多好處,似乎為新項目選擇微服務(wù)是一件輕而易舉的事。但是微服務(wù)設(shè)計也帶來了一些嚴(yán)峻的挑戰(zhàn):

        • Small:適用于團(tuán)隊規(guī)模和代碼庫。微服務(wù)必須小到足以被一個人完全理解。如果從頭開始重寫它需要超過 sprint 的時間,那么你的微服務(wù)就太大了。
        • 專注于一件事:服務(wù)必須專注于問題的一個方面或只執(zhí)行一項任務(wù)。
        • 自治:自治允許團(tuán)隊選擇最合適的語言堆棧和數(shù)據(jù)模型。這通常意味著每個微服務(wù)都有自己的數(shù)據(jù)庫或持久層,不與其他服務(wù)共享。
        • 與有界上下文一致:在軟件中,我們創(chuàng)建模型來表示我們想要解決的問題。有界上下文表示給定模型的限制。上下文是服務(wù)的自然邊界,因此找到它們是設(shè)計良好微服務(wù)架構(gòu)的一部分。
        • 松耦合:雖然微服務(wù)可以依賴于其他微服務(wù),但我們必須注意它們的通信方式。每次跨越有界上下文時,都需要某種程度的抽象和翻譯,以防止一個服務(wù)中的行為更改影響其他服務(wù)。
        • 可獨立部署:由于是自治且松耦合的,團(tuán)隊可以在幾乎沒有外部協(xié)調(diào)或集成測試的情況下部署他們的微服務(wù)。微服務(wù)應(yīng)該通過定義明確的 API 進(jìn)行通信,并使用翻譯層來防止一項服務(wù)中的行為更改影響其他服務(wù)。

        當(dāng)微服務(wù)不是微服務(wù)時

        你怎么知道你是否在做正確的微服務(wù)設(shè)計?如果您的團(tuán)隊可以在不與其他團(tuán)隊協(xié)調(diào)的情況下隨時部署更新,并且如果其他團(tuán)隊可以類似地部署他們的更改而不影響您,那么恭喜您,您掌握了微服務(wù)的訣竅。

        失去微服務(wù)提供的好處的最可靠方法是不遵守解耦規(guī)則。如果我們仔細(xì)觀察,我們會發(fā)現(xiàn)微服務(wù)都是關(guān)于自治的。當(dāng)這種自主權(quán)喪失時,團(tuán)隊必須在開發(fā)和部署期間進(jìn)行協(xié)調(diào)。需要完美的集成測試來確保所有微服務(wù)協(xié)同工作。

        即便如此,詳盡的測試也無法捕捉到所有問題。當(dāng)出現(xiàn)問題時,耦合服務(wù)是很難調(diào)試的。當(dāng)問題被發(fā)現(xiàn)時,修復(fù)它并不總是像回滾更新那么容易。

        緊密的服務(wù)依賴關(guān)系創(chuàng)建團(tuán)隊依賴關(guān)系。

        這些都是分布式計算帶來的問題。如果您曾經(jīng)使用過云服務(wù),您就會知道將服務(wù)或機器分布在多個地理位置與在同一站點上運行所有內(nèi)容不同。分布式系統(tǒng)具有更高的延遲,可能存在同步問題,并且更難管理和調(diào)試。這種高度耦合的服務(wù)架構(gòu)實際上是一個分布式單體架構(gòu),具有兩全其美的優(yōu)點,也沒有微服務(wù)應(yīng)該帶來的任何好處。

        如果您在不與其他團(tuán)隊協(xié)調(diào)或依賴其他微服務(wù)的特定版本來部署您的微服務(wù)的情況下無法進(jìn)行部署,那么您只是在分發(fā)您的單體應(yīng)用。

        當(dāng)微服務(wù)不是最佳選擇時

        微服務(wù)并沒有取代單體。兩者都是有效的方法。事實上,當(dāng)團(tuán)隊仍在探索他們正在構(gòu)建的東西時,單體應(yīng)用可能是最佳選擇。

        單體應(yīng)用就像是項目的自然起點,因為它易于開發(fā)、快速迭代、快速部署、易于調(diào)試,并且更能容忍設(shè)計錯誤。在可擴展性成為問題之前,單體應(yīng)用可以讓您走得更遠(yuǎn)。

        微服務(wù)適合您嗎?

        微服務(wù)是我們開發(fā)軟件的最具可擴展性的方式。但它們不是免費的午餐。如果您不小心,它們會帶來一些很容易發(fā)生沖突的風(fēng)險。當(dāng)團(tuán)隊正在成長并且您需要保持快速和敏捷時,它們非常有用。但是你需要對要解決的問題有一個很好的理解,否則你最終會得到一個分布式的單體。

        歡迎關(guān)注我的抖音號:

        喜歡的朋友記得給個關(guān)注~

        鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場,版權(quán)歸原作者所有,如有侵權(quán)請聯(lián)系管理員(admin#wlmqw.com)刪除。
        (0)
        用戶投稿
        上一篇 2022年6月22日
        下一篇 2022年6月22日

        相關(guān)推薦

        聯(lián)系我們

        聯(lián)系郵箱:admin#wlmqw.com
        工作時間:周一至周五,10:30-18:30,節(jié)假日休息