1. <tt id="5hhch"><source id="5hhch"></source></tt>
    1. <xmp id="5hhch"></xmp>

  2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

    <rp id="5hhch"></rp>
        <dfn id="5hhch"></dfn>

      1. 架構面試筆試題目

        時間:2020-11-29 16:14:04 筆試題目 我要投稿

        架構面試筆試題目

          經常有朋友問到,“感覺你們的系統最近沒什么太大變化,你們那么多工程師在忙什么?”,下面的這個場景,可能是工程師花費了不少時間的情況之一。

          有如下一個場景,某個服務需要構建一個列表數據返回給調用方(調用方通常是客戶端),服務本身是一個數據聚合器,它由內部多個遠程服務的數據聚合而生成。在正常情況下,需要將所有內部服務的結果全獲取成功后再返回。但是在一個大系統中,多個服務中某個服務出現不穩定的概率會比較大,當出現如圖遠程服務3不可用的時候,有三種不同的解決思路。

          方案1:忽略出錯的數據(圖中數據3),直接返回數據1、2、4。

          方案2:遇到任意失敗,整個請求返回錯誤503 service unavailable。

          方案3:忽略出錯的數據(圖中數據3),并告知調用方出錯的范圍,需要自定義的返回格式。如 {“load_data3_success”: false}

          如果你作為一個架構師,會選擇哪種方案?

        架構面試筆試題目

          方案一類似架構設計里面常說的優雅降級,在出現問題情況下,除了數據3不能返回之外,其它數據可以正常返回,原理上可以將損失降低到最低。但這種方案會給用戶體驗帶來一定傷害,用戶在使用系統時候會存在不確定性的心理感受。

          方案二比較依賴調用方的容錯邏輯,如果調用方保存了上一次緩存,且容錯邏輯處理得當,用戶表面會感受不到這個異常。如果沒有容錯邏輯,最壞情況則將會返回白頁。但是即使有容錯邏輯,由于正常的數據也不能及時返回,從工程師到用戶可能不太容易接受這個結果。

          方案三是一個看起來相對合理的方案,但是需要添加自定義的'字段,本來這個調用是一個標準的LIST數據返回,但如要判斷每個數據項是否返回失敗,需要額外添加一些標識字段如 {“load_data3_success”: false},用于標識哪些數據返回失敗了。因此,接口設計及實現變得更加繁瑣,調用方也需要實現緩存及容錯邏輯,從服務方到調用方的熵都增加了很多。

          因此,這個選擇題已經不好做了。但雪上加霜的是,在大部分應用中,對于數據列表訪問同時還存在未讀數的功能,如下圖中的小紅點數字。如果這個未讀數由另外一個API提供(本討論假設未讀數API功能正常),情況就更復雜。

        架構面試筆試題目

          補充討論一下,如果不提供單獨的未讀數API,客戶端需要每次需要加載新的全量數據才能本地算出未讀數,會帶來訪問速度的下降及客戶端更多流量的消耗。因此大多數情況提供一個未讀數API整體開銷會更低。通過未讀數API判斷當服務端有新數據時候才去訪問列表接口。

          這時候如果未讀數都出來了,遠程數據又取不到的情況下,你作為架構師,會選擇何種方案?至少,碰到這種情況時如果還未找到理想方案,建議不要盲目優化,因為它除了增加系統的熵,不會將事情變得更好。

        【架構面試筆試題目】相關文章:

        面試會計的筆試題目12-22

        小升初面試常見筆試題目09-09

        電廠面試筆試題目07-12

        中專面試筆試題目07-12

        公司面試筆試題目09-08

        護士面試筆試題目09-09

        企業面試筆試題目08-31

        華為面試代碼筆試題目08-22

        小升初面試筆試及面試常見題目08-31

        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码

        1. <tt id="5hhch"><source id="5hhch"></source></tt>
          1. <xmp id="5hhch"></xmp>

        2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

          <rp id="5hhch"></rp>
              <dfn id="5hhch"></dfn>