3 ms·
This is interesting in that it uses Raft. I had a go at implementing a toy Raft implementation and I think testing my particular implementation properly would b
by samsquire 4y ago
This is interesting in that it uses Raft. I had a go at implementing a toy Raft implementation and I think testing my particular implementation properly would be pretty hard to do without TLA or automated proofing algorithms. You could also use Jepsen.
I maintained a clustered RabbitMQ cluster and used Chef to coordinate upgrades. Uprading Erlang AND RabbitMQ at the same time wasn't very enjoyable since it had the potential to go wrong in production. Fortunately it went right and nobody noticed.
If RabbitMQ can solve the partition problem with Khepri that would be great. The userguide tells how to configure RabbitMQ to handle splits.
https://www.rabbitmq.com/partitions.html https://www.rabbitmq.com/partitions.html
I think we used pause_minority which sacrifices availability for consistency.
- ramchip 4y agoQuorum queues already solve this problem today. They pass a "harsher" fork of Jepsen, according to the RMQ team. Khepri is a newer project that reuses the Raft library developed for quorum queues to store metadata, as a replacement for Mnesia, Erlang's built-in distributed DB. I think that means things like vhosts, users, permissions, etc.