Каков наилучший способ управления многоканальными сеансами без каждый раз проверки базы данных?

Я пытаюсь реализовать многоканальное управление сеансом.

Что я имею в виду для многоканальности, так это то, что пользователь может войти в систему с мобильного телефона, из Интернета или с другого канала. Я не хочу, чтобы они одновременно входили с разных каналов.

Например, Интернет и Мобильная связь имеют разные серверы в разных кластерах. Текущие системы обращаются к базе данных, чтобы проверить, есть ли сеанс для этого пользователя.

Однако я не хочу, чтобы серверы постоянно проверяли базу данных из-за возможных проблем с производительностью.

Какие могут быть лучшие методы управления многоканальными сессиями без проверки базы данных каждый раз?


person ahmet gül    schedule 25.07.2018    source источник


Ответы (1)


Если у вас есть отдельные серверы, вам понадобится централизованная часть состояния для управления ими. От этого факта никуда не деться. Вы можете использовать что-то более высокопроизводительное, чем база данных SQL (memcached или подобное), но вы увеличите задержку, если вам нужно проверять ее при каждом запросе.

Если вы можете позволить пройти одному или двум запросам, вы можете придумать асинхронный механизм обновления, в котором состояние кэшируется на локальном сервере, а запрос отправляет обновление кеша на централизованный сервер для обновления состояния. Это позволит текущему пользователю избежать задержки, с оговоркой, что один или два запроса могут пройти (из-за параллелизма).

person Rob Conklin    schedule 25.07.2018