<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>

          面試官:如何設(shè)計一個【三高】系統(tǒng)?

          共 2042字,需瀏覽 5分鐘

           ·

          2024-03-25 01:00

          在做系統(tǒng)設(shè)計時,我們經(jīng)常需要設(shè)計具有高可用性、高可擴展性和高吞吐量的系統(tǒng)。

          可以說,“三高”是做系統(tǒng)設(shè)計繞不開的重點!

          那它們的確切含義是什么呢?

          下圖是一份系統(tǒng)設(shè)計小抄,包含“三高”常見的解決方案。

          6c5f8f7172c4a408fe0361382f7a00da.webp

          0 1

          高可用性

          高可用 意味著我們需要達(dá)到一個高水平的正常運行時間。

          我們通常將設(shè)計目標(biāo)描述為 "3 個 9 " 或 "4 個 9"。

          "4 個9",即 99.99% 的正常運行時間,意味著服務(wù)每天只能中斷 8.64 秒。

          要實現(xiàn)高可用性,我們需要在系統(tǒng)中設(shè)計冗余。有幾種方法可以做到這一點:

          • Hot-Hot

          兩個實例接收相同的輸入,并將輸出發(fā)送到下游服務(wù)。如果其中一方宕機,另一方可以立即接替。由于兩邊都向下游發(fā)送輸出,下游系統(tǒng)需要能夠處理重復(fù)數(shù)據(jù)。

          • Hot-Warm

          兩個實例接收相同的輸入,只有 Hot 端向下游服務(wù)發(fā)送輸出。如果 Hot 端宕機, Warm 端將接替并開始向下游服務(wù)發(fā)送輸出。

          • 單領(lǐng)導(dǎo)集群 (Single Leader)

          一個領(lǐng)導(dǎo)實例從上游系統(tǒng)接收數(shù)據(jù)并復(fù)制到其他副本。

          • 無領(lǐng)導(dǎo)集群 (Leaderless)

          這種集群中沒有領(lǐng)導(dǎo)者。任何寫入都會復(fù)制到其他實例。只要寫入實例數(shù)加上讀取實例數(shù)大于實例總數(shù),我們就能獲得有效數(shù)據(jù)。這被稱為 quorum。

          0 2

          高吞吐量

          這意味著服務(wù)需要在一段時間內(nèi)處理大量請求。常用的指標(biāo)是 QPS(每秒查詢次數(shù))或 TPS(每秒事務(wù)次數(shù))。

          為了實現(xiàn)高吞吐量,我們通常會在架構(gòu)中添加緩存,以避免經(jīng)過數(shù)據(jù)庫或磁盤等較慢的 I/O 設(shè)備。我們還可以為計算密集型任務(wù)增加線程數(shù)量。但是,增加過多的線程會降低性能。因此,我們需要找出系統(tǒng)的瓶頸,提高系統(tǒng)的吞吐量。

          我們還可以在系統(tǒng)中使用異步處理,以有效地單獨隔離耗時耗資源的組件。

          0 3

          高擴展性

          高擴展性意味著系統(tǒng)可以快速、輕松地擴展,以容納更多的容量(橫向可擴展性)或更多的功能(縱向可擴展性)。通常,我們通過觀察響應(yīng)時間來決定是否需要擴展系統(tǒng)。

          要實現(xiàn)高度可擴展性,需要隔離每個服務(wù)的職責(zé)。為此,微服務(wù)被廣泛采用。我們還利用服務(wù)注冊和負(fù)載平衡器將請求路由到適當(dāng)?shù)膶嵗?/span>

          以上內(nèi)容源自公眾號“ByteByteGo”,是硅谷百萬粉絲技術(shù)大v、《搞定系統(tǒng)設(shè)計:面試敲開大廠的門》一書作者Alex Xu的官方號。

          2abb2f78a3d2f1611793532da59cc07a.webp

          關(guān)于系統(tǒng)設(shè)計的面試,可以說是所有技術(shù)面試中最難的。

          面試者會被要求設(shè)計一個軟件系統(tǒng),比如 news feed 、谷歌搜索、聊天系統(tǒng)等。

          這些問題令人望而生畏,沒有特定的解題模式,通常范圍都非常廣且模糊,其答案也是開放的,也可以說不存在標(biāo)準(zhǔn)答案或正確答案。

          很多公司都設(shè)有系統(tǒng)設(shè)計面試,因為這種面試能考驗軟件工程師日常工作所需的溝通能力和解決問題的能力。

          面試官會考查候 選人如何分析一個模糊的問題并一步步解決這個問題;同時,他們還會考查候選人闡述自己想法的能力、與其他人討論的能力、評估及優(yōu)化系統(tǒng)的能力。

          系統(tǒng)設(shè)計的問題是開放式的。

          在現(xiàn)實世界中,不同的系統(tǒng)之間存在許多差別,而系統(tǒng)自身還要應(yīng)對各種變化。

          面試官期望得到的答案是一個能滿足系統(tǒng)設(shè)計目標(biāo)的架構(gòu)。

          在面試過程中,對問題的討論可能會因面試官的個人風(fēng)格不同而走向不同的方向。

          有些面試官喜歡詢問高層架構(gòu)設(shè)計方面的問題,以全面地考查面試者的知識面,也有些面試官會選擇一個或者幾個領(lǐng)域來深入地考查知識點。

          一般來說,應(yīng)該搞清楚系統(tǒng)的需求、限制和瓶頸,以便面試雙方可以有效地進(jìn)行溝通。

          Alex 所著《搞定系統(tǒng)設(shè)計:面試敲開大廠的門》 一書的目標(biāo)是提供一個可靠的策略,幫助面試者回答系統(tǒng)設(shè)計問題。采取正確的策略且具備必要的知識,對面試的成功至關(guān)重要。

          058a4d534a71e954e0d4fae6c65f70c4.webp

          本書講述了構(gòu)建一個可擴展系統(tǒng)所需的基礎(chǔ)知識。你從本書中獲得的知識越多,在解決系統(tǒng)設(shè)計問題時就越從容。

          本書還提供了一個逐步解決系統(tǒng)設(shè)計問題的框架,用了很多實例來闡釋這種系統(tǒng)性的解決方法且附有詳細(xì)步驟,你可以照著操作。只要勤加練習(xí),在回答系統(tǒng)設(shè)計面試問題時,你就會胸有成竹。

          本書原著 豆瓣評分8.4 ,得到眾多讀者的好評,案例經(jīng)典、信息全面系統(tǒng)、非常適合用來面試!

          703e41c2d6c08a7fde05a29674518dd7.webp

          b12c63f5f0ce05773a80b47ddf0f1a55.webp


          如果你想順利通過高難度的系統(tǒng)設(shè)計面試,那就看看這本被眾多讀者驗證過的好書吧~~

          限時五折優(yōu)惠,快快搶購吧!

                  


          瀏覽 114
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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>
                  在线小视频 | 人妻懂色av粉嫩av浪潮av | 久久久黄色| 成人精品导航 | 国产精品内射 |