A Go library for master-less peer-to-peer autodiscovery and RPC between HTTP services on the same network.
Sleuth is a Go library that enables master-less peer-to-peer autodiscovery and RPC communication between HTTP services on the same local network. It is designed for microservices architectures, allowing services to discover and communicate with each other automatically with minimal configuration. The library provides a seamless mechanism for services to join a network as clients or HTTP service providers.
Go developers building microservices that need to communicate on a local network without a central coordinator. It is particularly suited for teams implementing service-oriented architectures where services must dynamically discover and interact with peers.
Developers choose Sleuth for its master-less, decentralized approach to service discovery, eliminating single points of failure. Its drop-in replacement for the standard HTTP client and minimal configuration allow for easy integration, while built-in fault tolerance and round-robin load balancing provide reliability out-of-the-box.
A Go library for master-less peer-to-peer autodiscovery and RPC between HTTP services
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Services automatically discover peers without a central coordinator, eliminating single points of failure, as highlighted in the key features and Q&A.
The sleuth.Client acts as a drop-in replacement for http.Client, allowing easy adoption in existing HTTP-based microservices, demonstrated in the echo-service example.
Requests are round-robin distributed across multiple instances of the same service, providing simple load distribution out-of-the-box, as noted in the Q&A.
Detects offline services within about one second and reroutes requests, ensuring high availability with minimal downtime, per the fault tolerance feature.
Requires libzmq to be installed separately, adding setup complexity and potential cross-platform issues, as emphasized in the installation section.
Each sleuth client can only expose one HTTP service, limiting deployment flexibility for nodes hosting multiple microservices, as stated in the Q&A.
Correct Interface setting is essential for discovery; misconfiguration can cause services to not connect, a common troubleshooting point in the README Q&A.