京东推出一个轻量级分布式 RPC 框架 — EasyRPC

本文深入解析EasyRPC框架,介绍其如何使用Netty进行通信,Spring配置服务,动态代理简化远程服务调用,以及Protostuff实现的消息编解码。同时,文章详细说明了服务端发布与客户端调用的具体流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

点击“开发者技术前线”,选择“星标????”

在看|星标|留言,  真爱

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

好文点个在看吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值