RPC,即 Remote Procedure Call(远程过程调用),调用远程计算机上的服务,就像调用本地服务一样。RPC 可以很好的解耦系统,如 WebService 就是一种基于 HTTP协议的 RPC。
EasyRPC 框架使用的一些技术所解决的问题:
通信:使用Netty作为通信框架。
Spring:使用Spring配置服务,加载Bean。
动态代理:客户端使用代理模式透明化服务调用。
消息编解码:使用Protostuff序列化和反序列化消息。
"
一个服务接口
一个服务实现
spring-server.xml 配置文件
服务在启动的时候通过 Spring 加载自定义 Bean
通过实现 export 启动 Netty Server,并注册服务到 Server
Junit Test
spring-client.xml 配置文件
客户端调用使用代理模式调用服务
代理类,为 RpcFuture 设置超时,否则会出现卡死现象
通过 ConsumerFactoryBean 注入 Spring Bean
通过 refer 启动 Client Server
通过对 connectFuture.channel().closeFuture 听见监听,实现断线自动重练
基于 Protostuff 实现序列化和反序列化工具
由于处理的是 TCP 消息,TCP 的粘包处理 Handler。
消息编解码时开始4个字节表示消息的长度,也就是消息编码的时候,先写消息的长度,再写消息。
作者简介
张松然。京东零售商家研发部架构师。对构建高性能,高可用的大规模分布系统有丰富的开发经验,有多年NIO领域的设计、开发经验,对HTTP、TCP长连接技术有深入研究与领悟。
---------------END----------------
后续的内容同样精彩
长按关注“IT实战联盟”哦
注意:本文归作者所有,未经作者允许,不得转载