Skip to content

Latest commit

 

History

History
492 lines (414 loc) · 43.9 KB

readme.md

File metadata and controls

492 lines (414 loc) · 43.9 KB

Awesome gRPC Awesome

A curated list of useful resources for gRPC

Contents

Documentation

Community

Official Libraries and Tools

  • gRPC Core - C, C++, Ruby, Node.js, Python, PHP, C#, Objective-C
  • gRPC Java - The Java gRPC implementation. HTTP/2 based RPC
  • gRPC Kotlin - The Kotlin gRPC implementation. Based on gRPC Java
  • gRPC Node.js - gRPC for Node.js
  • gRPC Go - The Go language implementation of gRPC. HTTP/2 based RPC
  • gRPC Swift - The Swift language implementation of gRPC
  • gRPC Dart - The Dart language implementation of gRPC
  • gRPC C# - The C# language implementation of gRPC
  • gRPC Web - gRPC for Web Clients
  • gRPC Ecosystem - gRPC Ecosystem that complements gRPC
  • gRPC contrib - Known useful contributions around github
  • Homebrew gRPC - gRPC formulae repo for Homebrew
  • grpc_cli - gRPC CLI tool

Tools

CLI

  • polyglot - A gRPC command line client written in Java
  • grpcc - Node.js grpc command-line client
  • gcall - Simple Node.js gRPC command line interface
  • Evans - more expressive universal gRPC (CLI) client
  • grpcurl - Like cURL, but for gRPC: Command-line tool for interacting with gRPC servers
  • httpyac - a command line client for executing integration tests for all kinds of requests (gRPC, HTTP, MQTT, Websocket).
  • protodot - Transforming your .proto files into .dot files (and .svg, .png if you happen to have graphviz installed)
  • grpc-client-cli - interactive gRPC client
  • proto2asciidoc - Generate AsciiDoc documentation from a .proto file
  • proto-to-postman - Create postman API import collection from .proto files
  • gWhisper - Client with interactive tab-completion (uses reflection) and human readable format
  • grpcdebug - Debugs serving gRPC applications with tools like channel trace info, xDS config dump, and health checking

GUI

  • letmegrpc - Generate a web form gui from a grpc specification
  • omgRPC (Deprecated) - A GUI client for interacting with gRPC services, similar to what Postman is for REST APIs
  • grpcui - An interactive web UI for gRPC, along the lines of postman (also, a Go library for embedding these web UIs into Go HTTP servers)
  • BloomRPC - A nice and simple GUI Client. Exploring and interacting with gRPC services has never been simpler, Inspired By GraphQL-Playground and Postman
  • gRPCox - Like Postman, but for gRPC. web based GUI Client for gRPC, extremely easy to use.
  • vscode-httpyac - A VSCode extension which supports sending all kinds of requests (gRPC, HTTP, MQTT, Websocket)
  • Milkman - Extensible alternative to Postman for crafting all kinds of requests, not only for gRPC, also http, sql etc.
  • MuninRPC - Protobuf request and response testing application under the gRPC system.
  • Delivery - A simple electron app for gRPC that uses gRPCurl to autodetect all endpoints/methods and their request bodies, just modify the JSON body. Simplicity in mind.
  • (Yodelay.io) - A browser GUI Making sure your outbound 🗣️ ‘yodelay’ returns the ‘IiiOoo’ 📣 that you expect.
  • Wombat - A cross platform gRPC client. Auto-generates input fields from your proto files or the gRPC reflection API. Not another Electron app - built with Qt and Go.
  • Kreya - A gRPC client supporting environments, templating, authentication schemes and file based syncing.
  • Plumber - Another one GUI for GRPC requests (reflection only)
  • Fint - Create, run, manage performance tests and functional tests cases for gRPC service in a single (commercial) tool
  • Grip - Native macOS client for interacting with gRPC services

Testing

  • ghz - Simple gRPC benchmarking and load testing tool inspired by hey and grpcurl.
  • gatling-grpc - A Gatling stress test plugin for gRPC.
  • strest-grpc - A load tester for stress testing grpc intermediaries.
  • hazana - A Go package for creating load test tooling. Supports gRPC.
  • fortio - A microservices (http, grpc) load testing library and tool from Istio project.
  • grpc-swagger - Debugging gRPC application with swagger-ui.
  • grpc-tools - A suite of gRPC debugging tools. Like Fiddler/Charles but for gRPC.
  • jmeter-grpc-plugin - A plugin supports load test gRPC service with Jmeter.
  • camouflage - Camouflage is a backend mocking tool for HTTP, gRPC and Websockets protocols.
  • Mediator - Cross-platform GUI gRPC debugging proxy like charles but design for gRPC.

Other

  • kafka-pixy - gRPC/REST proxy for Kafka
  • grpc-proxy - gRPC reverse proxy with the goal of making it easy to expose gRPC services over the internet
  • ratelimit - Go/gRPC service designed to enable generic rate limit scenarios from different types of applications
  • ProfaneDB - A Protocol Buffers database with gRPC API, built in C++ on top of RocksDB
  • danby - A grpc proxy for the browser
  • docker-protoc - Dockerized protoc, grpc-gateway, and grpc_cli commands bundled with Google API libraries
  • grpc-json-proxy - A proxy which allows existing tools like Postman or curl to interact with gRPC servers
  • protoc-gen-gotemplate - Generic generator based on golang's template system
  • grpc-http-proxy - A reverse proxy server which translate JSON HTTP requests to gRPC calls based on protoreflect
  • grpc-mate - A dynamic proxy server that translates JSON HTTP requests into gRPC calls
  • jawlb - An unsophisticated grpclb load balancer implementation for Kubernetes and gRPC
  • protoc-gen-hbs - Fast and easy protobuf generation with handlebars and some helpers
  • grpcson - An easy to use proxy which translates JSON HTTP requests to gRPC calls with web ui
  • rk-grpc - Middleware and bootstrapper library for gRPC with logging, metrics, auth, tracing etc.
  • PropaneDB - A Protocol Buffers database with gRPC API and Golang driver.
  • APISIX - An api gateway that supports gRPC, HTTP(s) to gRPC and gRPC web request proxying.

Language-Specific

Go

  • go-GRPC Micro - Micro based gRPC framework for microservices
  • go-kit gRPC - Go Kit with gRPC as transport
  • gRPC over NATS - nRPC is an RPC framework like gRPC, but for NATS.
  • grpc-web - gRPC Web implementation for Golang and TypeScript
  • grpc-web-devtools - Chrome Browser extension to aid gRPC-Web development
  • rpcx - A RPC service framework based on net/rpc like alibaba Dubbo and weibo Motan
  • grpclb - External Load Balancing Service solution for gRPC written in Go
  • grpc-proxy - gRPC proxy is a Go reverse proxy that allows for rich routing of gRPC calls with minimum overhead
  • go-microservice-helpers - A collection of handy snippets that simplify creation of gRPC servers and clients
  • lile - Easily create gRPC services in Go
  • proteus - Generate .proto files from Go source code
  • protoc-gen-cobra - Command line tool generator for Go gRPC
  • gRPC over WebSocket - connect to a gRPC Server behind a firewall by using a pre-established WebSocket connection
  • yarpc - A message passing platform for Go, including support for gRPC
  • promgrpc - Prometheus instrumentation for gRPC based services
  • protoreflect - Reflection (Rich Descriptors) for Go Protocol Buffers
  • grpchan - Channels for gRPC: custom transports, such as in-process and HTTP 1.1
  • grpcui - Embed a gRPC web UI into a Go gRPC/HTTP server
  • clay - Minimal server platform for gRPС+REST+Swagger APIs
  • grpc-consul-resolver - Easy to use endpoints resolver for the services registered in the Consul
  • kuberesolver - gRPC Load Balancer with Kubernetes resolver
  • ttrpc - GRPC for low-memory environments
  • grapi - 😮 A surprisingly easy API server and generator in gRPC and Go
  • gripmock - gRPC Mock Server
  • grpc-gateway-boilerplate - All the boilerplate you need to get started with writing grpc-gateway powered REST services in Go
  • protoc-gen-struct-transformer - Transformation function generator for protocol buffers.
  • cmux - Connection multiplexer for GoLang: serve different services on the same port! Supports gRPC.
  • go-grpc-channelz - A channelz UI for Golang. Channelz is an approved and already implemented proposal describing the inner state of gRPC connections/channels. go-grpc-channelz provides a simple UI for channelz for easy diagnosis.
  • goprotoc - Library for writing protoc plugins in Go; also includes a pure-Go protoc replacement.
  • gRPC for production - A Golang project that provides the core requirements for a production-ready gRPC communication.
  • protoc-gen-mock - A protoc plugin to generate gRPC mock services from proto definitions in Golang
  • Pike — Generate CRUD gRPC backends from single YAML description
  • Mortar - GO framework for building gRPC (and REST) web services with DI, Telemetry and more
  • sqlc-grpc - Generate gRPC/HTTP server (with metrics, tracing, swagger and grpcui) from SQL
  • protoc-gen-fieldmask - A protoc plugin that generates fieldmask paths as static type properties of proto messages

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
  • grpc-reflection-js – gRPC Reflection client for JS

