Мне интересно, если кто-то испытал ту же проблему.Снижение производительности Vert.x при запуске с опцией -cluster
У нас есть приложение Vert.x, и в конце его цель - вставить 600 миллионов строк в кластер Cassandra. Мы тестируем скорость Vert.x в сочетании с Cassandra, проводя тесты в меньших количествах.
Если мы запустим жирную банку (с помощью плагина Shade) без опции -cluster, мы сможем вставить 10 миллионов записей за минуту. Когда мы добавляем параметр -cluster (в конце концов мы будем запускать приложение Vert.x в кластере), для вставки 10 миллионов записей требуется около 5 минут.
Кто-нибудь знает, почему?
Мы знаем, что конфигурация Hazelcast создаст некоторые накладные расходы, но никогда не думала, что это будет в 5 раз медленнее. Это означает, что нам понадобится 5 экземпляров EC2 в кластере, чтобы получить тот же результат при использовании 1 EC2 без опции кластера.
Как уже упоминалось, все работает на EC2 случаях:
- 2 Cassandra серверы t2.small сервер
- 1 Vert.x на t2.2xlarge
Можете ли вы рассказать о своей архитектуре приложения? Например. как он использует шину событий? – tsegismont
hi @tsegismont, у нас есть вертикальная вершина отправителя (1 экземпляр), которая помещает Json-сериализованные объекты POJO (3 примитивных элемента) в eventbus, используя send() в цикле. Этот цикл представляет собой цикл Intstream, который выполняется с параллельной опцией. С другой стороны есть приемник-вертикаль (8 экземпляров), который обрабатывает входящие сообщения из eventbus. Мы дешифруем сериализованный Json обратно в POJO и вставляем объект в кластер cassandra с помощью подготовленного оператора. Я обновлю вопрос, чтобы включить код, который мы используем в этом тестовом проекте. –