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