{"id":13570926,"url":"https://github.com/basho/riak_ensemble","last_synced_at":"2025-04-04T09:09:58.813Z","repository":{"id":46923397,"uuid":"13738526","full_name":"basho/riak_ensemble","owner":"basho","description":"Multi-Paxos framework in Erlang","archived":false,"fork":false,"pushed_at":"2022-12-21T13:23:33.000Z","size":3634,"stargazers_count":166,"open_issues_count":27,"forks_count":74,"subscribers_count":94,"default_branch":"develop","last_synced_at":"2024-04-14T04:03:24.757Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://www.youtube.com/watch?v=gXJxbhca5Xg","language":"Erlang","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/basho.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-10-21T09:49:02.000Z","updated_at":"2023-07-08T05:58:27.000Z","dependencies_parsed_at":"2023-01-30T03:45:51.844Z","dependency_job_id":null,"html_url":"https://github.com/basho/riak_ensemble","commit_stats":null,"previous_names":[],"tags_count":31,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/basho%2Friak_ensemble","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/basho%2Friak_ensemble/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/basho%2Friak_ensemble/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/basho%2Friak_ensemble/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/basho","download_url":"https://codeload.github.com/basho/riak_ensemble/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247149505,"owners_count":20891954,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T14:00:56.581Z","updated_at":"2025-04-04T09:09:58.790Z","avatar_url":"https://github.com/basho.png","language":"Erlang","readme":"[![Erlang CI Actions Status](https://github.com/basho/riak_ensemble/workflows/Erlang%20CI/badge.svg)](https://github.com/basho/riak_ensemble/actions)\n\n(Note: Work-in-progress documentation [here](https://github.com/basho/riak_ensemble/blob/develop/doc/Readme.md))\n\n`riak_ensemble` is a consensus library that supports creating multiple\nconsensus groups (ensembles). Each ensemble is a separate Multi-Paxos\ninstance with its own leader, set of members, and state.\n\nEach ensemble also supports an extended API that provides consistent\nkey/value operations. Conceptually, this is identical to treating each\nkey as a separate Paxos entity. However, this isn't accomplished by\nhaving each key maintain its own Paxos group. Instead, an ensemble\nemulates per-key consensus through a combination of per-key and\nper-ensemble state.\n\nAs mentioned, `riak_ensemble` supports multiple independent consensus\ngroups. Ensembles are created dynamically, allowing applications to\nuse `riak_ensemble` in whatever way best fits that\napplication. Each ensemble also supports dynamic ensemble membership,\nusing joint consensus to guarantee consistent membership transitions.\n\nA given ensemble is configured to use a particular \"ensemble backend\".\nAn ensemble backend is an implemented behavior that defines how a given\npeer actually stores/retrieves data. For example, `riak_ensemble`\nships with the `riak_ensemble_basic_backend` which stores data as an\n`orddict` that is saved to disk using `term_to_binary`, whereas\n`riak_kv` implements the `riak_kv_ensemble_backend` that is used to\ninterface with Riak's vnodes.\n\nBetter documentation is coming soon. For now, this talk from RICON\nWest 2013 discusses the design of `riak_ensemble` in the context of\nadding consistency to Riak 2.0:\nhttp://www.youtube.com/watch?v=gXJxbhca5Xg\n","funding_links":[],"categories":["Erlang"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbasho%2Friak_ensemble","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbasho%2Friak_ensemble","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbasho%2Friak_ensemble/lists"}