在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    什么是微服務(wù)?

    什么是微服務(wù)?

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

    什么是微服務(wù)?

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

    微服務(wù)與單體

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

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

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

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

    微服務(wù)的好處

    可擴(kuò)展性

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

    誤隔離

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

    較小的團(tuán)隊(duì)

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

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

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

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

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

    更頻繁的發(fā)布

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    相關(guān)推薦

    聯(lián)系我們

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