研究下一个叫做Hetty的开源rpc框架,很简单,但对于编写类似的框架很有帮助,今天将思路简单整理一下。
Hetty源码在http://www.oschina.net/p/hetty,它结合了netty+hessian+reflectasm。netty做io框架,线程池处理io请求,使用hessian做rpc通信,真正的方法调用使用预先由reflectasm生成好的字节码,执行效率要比反射高很多。
虽然是个小框架,但很好的体现了服务初始化与运行分离的设计模式。
所有配置都在hetty.properties中,启动时读取文件,将线程池配置,用户名,密码,服务配置文件,用户名和密码是作者对服务安全的理解,某一个服务可以自由配置为特定用户发布,其他用户。
初始化:(HettyConfig,ServiceHandler,SecurityHandler,MetaDataProcessor)
1.将xml配置解析成service,由servcieHandler保存,service包含serviceProvider,其中包含了真实的服务对象和通过reflectAsm处理后的对象,这样运行时直接调用servciehandler即可。
2. 初始化ServiceMetaData,ServiceMetaData是hessian service代理类,包含接口对象和实际对象
3.启动netty服务,此时HettyHandler作为netty生命周期链路的channelHandler被加载,复写的messageReceived方法接收请求事件。
hetty运行部分的服务端代码就糅合了netty和hessian,不多赘述。客户端代码没有给出,其实简单的hessian客户端即可,但如果作为一个完整的框架客户端最好也支持可配置(毕竟服务端是可配的),同时我想嵌入spring也是有必要的。