Hacker News new | ask | show | jobs
by panamafrank 3974 days ago
This is wonderful! I'm really interested in the distributed element of it. I understand riak core uses epidemic broadcast trees to provide consistency, but do you have a good example in how this would influence a microservice architecture?
1 comments

Epidemic broadcast that you mention, usually happens when you have a fully connected topology and distribution model works with full replication. But the main advantage with riak_core is that you are able to set the replication factor and quorums, which enables you to setup different distribution models --like sharding or peer-to-peer replication + sharding (common case)-- and balance consistency/availability levels --please review CAP theorem (http://www.julianbrowne.com/article/viewer/brewers-cap-theor...).

In case of ErlBus, you can also set these parameters (replication factor and quorums), even the quorum of each operation (sub, pub, unsub, subscribers, etc.) can be set independently. So riak_core gives you the flexibility to choose the best distribution model depending on what you really need, and ErlBus inherits those features when you run it on top of riak_core.

So, you have to consider some variables to choose what distribution model to use: 1. Number of nodes 2. Network traffic (Messages/second) 3. Number of subscriptions (because both pg2 and gproc uses ETS tables)

Most of the cases is enough default ErlBus with PG2, but if you need a more flaxible and scalable distribution model, well, you probably should go for ErlBus with riak_core.

I really hope have answered your question, otherwise, you just let me know.

Thanks!