Масштабируемость шины событий Vert.X

Один вопрос о масштабируемости шины событий vert.x. Я планирую использовать vert.x в приложении для смарт-устройств (малая форма) и в приложении для удаленного управления. По предварительным оценкам, будет около 100 000 интеллектуальных устройств и 3/4 сервера, на которых будет размещено приложение для управления. В этом случае не могли бы вы посоветовать использовать шину событий между интеллектуальным устройством и веб-приложением (в кластерном режиме). Моим основным требованием при использовании шины событий является отправка динамических уведомлений, исходящих с устройства, на серверы управления и принятие корректирующих мер в случае сбоя системы.

Недавно я опубликовал еще один запрос, и один из пользователей указал мне, что внутри vert.x используются сетевые сокеты для шины событий, поддерживаемой hazelcast для обнаружения кластерного режима. Если это так, я предполагаю, что масштабируемость будет ограничена количеством сокетов, которые может обрабатывать сервер управления. Это правильно ?

Также признателен, если кто-нибудь может указать мне на какой-либо тест производительности, проведенный на шине событий vert.x с точки зрения производительности обработки сообщений.


person user3364247    schedule 25.03.2015    source источник
comment
Привет, есть какие-нибудь новые идеи по этому поводу?   -  person rayman    schedule 09.09.2015
comment
Я бы не рекомендовал использовать потенциально хрупкое кластерное соединение между 100К устройствами и 3-4 серверами. Клиенты могут использовать SockJS для прослушивания событий на шине событий, но готовы обрабатывать отказоустойчивость и повторные попытки на стороне устройства.   -  person Jochen Bedersdorfer    schedule 26.01.2016


Ответы (1)


Моим основным требованием при использовании шины событий является отправка динамических уведомлений, исходящих с устройства, на серверы управления и принятие корректирующих мер в случае сбоя системы.

Нет, используйте для этого обычные HTTP-запросы. EventBus, да и любая параллельная двухсторонняя сетевая модель, принципиально не подходит для этого варианта использования. Ни в коем случае не используйте Hazelcast на клиентах; использование моста SockJS EventBus возможно, но настолько подвержено ошибкам, что вы, безусловно, потратите больше времени, делая это правильно, чем писать простую конечную точку HTTP для такого поведения пульса.

Я предполагаю, что масштабируемость будет ограничена количеством сокетов, которые может обрабатывать сервер управления. Это правильно ?

Нет. Ваша масштабируемость будет ограничена тем, что вы сохраните данные, полученные с устройства. Карты Hazelcast подходят для этого (доступ через vertx.sharedData()), но это действительно зависит от того, понимаете ли вы на 100%, чего хотите.

person DoctorPangloss    schedule 10.04.2018