gRPC技术指南脑图
2026-01-16 19:11:45 0 举报
AI智能生成
gRPC是一种高性能、开源和通用的RPC框架,最初由Google开发。它基于HTTP/2协议传输,通过 Protocol Buffers 或 JSON 支持多种编程语言。该框架允许客户端和服务器端进行无缝通信,无论它们处于何种开发环境或平台。 核心内容:gRPC使用Protocol Buffers来序列化结构化数据,实现高级别的互操作性和性能优化。它支持四种类型的调用方式:简单RPC、服务器流式RPC、客户端流式RPC和双向流式RPC,以适应不同的业务场景和需求。 文件类型:gRPC通常涉及生成代码、配置文件和服务定义文件,比如`.proto`文件用于定义服务的接口和消息类型,客户端和服务端代码则会通过编译`.proto`文件自动生成。 修饰语:gRPC是“通用、高级别的、高效、可互操作、开源的”,它的设计旨在简化微服务之间的复杂交互,提供严格的服务接口定义,以及面向未来的语言无关性和平台无关性。
作者其他创作
大纲/内容
安装
gRPC与Protobuf安装步骤
安装gRPC Go库(含替代命令)
安装protoc-gen-go工具
下载Windows版protoc.exe并配置环境
变量
提供百度云下载链接(需VPN资源)
gRPC简介
核心特性
语言中立、平台中立的开源RPC系统
支持跨语言客户端-服务端交互(如Java
服务端+Go客户端)
微服务通信价值
解决微服务独立代码库的通信问题
默认使用Protobuf序列化,支持高效RP
C调用
Protobuf与gRPC协作
通过.proto文件定义服务和消息类型
message定义方法参数和返回类型
Protobuf→Go转换
Package转换规则
proto包名默认映射为Go包名
可通过go_package选项指定不同包名
Message转换规则
proto message对应Go struct,采用驼
峰命名
嵌套message/enum转换为Parent_Chil
d结构
生成字段getter方法及枚举常量、map工
具
Service转换规则
生成Go接口(客户端接口自动实现,服
务端需手动实现)
示例:TestService的Test方法转换后生
成对应接口
Protobuf语法
Hello项目流程
编写.proto描述文件(定义Hello Service
及消息结构)
编译生成.pb.go文件(含服务接口、客
户端实现、结构体)
服务端实现HelloServer接口并注册服务
客户端调用.pb.go中的方法(如SayHell
o)
关键注意事项
禁止手动编辑.pb.go文件
理解proto定义与Go结构的对应关系
小案例
OpenSSL安装(Windows)
官方无Windows包,推荐第三方工具(
如slproweb.com)
安装步骤:选择版本→指定路径→设置
环境变量(添加bin目录到Path)
生成公钥私钥命令(openssl genrsa生
成私钥,rsa -pubout生成公钥)
HTTP网关
背景与目标
etcd3升级gRPC后需同时提供REST API
,grpc-gateway解决双服务维护问题
实现HTTP请求转gRPC请求,响应转JSO
N返回
grpc-gateway安装
命令:go get -u github.com/grpc-ecosy
stem/grpc-gateway/protoc-gen-grpc-g
ateway
实现步骤
编写带HTTP option的.proto文件(定义
POST路由等)
编译proto(含google/api文件,生成转
换handler的.pb.gw.go)
实现服务端(开启HTTP服务转发请求)
和客户端(调用gRPC)
升级版服务端
单服务同时支持HTTP和gRPC(基于HT
TP2,需开启TLS)
步骤:注册TLS的gRPC服务→注册TLS的
gateway服务→开启HTTPS server
运行效果:HTTP POST请求可获取JSO
N响应
内置Trace
核心能力
支持客户端与服务端请求追踪
辅助调试基本请求状态
服务端Trace实践
启动trace server监听指定端口
查看事件和请求日志的具体操作与效果
拦截器
内置功能
基于golang.org/x/net/trace实现请求追
踪
默认开启,可查看事件和请求日志
服务端Trace使用
开启HTTP服务监听端口(如50051)查
看trace信息
访问/debug/events查看服务端事件(服
务注册、启动信息)
访问/debug/requests查看请求日志(最
近10条请求的状态、耗时、响应)
认证
Interceptor应用场景
统一处理认证逻辑(避免每个接口重复
实现)
客户端可添加请求日志(记录参数、耗
时)
实现示例
服务端interceptor处理Token认证
客户端interceptor添加日志
推荐工具
go-grpc-middleware:支持多拦截器链
式组装
收藏
0 条评论
下一页