分布式面試題

摘抄整理自網(wǎng)上

1、分布式系統(tǒng)

1.1為什么要進(jìn)行系統(tǒng)拆分?

(1)為什么要進(jìn)行系統(tǒng)拆分?如何進(jìn)行系統(tǒng)拆分?拆分后不用dubbo可以嗎?dubbo和thrift有什么區(qū)別呢?

1.2分布式服務(wù)框架

(1)說一下的dubbo的工作原理?注冊中心掛了可以繼續(xù)通信嗎?


(2)dubbo支持哪些序列化協(xié)議?說一下hessian的數(shù)據(jù)結(jié)構(gòu)?PB知道嗎?為什么PB的效率是最高的?


(3)dubbo負(fù)載均衡策略和高可用策略都有哪些?動態(tài)代理策略呢?


(4)dubbo的spi思想是什么?


(5)如何基于dubbo進(jìn)行服務(wù)治理、服務(wù)降級、失敗重試以及超時重試?


(6)分布式服務(wù)接口的冪等性如何設(shè)計(比如不能重復(fù)扣款)?


(7)分布式服務(wù)接口請求的順序性如何保證?


(8)如何自己設(shè)計一個類似dubbo的rpc框架?

1.3分布式鎖

(1)使用redis如何設(shè)計分布式鎖?使用zk來設(shè)計分布式鎖可以嗎?這兩種分布式鎖的實現(xiàn)方式哪種效率比較高?

1.4分布式事務(wù)

(1)分布式事務(wù)了解嗎?你們?nèi)绾谓鉀Q分布式事務(wù)問題的?TCC如果出現(xiàn)網(wǎng)絡(luò)連不通怎么辦?XA的一致性如何保證?

1.5分布式會話

(1)集群部署時的分布式session如何實現(xiàn)?

2、高并發(fā)架構(gòu)

2.1 如何設(shè)計一個高并發(fā)系統(tǒng)?

2.2 消息隊列

(1)為什么使用消息隊列???消息隊列有什么優(yōu)點和缺點?。縦afka、activemq、rabbitmq、rocketmq都有什么優(yōu)點和缺點???


(2)如何保證消息隊列的高可用???


(3)如何保證消息不被重復(fù)消費?。ㄈ绾芜M(jìn)行消息隊列的冪等性問題)?


(4)如何保證消息的可靠性傳輸(如何處理消息丟失的問題)?


(5)如何保證消息的順序性?


(6)如何解決消息隊列的延時以及過期失效問題?消息隊列滿了以后該怎么處理?有幾百萬消息持續(xù)積壓幾小時,說說怎么解決?


(7)如果讓你寫一個消息隊列,該如何進(jìn)行架構(gòu)設(shè)計啊?說一下你的思路

2.3 搜索引擎

(1)es的分布式架構(gòu)原理能說一下么(es是如何實現(xiàn)分布式的?。?/p>


(2)es寫入數(shù)據(jù)的工作原理是什么???es查詢數(shù)據(jù)的工作原理是什么啊?底層的lucene介紹一下唄?倒排索引了解嗎?


(3)es在數(shù)據(jù)量很大的情況下(數(shù)十億級別)如何提高查詢效率?。?/p>


(4)es生產(chǎn)集群的部署架構(gòu)是什么?每個索引的數(shù)據(jù)量大概有多少?每個索引大概有多少個分片?

2.4緩存

(1)在項目中緩存是如何使用的?緩存如果使用不當(dāng)會造成什么后果?


(2)redis和memcached有什么區(qū)別?redis的線程模型是什么?為什么單線程的redis比多線程的memcached效率要高得多?


(3)redis都有哪些數(shù)據(jù)類型?分別在哪些場景下使用比較合適?


(5)redis的過期策略都有哪些?手寫一下LRU代碼實現(xiàn)?


(6)如何保證Redis高并發(fā)、高可用、持久化?redis的主從復(fù)制原理能介紹一下么?redis的哨兵原理能介紹一下么?


(7)redis的持久化有哪幾種方式?不同的持久化機制都有什么優(yōu)缺點?持久化機制具體底層是如何實現(xiàn)的?


(8)redis集群模式的工作原理能說一下么?在集群模式下,redis的key是如何尋址的?分布式尋址都有哪些算法?了解一致性hash算法嗎?如何動態(tài)增加和刪除一個節(jié)點?


(9)了解什么是redis的雪崩和穿透?redis崩潰之后會怎么樣?系統(tǒng)該如何應(yīng)對這種情況?如何處理redis的穿透?


(10)如何保證緩存與數(shù)據(jù)庫的雙寫一致性?


(11)redis的并發(fā)競爭問題是什么?如何解決這個問題?了解Redis事務(wù)的CAS方案嗎?


(12)生產(chǎn)環(huán)境中的redis是怎么部署的?

2.5分庫分表


(2)為什么要分庫分表(設(shè)計高并發(fā)系統(tǒng)的時候,數(shù)據(jù)庫層面該如何設(shè)計)?用過哪些分庫分表中間件?不同的分庫分表中間件都有什么優(yōu)點和缺點?你們具體是如何對數(shù)據(jù)庫如何進(jìn)行垂直拆分或水平拆分的?


(3)現(xiàn)在有一個未分庫分表的系統(tǒng),未來要分庫分表,如何設(shè)計才可以讓系統(tǒng)從未分庫分表動態(tài)切換到分庫分表上?


(4)如何設(shè)計可以動態(tài)擴容縮容的分庫分表方案?


(5)分庫分表之后,id主鍵如何處理?


2.6讀寫分離

(1)如何實現(xiàn)mysql的讀寫分離?MySQL主從復(fù)制原理的是啥?如何解決mysql主從同步的延時問題?

3、高可用架構(gòu)

3.1 如何設(shè)計一個高可用系統(tǒng)?

3.2限流

[if !supportLists](1)[endif]如何限流?在工作中是怎么做的?說一下具體的實現(xiàn)?

3.3熔斷

(1)如何進(jìn)行熔斷?熔斷框架都有哪些?具體實現(xiàn)原理知道嗎?

3.4降級

(1)如何進(jìn)行降級?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 談?wù)劤S玫姆植际?ID 的設(shè)計方案?Snowflake 是否受冬令時切換影響? 典型回答 首先,我們需要明確通常的...
    逆流_2659閱讀 13,995評論 0 1
  • 包含的重點內(nèi)容:JAVA基礎(chǔ)JVM 知識開源框架知識操作系統(tǒng)多線程TCP 與 HTTP架構(gòu)設(shè)計與分布式算法數(shù)據(jù)庫知...
    消失er閱讀 4,543評論 1 10
  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 32,279評論 2 89
  • Java基礎(chǔ) Vector,ArrayList, LinkedList的區(qū)別是什么? 答: Vector、Arra...
    閃電是只貓閱讀 12,243評論 3 26
  • 線性表(linear_list):n個數(shù)據(jù)元素的有限序列。如字母表、成績表、價目表,圖書索引表等。 線性表中的元素...
    Theodore_Pratt閱讀 612評論 0 1

友情鏈接更多精彩內(nèi)容