A pure Go implementation of the nanomsg Scalability Protocols (SP) messaging system, supporting multiple transport and topology patterns.
Mangos is a pure Go implementation of the Scalability Protocols (SP) messaging system, originally developed as nanomsg. It provides a library for building high-performance, distributed applications using various messaging patterns like publish-subscribe, request-reply, and pipeline. The project solves the need for a lightweight, interoperable messaging layer in Go applications without relying on external C dependencies.
Go developers building distributed systems, microservices, or real-time applications that require reliable, low-latency inter-process communication. It's also suitable for those migrating from or integrating with existing nanomsg or NNG-based systems.
Developers choose Mangos for its pure Go implementation, which simplifies deployment and avoids CGO complications, while maintaining full interoperability with the nanomsg/NNG ecosystem. Its extensible design and support for multiple transports and protocols offer flexibility without sacrificing performance.
mangos is a pure Golang implementation of nanomsg's "Scalablilty Protocols"
No CGO dependencies, leveraging Go's standard library and concurrency model for easy deployment and integration, as highlighted in the README's emphasis on pure Go implementation.
Supports seven messaging patterns including Req/Rep and Pub/Sub, enabling flexible distributed system design, with experimental Star protocol for extended use cases.
Works over TCP, IPC, WebSocket, and TLS transports, adapting to various network environments from local to web-based, as listed in the key features.
Designed to interoperate with nanomsg and NNG, verified with tools like nanocat, facilitating cross-platform communication without vendor lock-in.
Lacks support for ZeroTier transport and PAIRv1 protocol compared to NNG, as admitted in the README, limiting full compatibility with the SP ecosystem.
Version 3 introduced import path changes, and older versions are not maintained, potentially complicating upgrades and migration for existing projects.
As a low-level library, it doesn't include built-in features like service discovery or monitoring, requiring additional development for production-ready systems.
Simple, reliable, and efficient distributed task queue in Go
Sarama is a Go library for Apache Kafka.
Scalable real-time messaging server in a language-agnostic way. Self-hosted alternative to Pubnub, Pusher, Ably, socket.io, Phoenix.PubSub, SignalR. Set up once and forever.
Building event-driven applications the easy way in Go.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.