ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

【C++】手撕JRpc框架(梳理RPC流程)

【C++】手撕JRpc框架(梳理RPC流程) 项目介绍PRC 远程过程调用是一种通过网络从远程计算机上请求服务而不需要了解底层网络通信细节PRC可以使用多种网络协议进行通信如HTTP、TCP、UDP等并且在TCP/IP网络四层模型中跨越了传输层和应用层。简而言之PRC就是像调用本地方法一样调用远程方法过程可以理解为业务处理、计算任务更直白的说就是程序/方法/函数等就是像调用本地方法一样调用远程方法我们用大白话来说PRC就是让你像调用本地函数一样去调用另一台服务器上的函数本地调用你的代码写 add(1,2)这是在你自己的电脑内存里面算出来的远程调用你写 add(1,2)这行代码实际上是把请求发送到了另一台电脑服务器上那这台电脑算完后把结果传回给你。虽然代码写法几乎一样但底层发生了网络通信PRC核心流程图解包裹快递版假设你在北京客户端你的朋友在上海服务端你想让他帮你买一杯咖啡远程调用函数阶段一客户端准备北京调用本地函数你的脑子里想着“我要喝咖啡”网络协议打包你不能直接把“想喝咖啡”的脑电波发过去你需要写一张纸条帮我买杯冰美式钱在红包里面。这个过程在PRC里叫反序列化把对象变成二进制数据。PRC框架就是那个帮你打包的快递员操作系统内核/网络接口发货快递员把包裹交给顺丰的货车货车开上高速公路。这对应图里底部的“操作系统内核”和“网络接口“阶段二网络传输高速公路包裹在高速公路上飞驰。这就是图中间那条连接两边的长线。RPC 可以走 HTTP 公路也可以走 TCP 专线阶段三网络服务器处理上海操作系统内核/网络接口收货上海的顺丰货车收到包裹网络协议拆包上海的快递员把纸条拿出来看懂了你需要“冰美式”。这个过程叫反序列化远程函数处理执行你朋友拿着钱真的跑去咖啡店买了一杯冰美式。这就是服务器真正执行了那段代码阶段四返回结果回程网络协议模块再打包你朋友把咖啡装进保温箱贴上回执单操作系统内核/网络接口回货交给顺丰发回北京客户端收到结果你在北京收到咖啡RPC 框架把结果交回给你的代码你的代码继续往下执行为什么需要“快递公司”RPC框架如果没有 RPC 框架快递公司你需要自己造一辆车写 TCP 连接代码。你需要自己学外语跟上海人沟通处理网络字节序、协议解析。你需要自己记路处理网络超时、断线重连。
返回列表