TL; DR - кластер BFT с 4-5 нотариальными узлами останавливается при уничтожении одной реплики.
Я запустил демонстрацию нотариуса , и кластер Raft (с 3 узлами нотариуса) вел себя как ожидалось - когда я убиваю лидера, происходят выборы, и кластер нотариуса продолжает предоставлять надежную услугу.
Я ожидаю, что то же самое произойдет при запуске кластера BFT (с 4 нотариальными узлами) - уничтожение одной из реплик не должно помешать кластеру обеспечить надежную нотариальную услугу. Однако вот что происходит:
1) Запустить нотариальный кластер BFT
2) Я могу заверять 10 транзакций, используя gradlew samples:notary-demo:notarise
3) Остановить одну из реплик в кластере
4) Попробуйте нотариально заверять 10 транзакций, используя gradlew samples:notary-demo:notarise
5) Подождите несколько минут, ничего не происходит (транзакции не заверены нотариусом)
6) Все остальные терминалы реплик продолжают заполняться re-connecting to replica 1 at /127.0.0.1:11010
Просто чтобы быть в безопасности, я решил добавить еще один нотариальный узел в кластер. Однако ничего не меняется - есть 5 нотариальных узлов, и уничтожение одного из них приводит к остановке кластера.
Я изучил , как работает BFT SMaRt , но, насколько я могу судить, он должен быть в состоянии терпеть любые сбои (включая аварийный останов), если имеется достаточно рабочих реплик (N> = 3f + 1).
Есть что-то, чего я здесь не хватает? Является ли поведение, которое я ожидаю, необоснованным - кластер BFT с 4-5 нотариальными узлами, способный выдержать гибель 1 узла? Или это проблема с Кордой?