Grav is an embedded distributed messaging library for Go applications. Grav allows interconnected components of your system to communicate effectively in a reliable, asynchronous manner. HTTP and RPC are hard to scale well in modern distributed systems, so we created Grav to add a performant and resilient messaging system to various distributed environments.
Grav's main purpose is to act as a flexible abstraction that allows your application to discover and communicate using a variety of protocols without needing to re-write any code.
Grav messages can be sent in-process (such as between Goroutines), or to other nodes via transport plugins such as Websocket and NATS. Transport plugins extend the core Grav bus to become a networked distributed messaging system. Grav nodes can also be configured to automatically discover each other using discovery plugins. Grav can operate as a decentralized mesh or integrate with centralized streaming platforms, making it extremely flexible.
Full documentation can be found on the Grav docs site.
Grav is currently in beta, and is being developed alongside (and is designed to integrate with) Vektor and Reactr. It is also the messaging core that powers Suborbital's flagship project, Atmo.
Copyright Suborbital contributors 2021.