Apache Ratis — это библиотека Java, реализующая протокол Raft [1], расширенная версия документа Raft доступна по адресу https://raft.github.io/raft.pdf. В статье представлен Рафт и изложены его мотивы следующими словами:
Raft — это консенсусный алгоритм управления реплицируемым журналом. Он дает результат, эквивалентный (мульти-)Paxos, и он так же эффективен, как Paxos, но его структура отличается от Paxos; это делает Raft более понятным, чем Paxos, а также обеспечивает лучшую основу для создания практических систем.
Ratis стремится сделать Raft доступным в виде Java-библиотеки, которую может использовать любая система, которой необходимо использовать реплицируемый журнал. Он обеспечивает возможность подключения реализаций конечного автомата для управления реплицируемыми состояниями. Он также обеспечивает возможность подключения журналов Raft, реализаций RPC и метрик, что упрощает интеграцию с другими проектами. Другая важная цель — поддержка приема данных с высокой пропускной способностью, чтобы ее можно было использовать для более общих случаев репликации данных.