gPRC生态系统

2,870 阅读14分钟

gRPC资源列表,系统的介绍了gRPC的使用生态,包括文档,官方库,多语言对于gRPC的实现,CLI,Web客户端及其他一些非常好用的工具。

文档

社群

官方库和工具

  • gRPC Core - C, C++, Ruby, Node.js, Python, PHP, C#, Objective-C关于gRPC的实现都是以src/core为基础,在底层都是对于C语言核心库的调用。
  • gRPC Java - gRPC的JAVA实现,基于HTTP/2
  • gRPC Node.js - gRPC的NodeJs实现。
  • gRPC Go - gRPC的Go实现,基于HTTP/2
  • gRPC Swift - gRPC的Swift实现。
  • gRPC Dart - gRPC的Dart实现。
  • gRPC C# - gRPC的C#实现。
  • gRPC Web - 提供了能够让浏览器访问gRPC服务的Js库。
  • gRPC Ecosystem - 丰富gRPC了生态系统。
  • gRPC contrib - github上已知的有用的贡献列表。
  • Homebrew gRPC - Homebrew下载的gRPC项目。
  • grpc_cli - gRPC客户端。

工具

CLI

  • polyglot - 使用java实现的gRPC命令行客户端。
  • grpcc - 使用Nodejs实现的gRPC命令行客户端。
  • gcall - 使用Nodejs实现的简单的gRPC命令行客户端。
  • Evans - 功能丰富更加且通用的gRPC命令行客户端。
  • grpcurl - 类似cURL,但是只适用于gRPC: 和gRPC服务端交互的命令行工具。
  • protodot - 将.proto文件中函数的调用关系图形化,生成.dot.svg.png等文件,前提是安装graphviz

什么是graphviz呢,有什么作用呢?推荐两篇文章:

Graphviz 安装及结合sublime
Graphviz 简易教程

GUI

  • letmegrpc - 生成符合规则的Web类型的GUI。
  • omgRPC (废除) - 就像使用Postman模拟请求HTTP REST接口一样,这是一个与gRPC后端服务交互的GUI客户端。
  • grpcui - 一个交互式的gRPC Web客户端,与Postman一样(还有一个Go库,用于将这些web UI嵌入Go HTTP服务器)。
  • BloomRPC - 一个友好和简单的GUI客户端。实现灵感来自GraphQL-PlaygroundPostman,和gPRC交互从未如此简单。
  • gRPCox - 类似cURL,但只适用于gRPC,基于Web页面的GUI客户端,真的非常好用。
  • MuninRPC - 建立在gRPC系统之上的用于测试Protobuf请求和响应的应用。
  • Delivery - gRPC的一个简单的应用程序,使用gRPCurl自动检测所有端点/方法及其请求,需要做的只是修改JSON文件内容。
  • (Yodelay.io) - 基于浏览器的客户端,确保你的输入输出匹配。

测试

  • ghz - 基于heygrpcurl的简单gRPC基准测试和负载测试工具。
  • gatling-grpc - 用于gRPC的Gatling压力测试插件。
  • strest-grpc - gPRC的压力测试工具。
  • hazana - 用于创建负载测试工具的Go包,支持gRPC。
  • fortio - 来自Istio项目的微服务(http,grpc)负载测试库和工具。
  • grpc-swagger - 使用swagger-ui调试gPRC应用程序。
  • grpc-tools - gRPC调试工具,类似Fiddler/Charles,仅仅针对gRPC。
  • jmeter-grpc-plugin - 通过使用Jmeter支持负载测试gRPC服务的插件。

其他

  • kafka-pixy - kafka的gRPC/REST代理。
  • grpc-proxy - gRPC反向代理,旨在便捷地暴露gPRC服务。
  • ratelimit - Go/gRPC服务,旨在支持应用中不同的速率方案。
  • ProfaneDB - 建立在RocksDB之上的,一种基于gRPC API Protocol Buffers数据库。
  • danby - 浏览器上的gRPC代理。
  • docker-protoc - 与Google API库捆绑在一起的容器化protoc、gPRC网关和grpc_cli命令。
  • grpc-json-proxy - 能够让Postman,curl等与gRPC服务器交互的工具。
  • protoc-gen-gotemplate - 基于golang模板系统的通用生成器。
  • grpc-http-proxy - 基于protoreflect的能够将HTTP请求转换为gRPC调用的反向代理服务。
  • grpc-mate - 将JSON HTTP请求转换为gRPC调用的动态代理服务器。
  • jawlb - 一个简单的用于Kubernetes和gRPC的grpclb负载均衡器的实现。
  • pbhbs - 基于protobuf定义和模板生成文件。

