какая-либо польза от использования Hazelcast вместо MongoDB для хранения пользовательских сеансов/ключей?

Мы запускаем экземпляр mongodb для хранения данных в коллекциях, с этим проблем нет, и mongo является нашим основным хранилищем данных.

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

Чтобы решить эти требования, мы должны ввести какой-то распределенный кеш, для хранения (с поддержкой TTL) пользовательских сессий и т. д., истечение срока его действия на основе ttl... Я писал об этом выше.

Здесь два варианта:

  1. сохранить сеанс пользователя в hazelcast и поделиться им со всеми серверами приложений — хороший выбор, чтобы сохранить весь сеанс пользователя на карте выселения.
  2. хранить пользовательские сессии в MongoDb — и делать то же самое.

Видите ли вы какие-либо преимущества использования Hazelcast вместо хранения временных данных внутри Mongo? О каких значительных улучшениях производительности вы знаете?

Я новичок в Hazelcast, поэтому не знаю обо всех ключевых функциях.


person IgorA    schedule 18.03.2013    source источник
comment
Не уверен насчет Hazelcast, но проверяли ли вы Couchbase? Его реализация, совместимая с memcached корпоративного уровня. Его производительность намного лучше, чем у MongoDB и Cassandra. См. здесь: couchbase.com/couchbase-server/why-couchbase   -  person user1697575    schedule 18.03.2013


Ответы (2)


Отказ от ответственности: я являюсь основателем Hazelcast...

  1. Hazelcast намного проще, а простота имеет большое значение.
  2. Вы можете встроить Hazelcast в свое приложение (если ваше приложение написано на Java). Нет необходимости развертывать и поддерживать удаленный кластер nosql.
  3. Hazelcast работает напрямую с объектами вашего приложения. Нет JSON или любого другого формата. Запись и чтение объектов Java.
  4. Вы можете выполнять код Java для данных в памяти. Нет необходимости получать и обрабатывать данные; отправьте свой код в data.
  5. Вы можете прослушивать обновления ваших данных. «Сообщите мне, когда эта карта или ключ будут обновлены».
  6. Hazelcast имеет богатый набор структур данных, таких как очередь, тема, семафоры, блокировки, мультикарта и т. д. Представьте себе, что очередь делится между несколькими узлами и вы можете блокировать операцию опроса/взятия очереди... это действительно круто :)
person Talip Ozturk    schedule 20.03.2013
comment
Спасибо, это то, что я хотел услышать :) Убедил меня. - person IgorA; 20.03.2013
comment
Пожалуйста, убедитесь, что вы раскрываете свою принадлежность при подключении вашего продукта в будущем. Дополнительные сведения см. на странице stackoverflow.com/help/promotion. - person Matt; 11.11.2015
comment
Меня интересует функция №3. Может ли кто-нибудь поделиться ссылкой на хороший учебник, обучающий использованию формата объекта в памяти? - person Zhongjun 'Mark' Jin; 24.02.2017
comment
@Zhongjun'Mark'Jin, я могу немного опоздать, но для тех, кто хочет хороший учебник, и если у вас есть подписка на Pluralsight, ознакомьтесь с курсом Гранта Литтла, Отказ от ответственности :: Я никоим образом не связан ни с Грантом Литтлом, ни с Pluralsight. - person Anmol Bhaskar; 20.04.2021

Hazelcast — это сетка в памяти, поэтому для такого использования она должна быть значительно быстрее, чем MongoDB. У них также есть готовый код кластеризации сеансов для сервлетов Java, если вы не хотите создавать его самостоятельно.

Код для кластеризации сеансов здесь, на github . Или здесь для артефакта Maven.

person Sten Roger Sandvik    schedule 19.03.2013