3 ms·
My understanding after spending a few minutes reading through the project web page and stack overflow listings about RabbitMQ clustering problems is as follows.
by Dowwie 4y ago
My understanding after spending a few minutes reading through the project web page and stack overflow listings about RabbitMQ clustering problems is as follows.
Khepri is a project intended to replace Mnesia for replicated, clustered distributed systems written in Erlang/Elixir such as RabbitMQ. The primary reason this project started was to address shortcomings of Mnesia with regards to "network partitions", where cluster nodes are running on unreliable networks and network failures happen.
Caveat emptor! The project README still refers to Khepri as an alpha product, so I assume that RabbitMQ continues to use some kind of customized Mnesia for its production system. Unfortunately, in the absence of any significant system using Khepri, should you decide to adopt it you will be on the bleeding edge and will have scars for using it, at best, and a complete project failure at worst. Distributed systems problems are very hard problems to solve.
- dumbbell_fr 4y agoAs one of the authors of Khepri, I should probably clarify what we mean by "alpha" quality in the README/documentation. The data is handled by our Raft library underneath which is production ready, so for a given version of Khepri, the data is safe. However, the public API and internals of Khepri are unstable. Therefore, as a user of Khepri, you may have to adapt your code when upgrading Khepri to a later version. If the internals change too, you may need to work on some migration tool to export the existing data and import it in a new instance. This is not something Khepri will do for you with an upgrade before it reaches 1.0.0. And you are right that RabbitMQ releases don't use Khepri at all for now and rely entirely on Mnesia. Future releases will introduce Khepri gradually, for vhosts and users first, and more types of records with each minor release.