Каков оптимальный способ записи больших объектов данных в AerospikeDB? - PullRequest
0 голосов
/ 28 февраля 2020

Мое приложение выполняет вызов стороннего API для результатов поиска в зависимости от запроса пользователя. Мы хотели бы сохранить эти результаты в кеше для удобства поиска. Проблема в том, что эти результаты поиска имеют большой размер, ок. около 11 МБ. Поскольку размер объекта велик, а приложение является многопоточным, одновременно выполняются многочисленные вызовы для aerospike, и aerospike постоянно вызывает исключение InvalidNode. Есть ли способ сохранить объект и увидеть результаты с низкой задержкой?

1 Ответ

3 голосов
/ 01 марта 2020

Для хранения больших объектов и использования базы данных в качестве кэша вы можете использовать память подсистемы хранения, которая может хранить гораздо большие объекты, чем опция постоянного хранения (твердотельные накопители: настраиваемые - не более 8 МБ, по умолчанию 1 МБ, 128 КБ для лучшей производительности SSD) , Задержка будет больше зависеть от размера объектов и скорости передачи данных в вашем случае. Например, объект размером 11 МБ (= 88 Мбит) с сетевым интерфейсом общего узла 10 Гбит / с (пример экземпляра AWS r5) и с репликацией и входом в узел, занимающий дополнительную полосу пропускания, можно записать при 10 * 1024/88 = 116, затем 116/3 = ~ 38 операций записи в секунду на узел. (3: запись клиента, запись реплики вне, запись входящей реплики). Таким образом, для достижения большей задержки вам нужно либо увеличить пропускную способность сети на узел, либо масштабировать кластер по горизонтали, чтобы больше узлов обрабатывало входящие записи.

Проблема с недопустимым узлом, как обсуждалось в комментарии, является скорее проблемой конфигурации / кластеризации / подключения - не связана с задержкой.

...