При параллельном запуске нескольких putAll действительно легко получить deadlock, а в трассировке стека серверных узлов — увидеть вереницу блокировок.
В актуальных версиях Apache Ignite на atomic кэшах deadlock'а уже нет (и такого предупреждения в логе тоже), соответственно можно использовать в том числе HashMap для вставки.
В таком режиме (наличие бэкапов и включенный allowOverwrite) Data Streamer начинает работать через тот самый медленный put
У Data Streamer'а через receiver можно настроить вставку через putAll с теми же гарантиями:
При подключении нового узла координатор отправляет сообщение всем остальным узлам (в том числе толстым клиентам) в котором содержатся все данные нового узла.
Вы про какой пункт? Подозреваю, что Вас смутило описание Automatic Server Node Discovery.
Горизонтальная масштабируемость была в Ignite изначально, при вводе нового серверного узла автоматически происходит ребалансировка и никакие IP адреса никуда прописывать не нужно, толстые клиенты и серверные узлы начинают обращаться к новому узлу напрямую. Для тонких клиентов в принципе тоже ничего прописывать не нужно, тонкие клиенты в обычном режиме подключены к одному из серверных узлов и отправляют запросы через этот серверный узел, который уже может перенаправить запрос на новый подключенный узел. Режим partition awareness позволяет исключить один network hop и отправлять запрос сразу на узел, который является primary узлом для определенного ключа. Т. е. Automatic Server Node Discovery — это развитие функционала partition awareness, который является оптимизацией для тонкого клиента.
У нас более десятка систем его используют для различных целей. Где-то для промежуточного in-memory хранения, где-то как основную БД с native persistance. В большинстве случаев, насколько я знаю, используется key-value интерфейс либо несложные SQL. Показывает себя в этих кейсах хорошо. Но были попытки реляционную модель со сложными SQL запросами натянуть на Ignite и в таких кейсах он показал себя не очень.
Пара замечаний:
В актуальных версиях Apache Ignite на atomic кэшах deadlock'а уже нет (и такого предупреждения в логе тоже), соответственно можно использовать в том числе HashMap для вставки.
У Data Streamer'а через receiver можно настроить вставку через putAll с теми же гарантиями:
По скорости скорее всего будет работать также как Ваша вставка через putAll (нужно бы проверить), но распараллеливание из коробки.
Горизонтальная масштабируемость была в Ignite изначально, при вводе нового серверного узла автоматически происходит ребалансировка и никакие IP адреса никуда прописывать не нужно, толстые клиенты и серверные узлы начинают обращаться к новому узлу напрямую. Для тонких клиентов в принципе тоже ничего прописывать не нужно, тонкие клиенты в обычном режиме подключены к одному из серверных узлов и отправляют запросы через этот серверный узел, который уже может перенаправить запрос на новый подключенный узел. Режим partition awareness позволяет исключить один network hop и отправлять запрос сразу на узел, который является primary узлом для определенного ключа. Т. е. Automatic Server Node Discovery — это развитие функционала partition awareness, который является оптимизацией для тонкого клиента.