The Open Source Community Tooling Built on gRPC
09 Jun 2020
I am getting time to map out the diverse API toolbox landscape I see unfolding lately. I am aggregating the most used open source projects across the leading API specifications in use. While gRPC is more of a style or pattern than it is a specification--it is a fast growing standard. I'll be doing a separate analytics of Protocol Buffers, but I wanted to look at the cream on top of what is being build within the gRPC community. Revealizing almost a hundred open source tools loosely organized by what they deliver as part of the API lifecycle.
- grpc - (forks: 6625) (stars: 26420) (watchers: 26420) - the c based grpc (c++, python, ruby, objective-c, php, c#)
- grpc - (forks: 6625) (stars: 26420) (watchers: 26420) - the c based grpc (c++, python, ruby, objective-c, php, c#)
- rpcx - (forks: 772) (stars: 4675) (watchers: 4675) - a zero cost, faster multi-language bidirectional microservices framework in go, like alibaba dubbo, but with more features, scale easily. try it. test it. if you feel it's better, use it! 𝐉𝐚𝐯𝐚有𝐝𝐮𝐛𝐛𝐨, 𝐆𝐨𝐥𝐚𝐧𝐠有𝐫𝐩𝐜𝐱!
- surging - (forks: 860) (stars: 2875) (watchers: 2875) - surging is a micro-service engine that provides a lightweight, high-performance, modular rpc request pipeline. the service engine supports http, tcp, ws, grpc, mqtt, udp, and dns protocols. it uses zookeeper and consul as a registry, and integrates it. hash, random, polling, fair polling as a load balancing algorithm, built-in service governance to ensure reliable rpc communication, the engine contains diagnostic, link tracking for protocol and middleware calls, and integration skywalking distributed apm
- iris - (forks: 2035) (stars: 18281) (watchers: 18281) - The fastest community-driven web framework for go. grpc, automatic https with public domain, mvc, sessions, caching, versioning api, problem api, websocket, dependency injection and more. fully compatible with the standard library and 3rd-party middleware packages. | https://bit.ly/iriscandothat1 | https://bit.ly/iriscandothat3 |
- grpc web - (forks: 295) (stars: 2995) (watchers: 2995) - grpc web implementation for golang and typescript
- tonic - (forks: 167) (stars: 2166) (watchers: 2166) - a native grpc client & server implementation with async/await support.
- grpc dotnet - (forks: 286) (stars: 1894) (watchers: 1894) - grpc for .net
- grpc go - (forks: 2418) (stars: 11457) (watchers: 11457) - the go language implementation of grpc. http/2 based rpc
- grpc java - (forks: 2525) (stars: 7531) (watchers: 7531) - the java grpc implementation. http/2 based rpc
- protobuf - (forks: 502) (stars: 3801) (watchers: 3801) - protocol buffers for go with gadgets
- wire - (forks: 428) (stars: 3148) (watchers: 3148) - grpc and protocol buffers for android, kotlin, and java.
- protoactor go - (forks: 339) (stars: 3192) (watchers: 3192) - proto actor - ultra fast distributed actors for go, c# and java/kotlin
- armeria - (forks: 534) (stars: 2570) (watchers: 2570) - asynchronous rpc/rest library built on top of java 8, netty, http/2, thrift and grpc
- grpc node - (forks: 311) (stars: 2250) (watchers: 2250) - grpc for node.js
- MagicOnion - (forks: 242) (stars: 1732) (watchers: 1732) - unified realtime/api engine for .net core and unity.
- go chassis - (forks: 282) (stars: 1526) (watchers: 1526) - a microservice framework for rapid development of micro services in go with rich eco-system
- grpc spring boot starter - (forks: 425) (stars: 1434) (watchers: 1434) - spring boot starter module for grpc framework.
- mix - (forks: 184) (stars: 1448) (watchers: 1448) - ☄️ single-threaded coroutine php microservice framework
- lile - (forks: 64) (stars: 1153) (watchers: 1153) - easily generate grpc services in go ⚡️
- grpc rs - (forks: 151) (stars: 1108) (watchers: 1108) - the grpc library for rust built on c core library and futures
- grpc swift - (forks: 224) (stars: 972) (watchers: 972) - the swift language implementation of grpc.
- grpc rust - (forks: 93) (stars: 974) (watchers: 974) - rust implementation of grpc
- ratelimit - (forks: 138) (stars: 931) (watchers: 931) - go/grpc service designed to enable generic rate limit scenarios from different types of applications.
- colossus - (forks: 55) (stars: 881) (watchers: 881) - colossus — an example microservice architecture for kubernetes using bazel, go, java, docker, kubernetes, minikube, gazelle, grpc, prometheus, grafana, and more
- go micro services - (forks: 127) (stars: 796) (watchers: 796) - http up front, protobufs in the rear
- grpc - (forks: 98) (stars: 716) (watchers: 716) - an elixir implementation of grpc
- mali - (forks: 37) (stars: 598) (watchers: 598) - a minimalistic grpc microservice framework for node.js
- brpc java - (forks: 166) (stars: 527) (watchers: 527) - java implementation for baidu rpc, multi-protocol & high performance rpc.
- tower grpc - (forks: 68) (stars: 566) (watchers: 566) - a grpc client & server implementation.
- grpclib - (forks: 49) (stars: 525) (watchers: 525) - pure-python grpc implementation for asyncio
- gubernator - (forks: 42) (stars: 449) (watchers: 449) - high performance rate limiting microservice and library
- grpc dart - (forks: 93) (stars: 392) (watchers: 392) - the dart language implementation of grpc.
- nrpc - (forks: 34) (stars: 384) (watchers: 384) - nrpc is like grpc, but over nats
- saluki - (forks: 211) (stars: 268) (watchers: 268) - spring boot starter module for grpc framework.
- gruf - (forks: 38) (stars: 325) (watchers: 325) - grpc ruby framework
- kroto plus - (forks: 22) (stars: 351) (watchers: 351) - grpc kotlin coroutines, protobuf dsl, scripting for protoc
- grapi - (forks: 21) (stars: 307) (watchers: 307) - 😮 a surprisingly easy api server and generator in grpc and go
- evans - (forks: 69) (stars: 1490) (watchers: 1490) - evans: more expressive universal grpc client
- grpc web - (forks: 374) (stars: 4306) (watchers: 4306) - grpc for web clients
- flatbuffers - (forks: 2251) (stars: 14468) (watchers: 14468) - flatbuffers: memory efficient serialization library
- grpc gateway - (forks: 1120) (stars: 8514) (watchers: 8514) - grpc to json proxy generator following the grpc http spec
- gloo - (forks: 193) (stars: 2383) (watchers: 2383) - the feature-rich, kubernetes-native, next-generation api gateway built on envoy
- microservices demo - (forks: 1653) (stars: 7917) (watchers: 7917) - sample cloud-native application with 10 microservices showcasing kubernetes, istio, grpc and opencensus.
- awesome grpc - (forks: 266) (stars: 3014) (watchers: 3014) - a curated list of useful resources for grpc
- grpc experiments - (forks: 181) (stars: 1038) (watchers: 1038) - experiments and proposals for grpc features.
- grpc by example java - (forks: 248) (stars: 581) (watchers: 581) - a collection of useful/essential grpc java examples
- startup os - (forks: 98) (stars: 502) (watchers: 502) - working examples of google's open source stack and deployment to the cloud.
Internet of Things (IoT)
- thingsboard - (forks: 1996) (stars: 5773) (watchers: 5773) - open-source iot platform - device management, data collection, processing and visualization.
- alibaba rsocket broker - (forks: 64) (stars: 309) (watchers: 309) - alibaba rsocket broker: mesh, streaming & iot
- cilium - (forks: 632) (stars: 5542) (watchers: 5542) - api-aware networking and security using ebpf and xdp
- servicetalk - (forks: 60) (stars: 553) (watchers: 553) - a networking framework that evolves with your application
- bloomrpc - (forks: 154) (stars: 3834) (watchers: 3834) - gui client for grpc services
- grpcui - (forks: 66) (stars: 801) (watchers: 801) - an interactive web ui for grpc, along the lines of postman
- letmegrpc - (forks: 42) (stars: 362) (watchers: 362) - [maintainer wanted] generates a web form gui from a grpc specification
- prototool - (forks: 245) (stars: 4304) (watchers: 4304) - your swiss army knife for protocol buffers
- chat - (forks: 664) (stars: 3349) (watchers: 3349) - instant messaging server; backend in go; ios, android, web, command line clients; chatbots
- liftbridge - (forks: 71) (stars: 1779) (watchers: 1779) - lightweight, fault-tolerant message streams.
- chatengine - (forks: 94) (stars: 367) (watchers: 367) - open source mtproto server written in golang with compatible telegram client
Command Line Interface
- grpcurl - (forks: 147) (stars: 3205) (watchers: 3205) - like curl, but for grpc: command-line tool for interacting with grpc servers
- grpcc - (forks: 76) (stars: 1035) (watchers: 1035) - a grpc cli interface for easy testing against grpc servers
- grpc health probe - (forks: 52) (stars: 480) (watchers: 480) - a command-line tool to perform health-checks for grpc applications in kubernetes etc.
- polyglot - (forks: 49) (stars: 474) (watchers: 474) - a universal grpc command line client
- rejoiner - (forks: 122) (stars: 2982) (watchers: 2982) - generates a unified graphql schema from grpc microservices and other protobuf sources
- openapi2proto - (forks: 71) (stars: 594) (watchers: 594) - a tool for generating protobuf v3 schemas and grpc service definitions from openapi specifications
- go grpc middleware - (forks: 350) (stars: 2730) (watchers: 2730) - golang grpc middlewares: interceptor chaining, auth, logging, retries and more.
- hyperf - (forks: 474) (stars: 2641) (watchers: 2641) - 🚀a coroutine framework that focuses on hyperspeed and flexibility. building microservice or middleware with ease.
- coolstore microservices - (forks: 316) (stars: 1400) (watchers: 1400) - a kubernetes-based microservices application on service mesh
- zeebe - (forks: 195) (stars: 1287) (watchers: 1287) - distributed workflow engine for microservices orchestration
- ghz - (forks: 89) (stars: 846) (watchers: 846) - simple grpc benchmarking and load testing tool
- go grpc prometheus - (forks: 99) (stars: 826) (watchers: 826) - prometheus monitoring for your grpc go servers.
- blast - (forks: 24) (stars: 733) (watchers: 733) - blast is a full text search and indexing server, written in go, built on top of bleve.
- grpc tools - (forks: 40) (stars: 722) (watchers: 722) - a suite of grpc debugging tools. like fiddler/charles but for grpc.
- cloudstate - (forks: 83) (stars: 567) (watchers: 567) - distributed state management for serverless
- kafka pixy - (forks: 85) (stars: 533) (watchers: 533) - grpc/rest proxy for kafka
- grpc proxy - (forks: 96) (stars: 464) (watchers: 464) - grpc proxy is a go reverse proxy that allows for rich routing of grpc calls with minimum overhead.
- grpc websocket proxy - (forks: 30) (stars: 336) (watchers: 336) - a proxy to transparently upgrade grpc-gateway streaming endpoints to use websockets
- proteus - (forks: 44) (stars: 535) (watchers: 535) - generate .proto files from go source code.
- pqstream - (forks: 23) (stars: 411) (watchers: 411) - pqstream turns your postgres database into an event stream
- grpc opentracing - (forks: 76) (stars: 331) (watchers: 331) - opentracing is a set of consistent, expressive, vendor-neutral apis for distributed tracing and context propagation
- furan - (forks: 11) (stars: 331) (watchers: 331) - scale out docker builds
- go distributed sys - (forks: 59) (stars: 291) (watchers: 291) - a simple example on event sourcing/cqrs in go for building distributed systems and microservices with nats streaming, grpc and cockroachdb
- php grpc - (forks: 29) (stars: 305) (watchers: 305) - :electric_plug: fast and furious grpc server for php applications
- Swell - (forks: 22) (stars: 306) (watchers: 306) - swell: api development tool that enables developers to test endpoints served over streaming technologies including server-sent events (sse), websockets, http2, graphql, and grpc.
gRPC provides a pretty compelling look at what is next. I'd say some of the stops along the API lifecycle are pretty forward leaning. I'd also say there are some clear opportunities present here when it comes to database, testing, and other areas. I am interested in the tooling being developed to support gRPC APIs, but more I am very interested in these different stops along the API lifecycle that are being serviced using open source tooling. This only reflects what is published to GitHub, but I think it does provide a pretty compelling look at what the future of APIs looks like.