Skip to content

Instantly share code, notes, and snippets.

@ericbmerritt
Last active December 15, 2015 18:49
Show Gist options
  • Save ericbmerritt/5306234 to your computer and use it in GitHub Desktop.
Save ericbmerritt/5306234 to your computer and use it in GitHub Desktop.
potential talk abstract

Current state of the art in distributed systems revolves around service oriented architectures that can be scaled based on demand. This requires being able to add services on the fly as demand increases and recognizing capacity decrease when services fail. Myrmas is a solution to this problem. Myrmas is a robust general Service Availability and Health Registry designed to be used as a basis for large scale distributed systems. It is designed to scale simply from two nodes to hundreds of thousands of nodes while making as few assumptions around network topology and connectivity as possible. Myrmas is built around a robust membership protocol called DIMPLE-II paired with an epidemic data propagation protocol called Newscast. Together, these allow Myrmas to provide the solid foundation on which to build large scale heterogenious distributed systems.

One of the key features of Myrmas is that is designed from the ground up to support mixed language systems. It does this through two main avenues.

  1. The simplest working algorithms for both membership and data distribution have been selected. These have been boiled down and re-documented in such a way that a competent engineer should be able to create a new implementation in his preferred language in a week or so.

  2. The Erlang implementation, while providing a well thought out Erlang API also, provides a JSON over REST API. New non-erlang nodes can integrate with a Myrmas system using just the Erlang implementation without spending the time and effort to create an implementation in the target language.

The main goal is to vastly simplify large scale robust distributed systems that, that support a wide variety of distinct languages.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment