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

Поскольку у меня нет опыта разработки веб-приложений, которые можно масштабировать горизонтально, мне нужен кто-то с опытом, который направит меня в правильном направлении.

У меня были трудности с определением правильного способа хранения сеансов входа в базу данных, поэтому я пришел к вопросу, есть ли право хранить их в базах данных, когда я планирую использовать репликацию в будущем? а если нет то какие альтернативы??

Мне нужно, чтобы разные клиенты (android, Windows,...) были подключены к серверу со своими сеансами, связанными с одним и тем же пользователем, и я использую:

1 - Cent-OS как ОС

2 - PostgreSQL как СУБД

3 - Tomee как HTTP-сервер и контейнер сервлетов

4 — Многораздельные таблицы (унаследованные таблицы в PostgreSQL) для повышения производительности, вероятности сканирования индекса в памяти, предотвращения фрагментации и т. д.

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

Спасибо за помощь


person Mike Brown    schedule 02.06.2017    source источник


Ответы (1)


Хранение пользовательских сеансов в СУБД в конечном итоге снизит производительность вашего приложения. Вам следует обратить внимание на механизмы распределенного кэширования для хранения и чтения пользовательских сессий. Я настоятельно рекомендую решения для баз данных NoSQL для пользовательских сеансов, такие как Redis, которые позволяют хранить в памяти ваши пары ключ-значение и отвечают с очень высокой скоростью. Кроме того, вы можете настроить файл конфигурации, чтобы хранить пары ключ-значение в памяти на диске для сохранения. Вам также необходимо сосредоточиться на распределении пар «ключ-значение» между несколькими экземплярами NoSQL и внутренними структурами данных, такими как HashMaps. Вы можете использовать свой собственный алгоритм хеширования для распределения пар ключ-значение по нескольким экземплярам, ​​что обеспечит высокую доступность. Вы должны иметь в виду, что разделение ваших данных по горизонтали приведет к некоторым проблемам, вы можете обратиться к Теорема CAP — доступность и устойчивость к разделам перед подробностями.

person ali    schedule 02.06.2017