Java

  • gax-java - Google API Extensions for Java
  • Armeria - Asynchronous RPC/REST library built on top of Java 8, Netty, HTTP/2, Thrift and gRPC
  • grpc-spring-boot-starter - Spring Boot starter module for gRPC framework
  • grpc-spring-boot-starter Spring Boot starter module for gRPC framework from LogNet.
  • reactive-grpc - Integrates reactive programming with grpc-java
  • grpc-java-contrib - Useful extensions for the grpc-java library
  • rejoiner - Generates a GraphQL schema from gRPC microservices
  • hoverfly-java-grpc - MITM proxy for recording and simulating gRPC services
  • grpcmock - A gRPC Java testing tool to easily mock endpoints of gRPC services for IT or Unit testing
  • protoc-gen-java-optional - A Java Protoc plugin extending generated java classes with null safe setOrClear and getOptional methods.

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 Django ORM over gRPC for microservices written in any other languages
  • django-grpc-framework - A gRPC toolkit for Django inspired by djangorestframework
  • homi - Python micro framework for build grpc server easy and fast.
  • grpc_requests - GRPC for Humans! grpc reflection support client. you can request grpc just like REST(No need Stub!)

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

  • ts-protoc-gen - Protoc Plugin for TypeScript Declarations
  • protoc-gen-tstypes - Configurable Protoc Plugin to generate TypeScript types.
  • sisyphus.js - gRPC runtime and compiler for Web Clients by HTTP transcoding. Recommend using with Sisyphus back-end framework.
  • protoc-gen-grpc-gateway-ts - TypeScript client generator for the grpc-gateway project that generates idiomatic TypeScript clients that connect the web frontend and golang backend fronted by grpc-gateway.
  • protobuf-ts - Protocol buffers and RPC for Node.js and the Web Browser. Pure TypeScript.
  • ts-proto - Transforms your .proto files into strongly-typed, idiomatic TypeScript files!
  • grpc-js-typescript - Examples of how to use gRPC with TypeScript & Node.js.
  • nice-grpc - gRPC library for Node.js and the Browser with modern API and middleware support.

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
  • sisyphus - Modern gRPC back-end development framework based on Kotlin/Spring Boot with Message DSL/HTTP transcoding/Google AIP support.

Perl

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

C++

Resources

Tutorials

Videos

Slides

Examples

Miscellaneous

Protocol Buffers

Documentation

Tools

  • buf - Protobuf tool that includes linting and breaking change detection. Allows many types of input including directly checking remote repositories and tarballs, and has a built-in compiler as well.
  • prototools - Documentation generator & other tools for protobuf/gRPC
  • protoc-gen-doc - Documentation generator plugin for Google Protocol Buffers
  • Protoxygen - Doxygen plugin to generate documentation for protobuf/gRPC
  • openapi2proto - A tool for generating Protobuf v3 schemas and gRPC service definitions from OpenAPI specifications
  • Wireshark Protobuf Dissector - A Wireshark Lua plugin for decoding Google protobuf packets. Relevant PR and discussion.
  • protoc-gen-lint - A plug-in for Google's Protocol Buffers (protobufs) compiler to lint .proto files for style violations
  • prototool - Compile, lint, and format Protobuf files, and generate stubs for any lanuguage/plugin, along with Vim/IDE integration
  • protoc-gen-validate - Protoc plugin to generate polyglot message validators
  • go-proto-validators - Generate message validators from .proto annotations, used in grpc_validator Go gRPC middleware.
  • protolock - Protocol Buffer companion tool to protoc and git. Track your .proto files and prevent changes to messages and services which impact API compatibilty.
  • protoc-gen-map - SQL data mapper framework for Protocol Buffers.
  • api-linter - A linter for APIs defined in protocol buffers.
  • protoc-gen-struct-transformer - Transformation functions generator for Protocol Buffers.
  • pbvm - Protocol Buffers Version Manager
  • clang-format - Protocol Buffers formating tool Can be used to format on save in editor such as Visual studio code or IntelliJ.
  • intellij-protobuf-plugin - IntelliJ-based IDEs Protobuf Language Plugin that provides Protobuf language support.
  • GenDocu - gRPC Documentation and SDK generator as a Service.

Similar

  • gogoprotobuf - Fork of golang/protobuf with extra code generation features
  • MessagePack - It's like JSON, but fast and small
  • Thrift - Thrift is an interface definition language and binary communication protocol
  • TChannel - Network multiplexing and framing protocol for RPC
  • Cap’n Proto - Think Protocol Buffers, except faster
  • FlatBuffers - An efficient cross platform serialization library
  • RSocket - Application protocol providing Reactive Streams semantics
  • Twirp - A simple RPC framework with protobuf service definitions
  • Greenpack - Serialization format similar to MessagePack, but adds field versioning and type annotation

Contribute

Contributions welcome! Read the contribution guidelines first.

License

CC BY 4.0

This work is licensed under a Creative Commons Attribution 4.0 International License.