Service autodiscovery in Go with sleuth
Service discovery and
remote procedure calls (RPC) are big subjects. There are many
existing solutions that require varying degrees of infrastructure (e.g. message queues,
Consul) or architectural decisions (e.g. Erlang, Akka, etc.). In this post, I’ll
introduce a minimalistic Go library called sleuth
that creates an ad hoc
peer-to-peer network requiring almost no configuration and only a couple lines of code to existing services and clients.
sleuth
is a library that lets web services announce
themselves to each other and to other clients on a LAN. It allows peers to send requests to each other without
having to coordinate where each one lives and what port it uses. It works without an external process because
under the hood, it is powered by magic, *a.k.a.* ØMQ
using the Gyre port of
Zyre.