Часть расхождений произошла из-за проблемы в первоначальном дизайне миграции / перебалансировки и устранена при изменении протокола в Aerospike 3.13 .Перед изменением протокола в 3.13 при запуске replication-factor
2 оператор должен обновить один узел за раз и дождаться завершения миграции после этого.
Дополнительное расхождение - Aerospike, избегающий перерасчета master-objects
и репликиобъекты (т.е. prole-objects
) во время миграции.Также с 3.13 мы добавили стат для non-replica-objects
, которые являются объектами, которые в настоящее время не действуют как мастер или реплика.Это либо (а) объекты в разделе, который имеет входящие миграции, и в конечном итоге они будут действовать как реплика, либо (б) это объекты в разделе, которые не будут участвовать и будут отброшены после завершения миграции для раздела.
До версии 3.13 non-replica-object
типа (a) уменьшало бы число как для master-objects
, так и prole-objects
.Это связано с тем, что до изменения протокола, когда раздел возвращается, который был главным, он сразу же возобновляет работу как главный, даже если у него нет новых записей, которые имели место, пока он отсутствовал.Это не оптимальное поведение, но оно не теряет данные, так как мы разрешим отсутствующие записи из non-replica-objects
на других узлах.После изменения протокола возвращающийся раздел «master» не возобновит работу в качестве «master», пока не получит все миграции с других узлов.
До 3.13 non-replica-objects
типа (b) немедленно отбрасывался иуменьшить счет на prole-objects
.Это приводит к уменьшению replication-factor
записей, записанных во время отсутствия узла, на единицу (например, replication-factor 2
временно становится replication-factor 1
).По этой же причине важно было дождаться завершения миграции, прежде чем приступить к обновлению следующего узла.После изменения протокола (если только он не работает в памяти), больше нет необходимости ждать завершения миграций между обновлениями узлов, поскольку временные «подмножества разделов» не удаляются, что препятствует уменьшению replication-factor
записи (фактически, сновый протокол, во время миграции часто replication-factor
+ 1 копия записи).