Go七天实现RPC

0.前言

本文是学习自7天用Go从零实现RPC框架GeeRPC | 极客兔兔

在此基础上,加入自己的学习过程与理解。

1.RPC 框架

RPC(Remote Procedure Call,远程过程调用)是一种计算机通信协议,允许调用不同进程空间的程序。RPC 的客户端和服务器可以在一台机器上,也可以在不同的机器上。程序员使用时,就像调用本地程序一样,无需关注内部的实现细节。

简单点说,是两个 不同的进程 之间进行信息的交换, 而这两个进程有可能分布在 不同的机器 上。 那就需要进行网络通信,那常用的就有HTTP协议。

2.为什么需要RPC

怎么理解rpc,既然有http请求了为啥还要用rpc? - 知乎

怎么理解rpc,既然有http请求了为啥还要用rpc? - 知乎

知乎上的两个回答。

大多数人疑惑既然有HTTP请求可以解决系统间调用的问题了,为什么还会有人使用RPC调用?

而RPC是先于HTTP出现的。

这两个都有各自的用途。RPC更合适用在分布式中。一般来说,RPC的性能比HTTP会更强,大多数RPC框架也提供了很多功能,

在发起下游调用的时候,有时需要做一些功能。比如我们想统计一下下游每个接口调用的耗时、超时、异常情况,这个时候就使用rpc框架非常方便了,因为大多数的rpc框架都会提供一个事件或者钩子给我们,我们就能很方便的做这些事情。除此之外,很多rpc框架还提供了强大而精准的限流、熔断等能力。

而HTTP协议在1990年才开始作为主流协议出现,而且HTTP发明的场景是用于web架构。而现在大部分的系统都是给浏览器使用的,因此HTTP协议必不可少,一些小公司用HTTP也容易搭建自己的架构,成本也低,也好维护。

3.实现RPC

Go 语言广泛地应用于云计算和微服务,成熟的 RPC 框架和微服务框架汗牛充栋。grpcrpcx等都是非常成熟的框架。一般而言,RPC 是微服务框架的一个子集,微服务框架可以自己实现 RPC 部分,当然,也可以选择不同的 RPC 框架作为通信基座。

考虑性能和功能,上述成熟的框架代码量都比较庞大,而且通常和第三方库,例如 protobufetcd等有比较深的耦合,难以直观地窥视框架的本质。该RPC 的目的是以最少的代码,实现 RPC 框架中最为重要的部分,帮助大家理解 RPC 框架在设计时需要考虑什么。代码简洁是第一位的,功能是第二位的。

因此,我们选择从零实现 Go 语言官方的标准库 net/rpc ,并在此基础上,新增了协议交换(protocol exchange)注册中心(registry)服务发现(service discovery)负载均衡(load balance) 、**超时处理(timeout processing)**等特性。

每个版本的讲解

PRC教程 1.服务端与消息编码

RPC教程 2.支持并发与异步的客户端

RPC教程 3.服务注册

RPC教程 4.超时处理机制

完整代码: https://github.com/liwook/Go-projects/tree/main/geerpc

相关推荐
DFT计算杂谈4 分钟前
无 Root 权限在 Tesla K80 零门槛部署 DeepSeek 大模型
linux·服务器·网络·数据库·机器学习
ttwuai1 小时前
Cursor 生成 CRUD 后,Go 后台接口别只测 200:JWT、RBAC 和 tenant_id 怎么验
开发语言·后端·golang
中微极客2 小时前
2026主流AI Agent框架技术选型与性能对比
运维·网络·人工智能
猿的天空6 小时前
机器人双手迎来全栈训练系统:灵初智能EgoSteer让灵巧手无所不能
网络·人工智能·计算机·ai·程序员·机器人·编程
Xzaveir_7776 小时前
OPPO、vivo、荣耀号码认证:多终端拨测矩阵与异常复现
大数据·网络·科技·矩阵·产品经理·ai-native
wuqingshun3141596 小时前
从网络角度来看,用户从输入网址到网页显示,期间发生了什么?
网络
牛马工作号6 小时前
Zigbee 专业详解:从协议到排障
网络·物联网·安全
牛马工作号6 小时前
Wi‑Fi 完全指南:从 802.11 协议到 Wi‑Fi 7、AC+AP 与 Mesh 工程组网
网络·网络协议·智能路由器
智慧光迅AINOPOL7 小时前
智慧工厂全光网怎么扛住AGV与强电磁?光电复合缆与工业级方案
网络·全光网解决方案·全光网·酒店全光解决方案·泛住宿全光网解决方案
JoyCong19987 小时前
手机变身“司令台”!ToDesk AI安卓版上线
网络·人工智能·科技·智能手机·电脑·远程工作·远程操作