从 0 到 1 开发一款高性能 rpc 框架

RPC (Remote Procedure Call),即远程过程调用。它允许本地计算机调用另一台远程计算机上的程序,不需要了解底层网络细节,从而使得整个过程就像本地调用一样方便。 相信社区上现在还有不少人对前后端交互或者远程系统间调用的理解还是停留在 http 调用的层面。以 http 协议的形式发起的调用,其实就是一种 rpc 调用。在分布式/微服务环境中,前端/客户端发起的一个调用,可能会经过后端数十个服务,所以每个服务之间的通信效率就显得非常重要。http1.x 是文本协议,文本协议的传输效率比较低下,这必然会导致整个链路的耗时成本增加。所以如何解决分布式/微服务环境中的服务间的通信问题,是我们通向一个资深工程师的必经之路。这就是 rpc 框架设计的初衷。

本小册主要从一个开发者的角度,从技术选型到编码实现,从 0 到 1去实现一款高性能 rpc 框架,主要技术点包括 client 和 server 通讯、超时机制实现、协议的制定、传输层 transport 实现、编解码、序列化、连接池、服务发现、负载均衡、拦截器、分布式链路追踪、认证鉴权、组件化、插件体系、框架性能优化等。 通过此小册,你可以使用 go 语言从框架搭建、client 和 server 通讯、超时机制实现、协议的制定、传输层 transport 实现、编解码、序列化、连接池、服务发现、负载均衡、拦截器、分布式链路追踪、认证鉴权、组件化、插件体系、框架性能优化等等多方面从 0 到 1 一步步 coding 来完成一个高性能的 rpc 框架。