gRPC
2025/5/14大约 3 分钟componentgRPCinterceptor
gRPC 配置
gRPC 服务端配置
在 configs
目录的 YAML 配置文件中配置 gRPC 服务端参数:
grpc:
port: 8282 # 监听端口
httpPort: 8283 # profile 和 metrics 的 http 监听端口
# 安全参数设置
# 如果 type="",表示无安全连接,无需填写任何参数
# 如果 type="one-way",表示服务器端认证,只需填写 "certFile "和 "keyFile "字段
# 如果 type="two-way",表示同时进行客户端和服务器端认证,应填写所有字段
serverSecure:
type: "" # 类型,"", "one-way", "two-way"
caFile: "" # ca 文件,仅在"two-way"时有效,绝对路径
certFile: "" # 服务端 cert 文件,绝对路径
keyFile: "" # 服务端 key 文件,绝对路径
gRPC 客户端配置
在 configs
目录的 YAML 配置文件中配置 gRPC 客户端连接参数:
grpcClient:
- name: "serverNameExample" # grpc 服务名称,用于服务发现
host: "127.0.0.1" # grpc 服务 ip, 用于直接连接
port: 8282 # grpc 服务端口
timeout: 0 # 请求超时时间(s),如果为0表示关闭超时控制
registryDiscoveryType: "" # 注册和发现类型:Consul、etcd、nacos(如果为空),使用主机和端口连接服务器
enableLoadBalance: true # 是否开启负载均衡
# 安全连接设置
# type="", 这意味着没有安全连接,无需填写任何参数
# type="one-way", 表示服务器端认证,只需填写 "serverName "和 "certFile "字段
# type="two-way", 是指客户端和服务器端认证,请填写所有字段
clientSecure:
type: "" # 类似:"", "one-way", "two-way"
serverName: "" # 域名, e.g. *.foo.com
caFile: "" # 客户端 ca 文件,仅在 "two-way"中有效,绝对路径
certFile: "" # 客户端证书文件,绝对路径,如果 secureType="one-way",请在此处填写服务器端证书文件
keyFile: "" # 客户端密钥文件,仅在 "two-way"情况下有效,绝对路径
clientToken:
enable: false # 是否启用令牌身份验证
appID: "" # app id
appKey: "" # app key
组件使用参考:
内置 gRPC 拦截器
sponge 创建的服务已预集成以下 gRPC 拦截器(实现代码见 internal/server/grpc.go
),可根据需要选择使用(部分拦截器的配置可通过 configs
目录下的 YAML 配置文件进行调整)。
类别 | 功能列表 |
---|---|
基础功能 | 日志、Request ID、超时、Recovery |
安全认证 | JWT 鉴权、Token 验证 |
流量控制 | 自适应限流、熔断机制、重试策略 |
可观测性 | 链路追踪、Metrics 采集 |
点击查看 gRPC 拦截器使用示例。