Riak_ensemble implementation

Sargun Dhillon sargun at sargun.me
Tue Mar 8 11:39:06 EST 2016


If you want to learn to use riak_ensemble the library, the
documentation that Joe put together (and others)
https://github.com/basho/riak_ensemble/blob/develop/doc/Readme.md

There's real world usage of the code here:
-https://github.com/basho/riak_kv/blob/develop/src/riak_kv_ensembles.erl

Basically as a user, you have to create the root ensemble, add all
your nodes to it, and then create your individual, "sub-ensembles".

You need to implement a backend, and this is a rough sketch of one:
https://github.com/basho/riak_ensemble/blob/develop/src/riak_ensemble_basic_backend.erl

Due the design of Riak ensemble, and the fact that's it's effectively
a bunch of individual vertical Paxos group in conjunction with its
usage of single decree, over multi-decree paxos it has some
interesting fault-recovery semantics. An example of this is the
adjustable paranoia level -- it has some strong failure-recovery
semantics, so in the highest paranoia mode, if you have 5 nodes, and
one fails. When that node comes back, it will have to sync with 3/5 of
the other nodes to be considered good to go.

Even with this, riak ensemble is a pretty easy, fun library to use.
The fact that it's a composition of single decree paxos groups it
makes it much simpler to understand, and you can implement SMR atop
it, like so: https://github.com/sargun/riak_ensemble/commits/sargun/redis
(see the few extra commits)

On Tue, Mar 8, 2016 at 8:19 AM, Carlos González Florido
<carlosj.gf at gmail.com> wrote:
> You may have a look at nkbase[1] that includes riak_ensemble as one of it
> working models.
>
> [1]
> https://github.com/NetComposer/nkbase/blob/master/doc/strong_consistency.md
>
> Carlos González
> NetComposer
>
>
> On Mon, Mar 7, 2016 at 4:48 AM, Agung Laksono <agung.laksono at surya.ac.id>
> wrote:
>>
>> Hi Basho developer,
>>
>> I've seen the video that you guys present about rian_ensemble. I am
>> interesting to implement riak_ensemble in the production environment in the
>> future. After reading the
>> documentation(https://github.com/basho/riak_ensemble/tree/develop/doc), I
>> still couldn't understand how it's work and implement it. Could you tell me
>> in a simple way to implement it in the single node to simulate multiple
>> nodes or 3 real nodes?
>>
>> So far, I can compile riak_ensemble via rebar and run
>> application:ensure_all_started(riak_ensemble). But I don't know what should
>> I do after that(sent K/V, communicate to other nodes, etc)
>>
>>  Thank you in advance.
>>
>> --
>> Warm Regards,
>>
>> Agung Laksono
>>
>> _______________________________________________
>> riak-users mailing list
>> riak-users at lists.basho.com
>> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
>>
>
> _______________________________________________
> riak-users mailing list
> riak-users at lists.basho.com
> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
>




More information about the riak-users mailing list