RPC 轻量级框架高并发处理

本文详细介绍了RPC轻量级框架在高并发环境下的工作流程,包括启动过程、客户端同步及异步调用步骤。RPC的核心是将远程调用抽象为本地函数调用,涉及序列化、反序列化、网络通信以及服务注册。文中还提及了服务端如何处理请求,并通过Decoder和Encoder处理数据。最后,提到了源码优化和部分代码来源于社区贡献。

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

 

RPC(远过程调用)在分布式系统中是很常用的基础通讯方式,核心思想是将不同进程之间的通讯抽象为函数调用。

基本的过程是:

1、调用端将参数序列化到流中并发送给服务端

2、服务端从流中反序列化出参数并完成实际的处理

3、将结果序列化后返回给调用端。

通常的RPC由接口形式来定义,接口定义服务的名字,接口方法定义每个请求的输入参数和返回结果,并且RPC内部的序列化、网络通讯等实现细节则由框架来完成,对开发人员来说是完全透明的。

 

RPC结构的一个轻量级框架结构图:

 

 

 

根据上图的结构,描述一下rpc的详细过程:

一、启动过程

1、Rpc-server 负责启动rpc服务,服务启动时开始监听制定的端口号;

2、启动时将绑定服务处理的Handler(Rpc-Handler),以及Encoder类与Decoder类

3、启动后调用RpcRegister类的egister方法,将发现的Rpc服务注册到服务调度中心

 

二、 客户端同步调用过程

 

1、用户通过Proxy 类创建一个Rpc服务客户端;

2、再用胡调用Rpc服务时,Proxy调用Rpc-Client的send方法(在send方法中调用Encoder类进行序列化),将服务请求发送到Rpc-Server;

3、Rpc监听端口的服务收到请求后将服务转给Rpc-Handler来处理;

4、Rpc-Handler收到通知后先调用Decoder类进行反序列化,然后开启一个新的线程来处理客户端请求,请求处理完成之后,Handler直接相应给客户端;

5、客户端收到回应之后调用Decoder类进行反序列化,如果有异常就抛出,否则返回服务端的返回值

 

三、客户端异步调用过程

1、用户通过Proxy 类创建一个Rpc服务客户端;

2、再用胡调用Rpc服务时,Proxy调用Rpc-Client的call方法(在send方法中调用Encoder类进行序列化),将服务请求发送到Rpc-Server,请求发送完成后,客户端继续执行剩余业务逻辑;

3、Rpc监听端口的服务收到请求后将服务转给Rpc-Handler来处理;

4、Rpc-Handler收到通知后先调用Decoder类进行反序列化,然后开启一个新的线程来处理客户端请求,请求处理完成之后,Handler直接相应给客户端;

5、如果用户注册了回调函数,则客户端收到回应之后调用Decoder类进行反序列化,然后执行回调逻辑;如果没有注册回调函数,那么客户端发送完请求后就结束了

 

源码见附件

 

注:感谢各位网友贡献的源码,大部分源码都是使用别人的,本人只是在这基础上进行的部优化。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值