分布式系統面試連環炮
有一些同學,之前呢主要是做傳統行業,或者外包項目,一直是在那種小的公司,技術一直都搞的比較簡單。他們有共同的一個問題,就是都沒怎麽搞過分布式系統,現在互聯網公司,一般都是做分布式的系統,大家都不是做底層的分布式系統、分布式存儲系統 hadoop hdfs、分布式計算系統 hadoop mapreduce / spark、分布式流式計算系統 storm。
分布式業務系統,就是把原來用 Java 開發的一個大塊系統,給拆分成多個子系統,多個子系統之間互相調用,形成一個大系統的整體。假設原來你做了一個 OA 系統,裏面包含了權限模塊、員工模塊、請假模塊、財務模塊,一個工程,裏面包含了一堆模塊,模塊與模塊之間會互相去調用,1 臺機器部署。現在如果你把這個系統給拆開,權限系統、員工系統、請假系統、財務系統 4 個系統,4 個工程,分別在 4 臺機器上部署。一個請求過來,完成這個請求,這個員工系統,調用權限系統,調用請假系統,調用財務系統,4 個系統分別完成了一部分的事情,最後 4 個系統都幹完了以後,才認為是這個請求已經完成了。
這兩年開始興起和流行 Spring Cloud,剛流行,還沒開始普及,目前普及的是 dubbo,因此這裏也主要講 dubbo。
面試官可能會問你以下問題。
為什麽要進行系統拆分?
為什麽要進行系統拆分?如何進行系統拆分?拆分後不用dubbo可以嗎?dubbo和thrift有什麽區別呢?
分布式服務框架
說一下的 dubbo 的工作原理?註冊中心掛了可以繼續通信嗎?
dubbo 支持哪些序列化協議?說一下 hessian 的數據結構?PB 知道嗎?為什麽 PB 的效率是最高的?
dubbo 負載均衡策略和高可用策略都有哪些?動態代理策略呢?
dubbo 的 spi 思想是什麽?
如何基於 dubbo 進行服務治理、服務降級、失敗重試以及超時重試?
分布式服務接口的冪等性如何設計(比如不能重復扣款)?
分布式服務接口請求的順序性如何保證?
如何自己設計一個類似 dubbo 的 rpc 框架?
分布式鎖
使用 redis 如何設計分布式鎖?使用 zk 來設計分布式鎖可以嗎?這兩種分布式鎖的實現方式哪種效率比較高?
分布式事務
分布式事務了解嗎?你們如何解決分布式事務問題的?TCC 如果出現網絡連不通怎麽辦?XA 的一致性如何保證?
分布式會話
集群部署時的分布式 session 如何實現?
分布式系統面試連環炮