Как синхронизировать токен (строковое значение) между узлами приложения?

У нас есть приложение Spring 3 + REST, в котором мы используем токен для определения источника входящего запроса. Этот токен хранится в памяти (в хэш-карте) и используется для идентификации запроса. Когда мы являемся несколькими экземплярами нашего приложения (развернутыми на нескольких экземплярах tomcat на разных компьютерах), как мы можем совместно использовать / синхронизировать этот токен между различными узлами приложения? Наше единственное требование - синхронизировать этот токен между различными узлами.

Я просмотрел и нашел несколько программ apis / программного обеспечения, таких как Redis, memcached, zookeeper. Я не могу решить, какой из них выбрать.

Любые предложения / комментарии полезны.

С уважением, Прамод

1 ответ

Решение

Я никогда не пользовался зоопарком, поэтому ничего не могу сказать по этому поводу. Redis (база данных) и memcached (кеш) будут работать для вас. Какой из них лучше, зависит от того, как вы используете токены.

Выберите Redis, если:

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

Выберите memcached, если:

  • токены действительны только в течение определенного периода времени и должны истечь
  • количество токенов, превышающее емкость памяти, будет удален наименее использованный токен.
  • все токены могут быть сохранены в памяти
  • не нужно копировать токены на другой сервер
  • токены не должны пережить перезапуск сервера
  • хочу использовать Spring Cache абстракцию
Другие вопросы по тегам