特定语言实现

Go

  • go-GRPC Micro - Micro基于gRPC的微服务框架。
  • go-kit gRPC - Go Kit以gRPC作为数据传输。
  • gRPC over NATS - nRPC是一种RPC框架,就像gRPC一样, 但是只是针对NATS
  • grpc-web - 用于Golang和TypeScript的gRPC Web实现。
  • grpc-web-devtools - Chrome浏览器扩展以帮助gRPC Web开发。
  • rpcx - 基于net/RPC的RPC服务框架,就像alibaba Dubboweibo Motan
  • grpclb - Go编写的gRPC外部负载平衡服务解决方案。
  • grpc-proxy - GRPC代理是一个GO反向代理,以最小开销实现丰富路由的GRPC调用。
  • go-microservice-helpers - 简单的创建gRPC客户端和服务端的代码集合。
  • lile - 在Go中快捷地创建gRPC服务。
  • proteus - 通过Go的源代码创建.proto文件。
  • protoc-gen-cobra - 用于生成Go gRPC的命令行工具。
  • gRPC over WebSocket - 使用预先建立的WebSocket连接访问防火墙后面的gRPC服务器。
  • yarpc - Go的消息传递平台,支持gRPC。
  • promgrpc - 基于gRPC服务的Prometheus仪表。
  • protoreflect - Go Protbuf Buffers的反射(富描述符)。
  • grpchan - gRPC的通道:自定义传输,如进程内和HTTP 1.1。
  • grpcui - 将gRPC web UI嵌入Go gRPC/HTTP服务器。
  • clay - gRPC+REST+Swagger API的最小服务器平台。
  • grpc-consul-resolver - 针对Consul中注册的服务,易于使用的端点解析器
  • kuberesolver - 带有Kubernetes解析器的gRPC负载均衡器。
  • ttrpc - 适用于小内存环境的gRPC。
  • grapi - 在gRPC和Go中的一个极其简单的API服务器和生成器。
  • gripmock - gRPC模拟服务器。
  • grpc-gateway-boilerplate - 在Go中编写gRPC网关支持的REST服务所需的样板文件。
  • protoc-gen-struct-transformer - protocol buffers的转换函数生成器。
  • cmux - Golang中的多路连接器:在同一端口上提供不同的服务,支持gRPC。
  • goprotoc - 用于在Go中编写protoc插件的库;包括纯Go的protoc替换。
  • gRPC for production - 提供了可用于生产的,满足gRPC通信的核心需求的Go项目。
  • protoc-gen-mock - 从proto文件生成gRPC模拟服务的proto插件。

Node.js

  • Mali - A minimalistic gRPC microservice framework for Node.js
  • grpc-host-builder - Lightweight library for building gRPC services with server side interceptors support
  • grpc-caller - An improved Node.js gRPC client
  • grpc-create-metadata - Helper utility for creating gRPC Metadata
  • grpc-create-error - Utility function for creating Errors for gRPC responses
  • grpc-error - GRPCError class that wraps create-grpc-error
  • grpc-inspect - gRPC protocol buffer inspection utility
  • Node.js Proto Files - All of the Google API's protocol buffer files
  • grpc-bus - Call gRPC services (even streams!) from the browser over any two-way socket to Node and soon Go
  • grpc-errors - A quick and easy way of generating errors for use with grpc
  • grpc-dynamic-gateway - Like grpc-gateway, but written in node and dynamic.
  • node-protoc-plugin - Create protoc code-generation plugins easily in nodejs.
  • grpc-promise - GRPC promisify module for all Request/Response types: standard and stream
  • firecomm - Feature library for gRPC-Node
  • grpc-web-gateway – HTTP & WebSocket proxy gateway for gRPC services

Java

Ruby

  • gruf - gRPC Ruby Framework
  • gapic-generator-ruby - Generates Ruby gRPC client libraries from protocol buffer definitions of an API.

