gRPC作为高性能的RPC框架,离不开它优雅的设计和编码,无论是作为一名底层开发者还是上层的业务开发者,能够写出一手好的代码一直都是决定自身水平高低的一个重要体现,如果想要达到一个较高层次的水平,离不开长时间的学习和训练以及不断的感悟,而一些优秀的开源软件和框架往往存在着很多优秀的设计供我们学习,下面我们就以贯穿整个专栏的grpc-go源码说起,来尽情感受下gRPC框架的优雅设计。
基本架构
(图片来自https://grpc.io/docs/what-is-grpc/introduction/)
其实上图中只描述了作为一个RPC框架的必备组成:RPC客户端、RPC客户端Stub、RPC服务端、RPC服务端Stub、通信协议,其实除此之外,gRPC的基本架构包括以下组件:
- 客户端:客户端是请求服务的应用程序。客户端发送请求并等待响应。客户端可以是任何支持gRPC协议的应用程序。
- 服务器:服务器是提供服务的应用程序。服务器等待客户端的请求并响应。服务器可以是任何支持gRPC协议的应用程序。
- 协议:gRPC使用HTTP/2作为传输协议。HTTP/2使得gRPC具有高效、低延迟的传输特性。
- 序列化/反序列化:gRPC使用Protocol Buffers作为序列化/反序列化技术。Protocol Buffers是一种高效、可扩展、语言无关的数据格式。
- 服务定义:gRPC使用Protocol Buffers作为服务定义语言。服务定义文件描述了服务的方法、参数和返回类型。
- 代码生成器:gRPC提供