An OTP application for auto-discovering and connecting Elixir services using Consul for service health and node management.
Discovery is an OTP application for Elixir that automates service discovery and node interconnection using Consul. It solves the problem of manually managing service availability and connections in distributed Elixir applications by providing heartbeat publishing, health polling, and automatic node linking.
Elixir developers building distributed, microservices-based applications who need automated service discovery and dynamic node connectivity without manual intervention.
Developers choose Discovery because it integrates seamlessly with Consul and OTP, offering automatic service registration, health monitoring, and node connection management out of the box, reducing complexity in distributed system architecture.
An OTP application for auto-discovering services with Consul
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Integrates seamlessly with Consul's TTL checks to send regular heartbeats, ensuring accurate service availability reporting without manual intervention, as detailed in the service setup.
Uses Discovery.Handler.NodeConnector to automatically connect and disconnect OTP nodes based on Consul health updates, simplifying distributed system management and reducing boilerplate.
Supports custom handlers via Discovery.Handler.Behaviour or anonymous functions, allowing tailored reactions to service changes, as demonstrated in the polling examples.
Provides consistent hashing or random selection for load balancing, enabling efficient routing across discovered nodes, with code examples for selection logic.
Tightly coupled with Consul, requiring its installation, configuration of service definitions and TTLs, which adds operational overhead and limits tool flexibility.
Involves detailed steps like configuring OTP node names in service tags and supervising multiple processes, increasing initial setup effort compared to simpler solutions.
Relies on periodic polling of Consul for health changes, which may not scale efficiently for high-frequency updates or large deployments, potentially causing latency.
Specifically designed for Elixir/OTP and Consul, making it unsuitable for projects using other languages or service discovery tools, reducing portability.