Python

  • grpclib - Pure-Python gRPC implementation, based on hyper-h2 project
  • pytest-grpc - pytest plugin which allow test gRPC services
  • grpcalchemy - The Python micro framework for building gPRC application
  • django-grpc - Django application to build gRPC services with access to ORM, settings and everything else
  • garuda - Automagically Exposing Djagno ORM over gRPC for microservices written in any other languages

C#

Rust

  • grpc-rs - The gRPC library for Rust built on C Core library and futures
  • grpc-rust - Rust implementation of gRPC
  • tower-grpc - A client and server gRPC implementation based on Tower
  • tonic - A native gRPC client & server implementation with async/await support

Haskell

Erlang

  • Erlang grpc - Erlang library for gRPC
  • grpcbox - Erlang grpc client and server
  • bert - Erlang Google Protobuf V3 generator from HRL files

Elixir

Elm

  • elm-protobuf - Protoc plugin generating elm code from proto definitions

TypeScript

Scala

  • ScalaPB - Protocol Buffer Compiler for Scala
  • Akka-gRPC - Akka gRPC provides support for building streaming gRPC servers and clients on top of Akka Streams.
  • Mu - Mu RPC is a purely functional library for building RPC endpoint-based services with support for gRPC and HTTP/2

Dart

  • grpc-dart - Protocol Buffer Compiler for Dart

Kotlin

  • kroto-plus - gRPC Coroutines Integration and Protobuf message DSL support
  • grpc-kotlin - A protoc plugin for generating native Kotlin bindings using coroutine primitives for gRPC services
  • gapic-generator-kotlin - Generates coroutine-based gRPC Kotlin client libraries from a protocol buffer description of an API
  • grpc-kapt - Annotation driven gRPC clients & servers in Kotlin with coroutines

Perl

  • grpc-perl - Experimental Perl gRPC library supporting grpc client

资源

教程

视频

幻灯片

示例

未归类

Protocol Buffers

文档

工具

  • buf - Protobuf工具,功能包括格式和破坏性变更检测。允许多种类型的输入,包括直接检查远程存储库和tarball,并且还具有内置的编译器。
  • prototools - 用于protobuf/gRPC的文档生成器和其他工具。
  • protoc-gen-doc - 关于Google Protocol Buffers的文档生成器插件。
  • Protoxygen - Doxygen 为protobuf/gRPC生成文档的插件。
  • openapi2proto - 根据OpenAPI规范生成Protobuf v3架构和gRPC服务定义的工具。
  • Wireshark Protobuf Dissector - 一个Wireshark Lua插件,用于解码Google protobuf数据包。
  • protoc-gen-lint - 内置于Google's Protocol Buffers编译器的插件,防止.proto文件样式冲突
  • prototool - 编译,整理和格式化Protobuf文件,并为任何语言/插件生成存根,以及Vim/IDE集成。
  • protoc-gen-validate - 用于生成多语言消息校验器的Protoc插件。
  • go-proto-validators - 根据.proto批注生成消息验证器,用于grpc_validatorgRPC中间件中。
  • protolock - 跟踪您的.proto文件,并防止对影响API兼容性的消息和服务进行更改。
  • protoc-gen-map - 用于Protocol Buffers的SQL数据映射器框架。
  • api-linter - 用于protocol buffers中定义的API的linter。
  • protoc-gen-struct-transformer - Protocol Buffers的转换函数生成器。

类似的协议文件

  • gogoprotobuf - 带有额外代码生成功能的golang/protobuf的分支。
  • MessagePack - 类似JSON,但是更快,更小。
  • Thrift - IDL(接口定义语言)定义,二机制通信协议。
  • TChannel - 具备网络复用和帧协议的RPC。
  • Cap’n Proto - 看看Protocol Buffers吧, 这个更快。
  • FlatBuffers - 一个高效的跨平台序列化库。
  • RSocket - 提供反应式流语义的应用协议。
  • Twirp - 具有protobuf服务定义的简单的RPC框架。
  • Greenpack - 序列化格式类似MessagePack,但是增加了添加字段版本控制和类型注释功能。

备注

  • 内容基于awesome-grpc的commitId为daba9b9183fe8ebb60018cb87c3508007e24e692整理。

欢迎关注公号:程序员的金融圈

一个探讨技术,金融,赚钱的小圈子,为你提供最有味道的内容!