BlockManagerMaster:BlockManagerMaster源碼解析框架
在一開始分析BlockManager(BM)、BlockManagerMaster(BMM)、BlockManagerMasterEndpoint(BMME)和BlockManagerSlaveEndpoint(BMSE)時我就感受它們之間的功能定義和關係不是特別的清晰。
1)BMM做爲BMME的代理類,隱藏了BMME的實現,由BMME來完成實際響應遠程調用的動做,這個仍是比較清晰的,由於BMME維護着BlockManager的元數據信息,由它來完成信息的增刪查這個是徹底沒有問題的。
2)個人疑惑就在於BlockManager的定位是什麼?
首先從類設計原則來看,類的功能單一且清晰是比較重要的,由於這樣能夠清楚地看到類的定位設計
那麼BlockManager的定位就是處理一切跟Block讀寫等有關的工做和註冊等工做代理
3)可是我想來想去這個BlockManager就是處理Slave端的實際Block讀寫,那麼應該叫作BlockManagerSlave更貼切,可是做爲一個優秀的開源項目,不該該會出現這樣的問題。那麼多是個人理解問題,因而我又進行下面的思考:
Driver和Executor都有BlockManager,那麼Driver端BlockManager的做用僅僅是維護Executor端的BlockManager元數據的話,那麼Driver根本就不必建立BlockManager,使用BlockManagerMaster就能夠。因此極可能設計目的就是這樣的:blog