Awesome
Awesome gRPC
<img src="https://cdn.rawgit.com/grpc/grpc.github.io/master/img/grpc.svg" align="right">
A curated list of useful resources for gRPC
Contents
- Documentation
- Community
- Official Libraries and Tools
- Tools
- Language-Specific
- Resources
- Protocol Buffers
- Similar
Documentation
- Website - Official documentation, libraries, resources, samples and FAQ
- Technical documentation - Collection of useful technical documentation
- gRPC status codes - Status codes and their use in gRPC
- gRPC status code mapping - HTTP to gRPC Status Code Mapping
- grpc-errors - Code examples in each language on how to return and handle error statuses.
- API Design Guide - Google Cloud API Design Guide useful for gRPC API design insights
Community
- Community links - Mailing list, Gitter, Twitter, Reddit
<a name="official"></a>
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
- grpc_cli - gRPC CLI tool
Tools
<a name="tools-cli"></a>
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
- sylk - A gRPC framework for building projects in Python, Typescript / NodeJS and Go from a simple CLI and powerful
Beta
UI platform - grpcmd - A simple, easy-to-use, and developer-friendly CLI tool for gRPC.
<a name="tools-gui"></a>
GUI
- Postman - Create, test, and debug gRPC services directly from Postman
- 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 (Deprecated) - A nice and simple GUI Client. Exploring and interacting with gRPC and gRPC-web 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 and gRPC-web 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
- Protocall - A browser-based gRPC & protobuf API client. Integrates with Github and automatically resolves all proto imports with no manual configuration.
- Grip - Native macOS client for interacting with gRPC services
- ezy - đĽ Fully-featured GUI client for gRPC/gRPC-Web.
- Warthog - A cross platform gRPC client. Input generation for all types, including nested and looped messages. Saving requests and servers.
- ptg - GUI gRPC client, it is also a performance testing tool.
- Kalisto - Automate and test intricate gRPC API workflows with ease using JavaScript-based scripting
<a name="tools-test"></a>
Testing
- ghz - Simple gRPC benchmarking and load testing tool inspired by hey and grpcurl.
- gatling-grpc - A Gatling stress test plugin for gRPC.
- karate-grpc - Example of using Karate to integrate and test 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.
- grpc_bench - A suite of gRPC benchmarks for different technologies.
- grpcdump - Tool for capture and decode GRPC messages from ethernet traffic only for Linux
- nosymouse - Saas tool to functional, perfomance and secure testing gRPC
- Step CI - Open-Source API Testing and Monitoring (now with gRPC support!)
- Microcks - A Cloud Native Computing Sandbox project đ dedicated to API Mocking and Testing (gRPC supported)
<a name="tools-other"></a>
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.
- Zilla - An API gateway built for event-driven architectures and streaming that supports standard protocols such as HTTP, SSE, gRPC, MQTT and the native Kafka protocol.
- grpc-pentest-suite - A collection of tools for pentesting gRPC-Web, including a Burp Suite extension for manipulating gRPC-Web payloads.
- sabledocs - A simple static documentation generator for Protobuf and gRPC contracts.
- limitador - Generic rate-limiter written in Rust exposing a gRPC service that implements the Envoy Rate Limit protocol (v3).
<a name="lang"></a>
Language-Specific
<a name="lang-go"></a>
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
<a name="lang-nodejs"></a>
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 wrapscreate-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
<a name="lang-java"></a>
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
andgetOptional
methods. - Vert.x gRPC - Asynchronous, non-blocking gRPC server and client built with the Vert.x HTTP server and client. It helps you create gRPC applications using a low-level message API or generated stubs.
<a name="lang-ruby"></a>
Ruby
- gruf - gRPC Ruby Framework
- gapic-generator-ruby - Generates Ruby gRPC client libraries from protocol buffer definitions of an API.
<a name="lang-py"></a>
Python
- Bali - Simplify Cloud Native Microservices development base on FastAPI and gRPC.
- 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
- grpc_requests - GRPC for Humans! grpc reflection support client. you can request grpc just like REST(No need Stub!)
- betterproto - More pythonic gRPC based on grpclib and dataclasses
<a name="lang-cs"></a>
C#
- MagicOnion - gRPC based HTTP/2 RPC Streaming Framework for .NET, .NET Core and Unity
- Grpc.Tools - gRPC and Protocol Buffer compiler for managed C# and native C++ projects. See Introduction to gRPC on .NET Core tutorial.
- GrpcBrowser - a web UI for interactively debugging all types of gRPC endpoints
<a name="lang-rust"></a>
Rust
- grpc-rs - The gRPC library for Rust built on C Core library and futures
- grpc-rust - Rust implementation of gRPC
- tower-grpc (Deprecated) - A client and server gRPC implementation based on Tower. Deprecated in favour of tonic
- tonic - A native gRPC client & server implementation with async/await support
<a name="lang-hs"></a>
Haskell
- grpc-haskell - gRPC library binding for Haskell
<a name="lang-erlang"></a>
Erlang
- Erlang grpc - Erlang library for gRPC
- grpcbox - Erlang grpc client and server
- bert - Erlang Google Protobuf V3 generator from HRL files
<a name="lang-elixir"></a>
Elixir
- grpc-elixir - The Elixir implementation of gRPC
<a name="lang-elm"></a>
Elm
- elm-protobuf - Protoc plugin generating elm code from proto definitions
<a name="lang-ts"></a>
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 - Protoc plugin and runtime for TypeScript. Generates gRPC server/client for Node.js, gRPC-Web/Twirp clients for browser, uses Fetch API.
- 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.
<a name="lang-scala"></a>
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
- fs2-grpc - gRPC implementation for FS2/cats-effect using netty
- http4s-grpc - A pure Scala gRPC implementation! Use it with http4s Ember and deploy on JVM, Node.js, and Native.
- zio-grpc - ScalaPB meets ZIO: write purely functional gRPC services and clients using ZIO
<a name="lang-dart"></a>
Dart
- grpc-dart - Protocol Buffer Compiler for Dart
<a name="lang-kotlin"></a>
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.
<a name="lang-perl"></a>
Perl
- grpc-perl - Experimental Perl gRPC library supporting grpc client
C++
<a name="lang-cpp"></a>
- QtProtobuf - gRPC and Protobuf generator and bindings for the Qt framework
- asio-grpc - Asynchronous gRPC with Boost.Asio or libunifex
<a name="lang-ballerina"></a>
Ballerina
- Ballerina gRPC - Ballerina library for gRPC
- Ballerina gRPC CLI - Ballerina gRPC CLI tool
Resources
<a name="res-tuts"></a>
Tutorials
- Getting Started with Microservices using Go, gRPC and Kubernetes
- gRPC in Production
- gRPC Go: Beyond the basics - GopherAcademy article
- Building High Performance APIs In Go Using gRPC - Small tutorial on building a simple API using gRPC and Go
- Bidirectional gRPC streaming for Go
- How We Build gRPC Services At Namely - Blog article from Namely Labs
- Our experience designing and building gRPC services - Blog series from Bugsnag on building a new Releases dashboard backend using gRPC
- Writing gRPC Interceptors in Go - A simple tutorial on gRPC Interceptors
- An introduction to gRPC
- How we use gRPC to build a client/server system in Go - A technical presentation on how to use gRPC (and Protobuf) to build a robust client/server system
- Serving gRPC and HTTP services on the same port - Small tutorial on how to serve http and gRPC on same port in Go
- Take a REST with HTTP/2, Protobufs, and Swagger - Small tutorial on how to serve http and gRPC on same port in Go
- OpenCensus for Go gRPC developers - Tutorial on how to use OpenCensus with gRPC and Go. Also available for Java and Python.
- How to develop Go gRPC microservice with HTTP/REST endpoint, middleware, Kubernetes deployment, etc - A series of blog posts for gRPC development using Go. Source code.
- GopherJS Client and gRPC Server - A guide to implementing a GopherJS frontend to a gRPC backend exposed over HTTP via the gRPC-gateway. Also available related gRPC-Web with GopherJS tutorial.
- The G-Unit Stack: Go, GraphQL, and gRPC - A blog post and tutorial on using Go, GraphQL and gRPC. Associated repo.
- Envoy, gRPC, and Rate Limiting - A tutorial on using gRPC and Envoy to build a rate limit service - Venil Noronha, VMware Open Source Technology Center
- Seamless Cloud-Native Apps with gRPC-Web and Istio - A tutorial on building a Cloud-Native web app using gRPC-Web and Istio - Venil Noronha, VMware Open Source Technology Center
- Backward and Forward Compatibility, Protobuf Versioning, Serialization - A small article on making gRPC API changes
- Node, gRPC, and Postgres - This tutorial looks at how to implement an API with Node, gRPC, and Postgres.
- Building High Performance APIs In Go Using gRPC And Protocol Buffers - An introductory gRPC Go tutorial.
- Understanding gRPC - An introductory gRPC tutorial with example application in Go.
- Part 1: Demystifying gRPC - A simple gRPC service with context cancelation and secure connection over SSL/TLS.
- Part 2: Demystifying gRPC - Extend the service with gRPC streaming and Python backend.
- Part 3: Demystifying gRPC - Add Unary and Stream gRPC Interceptors to a service and provide REST endpoints with grpc-gateway.
- gRPC in Microservices - Tutorial on using gRPC in microservice architetures.
- gRPC and Protobuffer API Documentation with proto2asciidoc and code2asciidoc - Tutorial on generating AsciiDoc documentation from a .proto file, includes a small gRPC demo project too.
- gRPC in Go - A detailed tutorial for play gRPC with Go.
- gRPC: Top 6 Things that Bite Newbies - A review of stumbling blocks for those moving to gRPC for the first time.
- A beginners guide to gRPC with Rust
- Writing a gRPC service with Ballerina - Getting started guide on building a simple gRPC service with Ballerina and invoking the service through a Ballerina gRPC client application.
- gRPC-web: Using gRPC in Your Front-End Application - A tutorial on using gRPC-web in a frontend application.
- Load balancing gRPC in Kubernetes with a service mesh - Explains issues load balancing gRPC, then employs a service mesh (istio) to L7 load balance a gRPC service in Kubernetes.
- RPC Adoption and Working Architecture - Overview of gRPC and comparison with REST and WebSockets.
<a name="res-videos"></a>
Videos
- gRPC: Google's high-performance, open-source RPC framework - GothamGo 2015 by Sameer Ajmani
- Introduction to gRPC: A general RPC framework that puts mobile and HTTP/2 first - Devoxx by Mete Atamel
- gRPC: The Story of Microservices at Square - Apigee webcast
- Scalable Realtime Microservices with Kubernetes and gRPC - Mark Mandel @ Google
- Text to Speech server with gRPC and Kubernetes - justforfunc #12
- GRPC Microservices 101 - Google Developer Group Washington by Ray Tsang
- Efficient Microservices w/ Binary Protocol - gRPC 101 - By Ray Tsang
- grpc: From Tutorial to Production - GopherCon 2017 by Alan Shreve
- Scalable Microservices with gRPC, Kubernetes, and Docker - Node Interactive 2016 by Sandeep Dinesh
- Building Microservices w/gRPC & Kubernetes - Philly ETE 2016 #49 by Kelsey Hightower
- Building high performance microservices with Kubernetes, Go, and gRPC - Google Cloud Next '17 by Andrew Jessup
- Modifying gRPC Services Over Time - Eric Anderson, Google at KubeCon + CloudNativeCon 2017 - Austin
- Next Generation Services at Indeed Using gRPC - Jaye Pitzeruse, Indeed.com at KubeCon + CloudNativeCon 2017 - Austin
- Generating Unified APIs with Protocol Buffers and gRPC - A video on Protocol Buffers, gRPC and Envoy from Lyft.
- Intro to gRPC: A Modern Toolkit for Microservice Communication - A video from Twilio's Signal Conference
- gRPC and Go: Developing Efficient and Type-Safe Services
- Best Practices for (Go) gRPC Services
- Creating GopherJS Apps with gRPC-Web - At FOSDEM
- justforfunc #31: gRPC Basics - JustForFunc: Programming in Go series Episode 31 covering gRPC
- Efficient service communication with gRPC - Talk at microXchg 2018 Berlin
- gRPC Java Course on Udemy - Online Course (4 hours) that walks through several examples and implementations of gRPC using the Java Language
- HTTP and JSON for your gRPC Services - Michael Hamrah - from Full Stack Fest
- Types All the Way Down â gRPC and Go Infrastructure at Lyft - Christopher Burnett at Istanbul Tech Talks
- Using gRPC for Long-lived and Streaming RPCs - Eric Anderson, Google at KubeCon North America 2018
- Intro: gRPC-Web - Stanley Cheung & Wenbo Zhu, Google at at KubeCon North America 2018
- gRPC Loadbalancing on Kubernetes - Presentation at KubeCon Europe 2018. Source.
- Putting gRPC in Practice - Presentation on working with gRPC.
- The Story of Why We Migrate to gRPC and How We Go About It - Matthias GrĂźter, Spotify at KubeCon + CloudNativeCon Europe 2019
- Authentication and Security in gRPC Microservices - Jan Tattermusch, Google at KubeCon + CloudNativeCon Europe 2019
- JustFootballâs Journey to gRPC + Linkerd in Production - Ben Lambert, & Kevin Lingerfelt at KubeCon + CloudNativeCon Europe 2019
- gRPC load balancing and Service Mesh - Vishal Powar, Google at KubeCon + CloudNativeCon Europe 2019
- Adopting gRPC: Overcoming Team and Technical Hurdles - GOTO 2019 ⢠Adopting gRPC: Overcoming Team and Technical Hurdles ⢠Josh Humphries
- Moving to gRPC Java - Mya Pitzeruse at Indeed.com
- Building Microservices with Go - A series of tutorials for building microservices with Go, covers using gRPC (source).
- Building a gRPC application in Ballerina - A Demo on how to build a gRPC application in Ballerina at gRPC Meetup
<a name="res-slides"></a>
Slides
- gRPC Overview - An overview at gRPC: Talk at Slack by Varun Talwar
- gRPC Design and Implementation - April 2016 talk at Stanford by Varun Talwar
- gRPC - boilerplate to high-performance scalable APIs - code.talks 2015 by Robert Kubis
- HTTP2 and gRPC - A simple introduction about HTTP2 and gRPC by Xin Gong Chang
- gRPC and Microservices - Overview of Google's open source microservices framework - gRPC, based on HTTP2 and protocol buffers. Presented at Golang Melbourne, June 2016 by Jonathan Gomez
- gRPC and Microservices - Golang Melbourne - June 2016 Go Hack Night by Jonathan Gomez
- Scalable Microservices with gRPC, Kubernetes, and Containers - DevFest Ukraine
- OpenAPI and gRPC Side by-Side - APIStrat Conference - Tim Burks
- Go+Microservices at Mercari - Taichi Nakashima at Go Conference 2017
- gRPC - RPC rebirth? - Presentation about gRPC at the 23. NetPonto community meeting in Porto by LuĂs Barbosa
<a name="res-examples"></a>
Examples
- gifinator - A sample application demonstrating Kubernetes, gRPC, Go and cute Gophers demoed at Google GCP Next 2017
- Text to Speech server with gRPC and Kubernetes - justforfunc #12
- Multiplayer Simon Says - A Game using gRPC and Kubernetes - Sample app with Go server and clients using Node.js (on Arduino and web), and Java (Android and CLI)
- Go Microservices Example - HTTP up front, Protobufs in the rear
- Streaming RPC's using gRPC - A quick demo of bi-directional streaming RPC's using grpc, Go and Python
- gRPC Java Examples - A collection of useful/essential gRPC Java Examples
- gRPC/OpenCensus Demo - Export metrics and traces from gRPC servers and clients using Java, Go and Prometheus
- go-micro-services - An demonstration of Golang micro-services that expose a HTTP/JSON frontend and then leverages gRPC for inter-service communication
- Colossus - An example multi-language gRPC microservice architecture built by Bazel and targeting Kubernetes
- coolstore-microservices - A containerized polyglot gRPC microservices based on .NET Core, Nodejs and more running on Istio
- gRPC Microservices with Go and Kubernetes - A sample application use gRPC in microservice and deploy in kubernetes.
- Making a Multiplayer Game With Go and gRPC - gRPC game example in Go. Source.
- Detailed examples for Go - A detailed gRPC example in Go.
- Envoy proxy as an API gateway for gRPC microservice - A gRPC service in Go, built with Bazel and deployed into Kubernetes cluster with Tilt and REST API enabled. Source
- gRPC Ballerina service Example - A collection of simple gRPC service examples written in Ballerina
- gRPC Ballerina client Example - A collection of simple gRPC client examples written in Ballerina
- Go gRPC features examples - A collection of gRPC and Go examples showcasing features of the framework
- Hello gRPC - Simple server and client examples showcasing gRPC features(including proxy and propagate, running in containers and kubernetes) with Java/Kotlin/Go/NodeJs/Python/Rust/C++/C#.
- GCP - Online Boutique application rewritten in Ballerina - Online Boutique application rewritten in Ballerina
<a name="res-misc"></a>
Miscellaneous
- gRPC with Load Balancer or Proxy or on AWS - Various notes on doing gRPC behind a load balancer or proxy or on AWS
- gRPC service upgrade, versioning - A short possibly useful discussion on gRPC service upgrade and versioning
- Packaging Generated Code for gRPC Services - An article demonstrating a strategy on how to version and package gRPC libraries
- Migrating APIs from REST to gRPC at WePay - A blog post on migrating from REST to gRPC
<a name="proto"></a>
Protocol Buffers
<a name="proto-docs"></a>
Documentation
- Website - Official website and documentation
- Third-Party Add-ons for Protocol Buffers - List of add-ons for Protocol Buffers in main github repository
<a name="proto-package-managers"></a>
Package Managers
- buffrs â A modern package manager for protocol buffers and gRPC architectures.
<a name="proto-tools"></a>
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-apidocs - Documentation generator plugin 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
andgit
. 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.
- protolint - A pluggable linter and fixer to enforce Protocol Buffer style and conventions.
- Mouse Melon - A user-friendly Protocol Buffers data editor.
Similar
- gogoprotobuf - [[Deprecated] 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
This work is licensed under a Creative Commons Attribution 4.0 International License.