一款轻量级的分布式通讯RPC框架,简化分布式接口开发。
java语言beta版已经基本实现,正在将框架和spring进行集成,后续会考虑增加oc、c#和c++版本client端
目标:
1、简化开发:注册方和消费方,在适配器模式的原则下,基于接口开发;
2、跨语言:为了考虑跨语言,底层尽量采用通用序列化方案,已经实现两种跨语言序列化方案(坚决不采用16进制之类的,注解之类的,太啰嗦,16进制里边大量的硬编码太TM恶心);
3、轻量级:如若选择最精简版本进行开发,只需要依赖jackson和slf4j,这两个第三方依赖即可;
项目分包:
xxl-rpc
---xxl-rpc-core :框架核心模块,已经实现底层接口代理模块,底层通讯封装模块等等(另外,注册中心模块在构思中);
---xxl-rpc-client :java版本的client消费方的demo
---xxl-rpc-server :java版本的server注册方的demo
部分核心代码:
消费方(每个spring中配置的消费方bean,底层实际上都会执行如下方法):
IDemoService hessianService = (IDemoService) new XxlRpcProxyFactory().getInstance("http://localhost:8080/rpc/hessian", IDemoService.class, ProxyType.HESSIAN);
服务方(此处代码为统一入口):
……
request.setCharacterEncoding("UTF-8"); int size = request.getContentLength(); InputStream is = request.getInputStream(); byte[] reqBodyBytes = readBytes(is, size); // hessian 2 object InvocationRequest invoke = (InvocationRequest) HessianSerializeUtils.deserialize(reqBodyBytes);
……
至此,服务方已经接收到消费方的请求,并反序列化为具体调用服务方service,invoke后将返回序列化后压入response即可;
框架正在自测和完善中,1.0版不久将推出,届时,我会将源码开源,我是一个崇尚开源的人,一个普通的coder。
RPC通讯框架——xxl-rpc(java语言beta版已经基本实现,正在将框架和spring进行集成,后续会考虑增加oc、c#和c++版本client端)
原文:http://www.cnblogs.com/xuxueli/p/4845111.html