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