/sonar

Scalable service discovery and RPC library

Primary LanguageElixirMIT LicenseMIT

Sonar

Scalable service discovery and RPC library

Rationale

sonar is an OTP application that offers a solution for the service discovery and routing problem for native Erlang/Elixir nodes by broadcasting node configuration to the network and maintaining a hash ring per registered service.

All nodes are always aware of the available services on the network and will eventually reach a consistent state. From there on, you can call any service node in the network by different means:

  • You can call all nodes registered for a given service
  • You can call an specific node for a given service hashed by a key
  • You can call n adjacent nodes for a given service hashed by a key for data redundancy

Installation

If available in Hex, the package can be installed by adding sonar to your list of dependencies in mix.exs:

def deps do
  [{:sonar, "~> 0.1.0"}]
end

Documentation

Documentation can be generated with ExDoc. The most reliable source of documentation is the ExDoc comments and the wiki

Contributing

Please take your time to read throught our CONTRIBUTING.md guide for understanding the development flow and guidelines.

Issues and discussions

Consider taking a look at the issue tracker if you want to start helping out.

All documentation non strictly related to source code is found in the wiki. Although not explicitly stated in the CONTRIBUTING.md guidelines, the same principles apply to the wiki.

License

Copyright (c) 2017 Tappsi S.A.S

This work is free. You can redistribute it and/or modify it under the terms of the MIT License. See the LICENSE file for more details.