gRPC Ecosystem 初探

grpc是目前使用很广泛的远程过程调用库,在使用过程中,我们通常会使用protoc命令将proto文件转成特定的代码进行使用。那一些复杂点的应用有没有可以支撑的工具或类库呢。

前段时间在进行自定义grpc tls证书认证的过程中,知道了有一个github项目,叫gRPC Ecosystemhttps://github.com/grpc-ecosystem

这个项目里提供了很多和grpc相关的支撑库,今天去了解了大概,写一篇文章记录一下,方便有需要的同学可以按图索骥。

项目名称 所属分类 开发语言 Star数量 介绍
grpc-ecosystem/grpc-gateway 网关服务 Go 15000+

gRPC到JSON网关

该库为生成器,也就是通过proto在生成grpc服务器的同时,生成一个json的网关程序

同时,该生成器还会生成openapiv2版本的网关功能描述文件

grpc-ecosystem/grpc-health-probe 健康探测服务   Go 1200+

A command-line tool to perform health-checks for gRPC applications in Kubernetes etc.

该客户端主要是探测gRPC服务的健康度,依循GRPC Health Checking Protocol​​

按介绍的说法,使用的前提是服务器段要是实现该协议的服务器。 

grpc-ecosystem/protoc-gen-grpc-gateway-ts 网关服务

Go(实现语言)

Typescript(目标语言)

102

 protoc-gen-grpc-gateway-ts is a Typescript client generator for the grpc-gateway project. It generates idiomatic Typescript clients that connect the web frontend and golang backend fronted by grpc-gateway. 

和第一个Gateway项目配合的Typescript版本的客户端的生成器。

有点绕,就是说生成的客户端的语言是Typescript,生成器本身是Go

本质是一种代码生成器,生成的Typescript库可以直接引用,并对外暴露gRpc描述的函数方法。

grpc-ecosystem/go-grpc-middleware 扩展支持库 Go 5200+

Golang gRPC Middlewares: interceptor chaining, auth, logging, retries and more. (github.com)

为grpc服务器提供增强功能的扩展库,使用后,会方便TLS客户端认证等服务器高级使用的体验感,这个库应该对grpc开发会比较有帮助。

具体功能见附录1

grpc-ecosystem/grpcdebug 调试工具 Go 59 一个命令行的调试工具,关注人较少,和第二个类似,也需要服务器端整合到代码里一个服务器端,这个工具作为一个客户端,连接后,获得服务端的调试信息
grpc-ecosystem/java-grpc-prometheus 扩展支持库 Java 212

Java interceptors which can be used to monitor Grpc services using Prometheus. (github.com)

和gRPC java实现相配合的Prometheus日志整合库

grpc-ecosystem/awesome-grpc 样例 多种 6200+ 学习资料库
GitHub - grpc-ecosystem/grpc-httpjson-transcoding 网关服务 C++ 143 另一个C写的提供JSON网关的库,Star数量很少,要配合istio使用,看起来用的人不多
grpc-ecosystem/polyglot 通用客户端 Java 10 一个采用Java的通用grpc客户端实现,奇怪,干嘛不用go
更多用处不大的库 列表见此,gRPC Ecosystem (github.com)

这里面第一个gRPC JSON Gateway应该是用处比较大的一个了,如果需要直接把gRPC服务作为常见API服务提供给用户的话,可以使用。

另外就是Middlewares在自定义认证,扩展日志功能等方面用处较大,自定义认证主要是面向采用TLS进行客户端认证的gRPC服务,如果需要对客户端证书进行自定义的认证过程,或者采用http basic auth等方式进行客户端认证,会需要用到这个库提供的功能,再进行二次开发。

而扩展日志引用后,会把grpc内部流程进行日志的存储,对于方便调试错误用户较大。

附录1:go-grpc-middleware主要功能项

Auth

  • grpc_auth - 用于自定义认证过程的帮助库

Logging

Monitoring

Client

  • grpc_retry - 客户端重试机制的辅助类(grpc客户端确实有必要实现重试,因为并不能保证100%成功,且失败后因为grpc封装较深,不太好追踪)

Server

猜你喜欢

转载自blog.csdn.net/baijiafan/article/details/129205030