自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

架構(gòu)面試題 – 為什么我的朋友圈不見了?

開發(fā) 架構(gòu)
經(jīng)常有朋友問到,“感覺你們的系統(tǒng)最近沒什么太大變化,你們幾百號工程師在忙什么?”,下面的這個問題,可能是工程師花費了不少時間的場景之一,最壞的情況下里面所有方案或許都嘗試過一遍。

經(jīng)常有朋友問到,“感覺你們的系統(tǒng)最近沒什么太大變化,你們幾百號工程師在忙什么?”,下面的這個問題,可能是工程師花費了不少時間的場景之一,最壞的情況下里面所有方案或許都嘗試過一遍。

有如下一個場景,某個服務(wù)需要構(gòu)建一個列表數(shù)據(jù)返回給調(diào)用方(調(diào)用方通常是客戶端),服務(wù)本身是一個數(shù)據(jù)聚合器,它由內(nèi)部多個遠(yuǎn)程服務(wù)的數(shù)據(jù)聚合而生成。在正常情況下,需要將所有內(nèi)部服務(wù)的結(jié)果全獲取成功后再返回。但是在一個大系統(tǒng)中,多個服務(wù)中某個服務(wù)出現(xiàn)不穩(wěn)定的概率會比較大,當(dāng)出現(xiàn)如圖遠(yuǎn)程服務(wù)3不可用的時候,有三種不同的解決思路。

list1

  • 方案1:忽略出錯的數(shù)據(jù)(圖中數(shù)據(jù)3),直接返回數(shù)據(jù)1、2、4。
  • 方案2:遇到任意失敗,整個請求返回錯誤503 service unavailable。
  • 方案3:忽略出錯的數(shù)據(jù)(圖中數(shù)據(jù)3),并告知調(diào)用方出錯的范圍,需要自定義的返回格式。如 {“load_data3_success”: false}

如果你作為一個架構(gòu)師,會選擇哪種方案?

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

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

方案三是一個看起來相對合理的方案,但是需要添加自定義的字段,本來這是一個標(biāo)準(zhǔn)的LIST返回,但是需要額外添加一些錯誤字段如 {“load_data3_success”: false}來標(biāo)識哪些數(shù)據(jù)返回失敗了。一個簡單的接口變得異常繁瑣,同時調(diào)用方也需要實現(xiàn)緩存及容錯邏輯。這個方案從服務(wù)方到調(diào)用方的熵都增加了很多。

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

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

list2

這時候如果未讀數(shù)都出來了,遠(yuǎn)程數(shù)據(jù)又取不到的情況下,你作為架構(gòu)師,會選擇何種方案?

原文鏈接:http://timyang.net/service/arch-interview-questions/

責(zé)任編輯:張偉 來源: Tim's blog
相關(guān)推薦

2014-12-15 15:04:37

微信朋友圈設(shè)置信息圍欄

2012-08-22 09:32:54

面試面試題

2021-01-22 05:39:21

線程日志代碼

2023-03-09 07:29:28

微信朋友圈架構(gòu)

2016-09-12 14:32:16

戴爾

2015-10-26 10:45:00

2013-11-06 14:25:30

微信朋友圈

2019-05-15 15:40:18

朋友圏微信評論

2015-01-26 09:29:56

微信朋友圈

2021-06-23 10:24:06

微信macOS移動應(yīng)用

2017-01-18 20:29:00

Windows 10啟動欄解決方案

2024-07-24 08:38:07

2023-02-06 08:25:51

開源項目去中心化

2013-12-25 10:47:09

2021-06-27 22:48:28

Redis數(shù)據(jù)庫內(nèi)存

2015-03-13 11:20:12

QQ瀏覽器朋友圈Apple Watch

2018-10-16 14:30:22

Python微信朋友圈

2018-07-19 17:36:34

谷歌AIAPP

2013-11-01 09:27:48

Twitter技術(shù)面試

2019-08-16 10:10:07

hashcodeequalsJava
點贊
收藏

51CTO技術(shù)棧公眾號