Вот уже год как Aerospike работает у нас в продакшене. В связи с этим хотелось бы отметить несколько негативных моментов:
- Не продуман downtime less upgrade. Чтобы убрать ноду из кластера нужно сказать ей dun. Это в свою очередь порождает процесс решардинга. Если у вас много данных это может быть весьма длинная история. Потом нужно уверится что клиенты больше не ходят к этой ноде (зависит от вашего приложения). Потом upgrade/изменение настроек и снова добавление в кластер. И снова решардинг.
- Многие настройки нельзя менять на лету. То есть это означает необходимость рестарта. А про рестарт ниже.
- Быстрый рестарт возможен только в Enterprise edition. Рестарт community edition - это весьма медленная операция. Ее длительность зависит от:
- Настроек heartbeat (timeout, interval). Сразу после старта нода откажется принимать входящие подключения на 3000 порту пока она не присоеденится к кластеру
- После присоединения к кластеру нода начнет читать либо реплицировать свою порцию данных с других нод кластера (для in memory namespace) либо читать данные с диска. Длительность этого процесса зависит от размера namespace
- Некоторые настройки для изменения требуют full cluster restart. Это просто не серьезно для production-ready решения.
- Не стабильное время ответа. В среднем Aerospike демонстрирует довольно хорошее время ответа (0.7-1ms), но время от времени случаются спайки до секунды. Вероятно это совпадает с запуском процесса expiration/eviction thread. А он запускается каждые nsup-period либо при переполнении раздела.
- Smart клиент не такой уж и smart. Если используются Go client то после изменения конфигурации кластера скорость работы с Aerospike резко падает. Потому что расположение данных меняется, и клиент начинает ходить за данными не на те ноды. Smart client не получает уведомлений от сервера о том что расположение данных изменилось.
Не поймите меня не правильно - Aerospike не так и плох. Просто вот такие есть у него недостатки. Но Aerospike очень активно развивается. Как сервер так и клиенты, поэтому некоторые проблемы решаются просто обновлением Aerospike и клиентских библиотек.