Где подписка на перекладину/государственный магазин?

Когда подписки создаются и поддерживаются кроссбаром, где они хранятся? Я быстро просмотрел исходный код и думаю, что все они хранятся в локальной памяти процесса. Это правильно? Какова модель горизонтального масштабирования, если данные хранятся в памяти? Ожидается ли, что соединения будут привязаны к данному узлу? Что делать, если соединение разрывается и восстанавливается или серверный узел отключается? Теряют ли эти соединения все состояние (информацию о подписке)?


person Paul Fryer    schedule 18.02.2015    source источник


Ответы (1)


Модель масштабирования, которую будет реализовывать Crossbar.io (ожидается в 2015 г.), описана здесь. На узле Crossbar.io состояние подписки временно сохраняется в памяти процесса (каждого процесса маршрутизатора) и синхронизируется между процессами маршрутизатора. Данный клиент всегда подключен к одному узлу. Когда он теряет соединение, его подписки исчезают. Когда узел выходит из строя, клиент автоматически переподключается к другому узлу в кластере. Клиенту потребуется восстановить свои подписки на новом узле. Два клиента, подключенные к двум разным узлам (и одной и той же области), где оба узла являются частью одного кластера, будут обмениваться данными прозрачно.

person oberstet    schedule 18.02.2015
comment
Хорошо, я так и думал, спасибо за подтверждение. Рассматривали ли вы возможность использования распределенного кеша, такого как Redis, для управления состоянием, чтобы сбой узла потенциально мог быть обнаружен другим узлом, а состояние подписки сохранялось? Это один из тех аспектов, который делает такие вещи, как автоматическое масштабирование, действительно плавными. - person Paul Fryer; 19.02.2015
comment
Да, мы рассмотрели варианты, которые вы упомянули, но выбрали другой дизайн из-за производительности и архитектуры (позволяющей федеративные сети маршрутизаторов). - person oberstet; 19.02.2015
comment
Это заставляет меня задаться вопросом, как масштабирование будет работать на такой платформе, как Heroku (где динамометры не будут разговаривать друг с другом)? Использование внешнего хранилища сеансов упростило бы задачу (я думаю). - person Pierre Fraisse; 25.05.2015