motan是由maven管理的,在最外层的pom.xml中可以看出这个项目有多个模块组成。
<modules> <module>motan-core</module> //核心项目 <module>motan-manager</module> //管理motan的web项目 <module>motan-springsupport</module> //spring对标签的解析 <module>motan-transport-netty</module> //通信框架。消费端和服务端的之间的通信封装 <module>motan-demo</module> //实例 <module>motan-registry-consul</module> //使用consul作为注册中心
<module>motan-registry-zookeeper</module>//使用zookeeper作为注册中心 <module>motan-benchmark</module> //基本测试用 <module>motan-extension</module> //扩展相关。 </modules>
对于这些模块,最核心的模块就是motan-core,它的源码结构如下
cluster:客户端使用,主要是根据负载均衡和高可用机制,选取一个服务提供者。
codec:编码解码相关,客户服务器端需要根据字节流转化为协议,然协议转化为字节流。
common&util:
serialize:序列化的地方,现在共支持两种序列化方法,fastjson和heesian
protocol:客户服务器的通信协议,主要是injvm和motan
rpc:封装一些远程调用时候的方法和参数。
register:与注册中心的交互
proxy:为了屏蔽与客户端的通信细节,需要为客户端生成代理类,然后调用代理方法与服务器端通信。
transport:就是通信代码所在的地方