Редкий случай, когда Aerospike выдает более старое значение, но не обновленное значение

#java #aerospike

#java #aerospike

Вопрос:

В распределенной среде ежедневно поступает 2 миллиона запросов, затем сначала мы пытаемся прочитать данные, а затем обновить данные в aerospike на основе ключа. Но в редких случаях некоторое время, когда мы считываем данные, он считывает более старое значение.

Среднее время между обновлением значения и чтением этого значения составляет 10 секунд, в течение которых возникают эти проблемы. Итак, может кто-нибудь, пожалуйста, помочь мне выяснить, в чем проблема, либо в настройке, либо в коде.

Комментарии:

1. Используете ли вы строгую согласованность? aerospike.com/docs/reference/configuration/#strong-consistency

2. Если не использовать строгую согласованность, я мог видеть разные ситуации, когда это может произойти при работе с клиентскими политиками по умолчанию. Что-то столь же простое, как ошибка репликации при записи (вернет ошибку при записи) и политика клиента, повторяющая попытку с копией реплики по умолчанию (где копия реплики имеет более старое значение…

Ответ №1:

Теорема CAP имеет значение, если есть сбои узлов или узлы, входящие и выходящие из кластера. Чтение устаревших операций чтения, даже в режиме AP, в стабильном кластере, не складывается. Во-вторых, Aerospike не является в конечном итоге согласованным дизайном — он сразу согласован в стабильном кластере, потому что это не проект, основанный на консенсусе. Таким образом, либо кластер нестабилен из-за проблем с сетью, и узлы входят и выходят, либо это вызывает некоторая комбинация сетевых событий, либо есть какая-то проблема с кодом. Трудно диагностировать только по заявлению о конечном наблюдении. Итак, 1) Является ли кластер стабильным через эти события? 2) Какова версия Aerospike? Издание — сообщество или предприятие? 3) Размер кластера? 4) Конфигурация пространства имен? 5) Коэффициент репликации? 6) Фрагмент кода / модель данных / что именно вы делаете в коде? Если обновление записи завершается неудачно, как вы обрабатываете его в коде?

Ответ №2:

Какую версию Aerospike вы используете? Кроме того, вы можете одновременно выполнять только 2 аспекта теоремы CAP. Я предполагаю, что в настоящее время ваши настройки aerospike предназначены для обеспечения согласованности

Начиная с версии 4.0, у вас есть возможность выбрать режим AP (доступный и допускаемый к разделам), а также режим CP (согласованный и допускаемый к разделам).

Более подробная информация о согласованности aerospike здесь .

Комментарии:

1. мы используем aerospike версии 3.4

2. Ver 3.4 … с тех пор было много улучшений, изменений. Даже Aerospike его больше не поддерживает. Я полагаю, вы находитесь в версии сообщества? Рассмотрите возможность обновления. Сначала вам нужно перейти к версии перехода — 3.13, чтобы перейти к последней. Следуйте примечаниям к выпуску здесь и спланируйте это! aerospike.com/download/server/notes.html

3. Еще один голос за обновление, хотя этот сценарий все еще возможен в последних версиях AP, он гораздо менее вероятен. В старом коде распределенной системы до версии 3.13 было несколько недостатков дизайна, из-за которых разделы могли полагать, что они синхронизированы, когда это не так, что может легко проявиться как этот симптом. 3.4 очень старый, и наши процессы выпуска значительно улучшились с момента его выпуска, я настоятельно рекомендую обновить.