<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          我們?cè)跇?gòu)建微服務(wù)時(shí)犯過(guò)的最大錯(cuò)誤

          共 1990字,需瀏覽 4分鐘

           ·

          2021-08-19 08:59

          點(diǎn)擊上方“服務(wù)端思維”,選擇“設(shè)為星標(biāo)

          回復(fù)”669“獲取獨(dú)家整理的精選資料集

          回復(fù)”加群“加入全國(guó)服務(wù)端高端社群「后端圈」


          作者 | Mika Yeap
          翻譯 | 劉雅夢(mèng)
          策劃 | 田曉旭

          在網(wǎng)上招致批評(píng)的最快方法就是撰寫(xiě)有關(guān)微服務(wù)的文章。每個(gè)人都有自己的觀點(diǎn)。不管你是支持還是批判微服務(wù)。人們會(huì)找到你,并告訴你你錯(cuò)了。我很喜歡這樣。我最近有幸就這個(gè)主題寫(xiě)了幾篇熱門文章。相應(yīng)的評(píng)論都是滑稽和理智的完美結(jié)合。但它們對(duì)于識(shí)別真正的錯(cuò)誤特別有用。

          因?yàn)檫@能讓我們面對(duì)現(xiàn)實(shí):構(gòu)建分布式系統(tǒng)可能會(huì)變得很復(fù)雜。公平地說(shuō),建造單體系統(tǒng)也是如此。但不同的是,我們大多數(shù)人選擇了比分布式的復(fù)雜性更高的東西。任何有經(jīng)驗(yàn)的開(kāi)發(fā)人員或架構(gòu)師都會(huì)告訴你,大多數(shù)人實(shí)際上不需要完全接受微服務(wù)。

          我問(wèn)過(guò)的所有人都建議將這兩者相結(jié)合。并且只在絕對(duì)必要的情況下才需單獨(dú)使用微服務(wù)。但我的團(tuán)隊(duì)沒(méi)有這樣,我當(dāng)時(shí)沒(méi)有這種智慧。所以我們搶先了一步。犯了書(shū)中提到的所有錯(cuò)誤。以下是一些最令人震驚的錯(cuò)誤示例。

          1定制構(gòu)建太多

          在微服務(wù)領(lǐng)域,服務(wù)之間的通信是一個(gè)大問(wèn)題。有人會(huì)說(shuō)這是最大的問(wèn)題。這一切都要?dú)w究于分布式事務(wù)。在電子商務(wù)應(yīng)用程序的經(jīng)典示例中,創(chuàng)建新訂單的過(guò)程可能會(huì)涉及到需在多個(gè)不同的服務(wù)中進(jìn)行操作,比如訂單服務(wù)、客戶服務(wù)等。在單體應(yīng)用中,只需一個(gè)函數(shù)調(diào)用即可。但是使用微服務(wù),情況就不那么好了。你可以引入 Sagas 來(lái)處理多服務(wù)事務(wù)。但這會(huì)讓你感到脊椎發(fā)冷。實(shí)現(xiàn) Sagas 并非易事。

          盡管如此,我們還是不太清楚。所以我們實(shí)現(xiàn)了基于編排的 Sagas 來(lái)解決這個(gè)問(wèn)題。優(yōu)勢(shì)之處在于我們定制了每個(gè)服務(wù)用來(lái)通信和執(zhí)行這些 Sagas 的消息代理。使用 Redis 流和 Go 自行構(gòu)建。當(dāng)然,最終結(jié)果很好,建造起來(lái)也非常有趣。但我們本可以用做這個(gè)的時(shí)間,搭建一個(gè)單體應(yīng)用。開(kāi)始就失敗了。

          2復(fù)雜性不設(shè)限

          這一點(diǎn)可以歸結(jié)為經(jīng)驗(yàn):從技術(shù)上講,有些地方是你不應(yīng)該去的。給定一個(gè)特定的項(xiàng)目時(shí)間表和一個(gè)具有特定能力的團(tuán)隊(duì),有些路徑是你不應(yīng)該探索的。我們的錯(cuò)誤在于我們認(rèn)為我們可以去任何微服務(wù)之神召喚我們的地方。

          這是不正確的。不幸的是,這完全是錯(cuò)誤的。在某種程度上,你會(huì)意識(shí)到,某些內(nèi)容僅僅在 YouTube 主題演講中聽(tīng)起來(lái)可行,但并不意味著在你的項(xiàng)目它們也是可行的。如果我們對(duì)我們?cè)敢馓幚淼膹?fù)雜性設(shè)置了一個(gè)上限,我們就會(huì)為自己節(jié)省一些不必要的麻煩。我想你可以用另一種方式來(lái)表述這個(gè)錯(cuò)誤,“我們給了自己太多的時(shí)間”。如果我們有一個(gè)更短的截止日期,這些麻煩將會(huì)自動(dòng)消除。

          話又說(shuō)回來(lái),這里有個(gè)很微妙的界限。如果復(fù)雜性限制設(shè)置的過(guò)低,你就會(huì)駕駛一架由筷子做成的飛機(jī)。但如果設(shè)置的過(guò)高,你就永遠(yuǎn)不會(huì)離開(kāi)跑道。在這兩種情況下,你都會(huì)完蛋。知道如何切餡餅通常來(lái)自經(jīng)驗(yàn)。所以我建議你做出最好的猜測(cè),然后在 Medium 上傳播,以吸引更聰明的工程師的注意,他們會(huì)糾正你的錯(cuò)誤。

          3定義太寬松

          最后,有一件事可以解決我們的大部分問(wèn)題。歸根結(jié)底,分布式架構(gòu)是用來(lái)解決問(wèn)題的。所以,在決定使用它之前,你需要知道這個(gè)問(wèn)題是什么,你還需要了解你的解決方案,以確定它們的匹配程度。這兩個(gè)我們都不了解。

          因?yàn)檎l(shuí)會(huì)在一開(kāi)始時(shí)就花上幾天的時(shí)間來(lái)定義問(wèn)題呢?這種紀(jì)律很少見(jiàn),尤其是在需要立即構(gòu)建的環(huán)境中。現(xiàn)在,我知道,通過(guò)更關(guān)注實(shí)現(xiàn),可以節(jié)省正確定義問(wèn)題所“損失”的時(shí)間。換句話說(shuō),你花更少的時(shí)間構(gòu)建錯(cuò)誤的東西。浪費(fèi)的時(shí)間會(huì)少很多。因此,明智的做法是確保你正在構(gòu)建的東西是正確的。

          然而,我們沒(méi)有。我們的彎路不僅花費(fèi)了我們的時(shí)間和金錢。它們最終也是毫無(wú)意義的。我們建造并修復(fù)了我們不需要的東西。完成后,我們沒(méi)有使用它們。在開(kāi)發(fā)期間,我們還不如在辦公室一直玩《英雄聯(lián)盟》,這還能鼓舞士氣。因此,很好地了解你的問(wèn)題和解決方案并不是一個(gè)糟糕的想法。

          話說(shuō)回來(lái),這其中的樂(lè)趣何在呢?在我看來(lái),你也可能會(huì)浪費(fèi)大量的時(shí)間去構(gòu)建錯(cuò)誤的東西,在這個(gè)過(guò)程中收集了經(jīng)驗(yàn)來(lái)寫(xiě)文章,然后在網(wǎng)上抱怨。這對(duì)我們有用。我是說(shuō),我們還活著在講述這個(gè)故事。


          — 本文結(jié)束 —


          ● 漫談設(shè)計(jì)模式在 Spring 框架中的良好實(shí)踐

          ● 顛覆微服務(wù)認(rèn)知:深入思考微服務(wù)的七個(gè)主流觀點(diǎn)

          ● 人人都是 API 設(shè)計(jì)者

          ● 一文講透微服務(wù)下如何保證事務(wù)的一致性

          ● 要黑盒測(cè)試微服務(wù)內(nèi)部服務(wù)間調(diào)用,我該如何實(shí)現(xiàn)?



          關(guān)注我,回復(fù) 「加群」 加入各種主題討論群。



          對(duì)「服務(wù)端思維」有期待,請(qǐng)?jiān)谖哪c(diǎn)個(gè)在看

          喜歡這篇文章,歡迎轉(zhuǎn)發(fā)、分享朋友圈


          在看點(diǎn)這里
          瀏覽 29
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久久性 | 色先锋影音 | 四虎永久在线无码视频 | 大香蕉伊看人在线在线观看 | 国语操逼 |