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