Как синхронизировать токен (строковое значение) между узлами приложения?
У нас есть приложение Spring 3 + REST, в котором мы используем токен для определения источника входящего запроса. Этот токен хранится в памяти (в хэш-карте) и используется для идентификации запроса. Когда мы являемся несколькими экземплярами нашего приложения (развернутыми на нескольких экземплярах tomcat на разных компьютерах), как мы можем совместно использовать / синхронизировать этот токен между различными узлами приложения? Наше единственное требование - синхронизировать этот токен между различными узлами.
Я просмотрел и нашел несколько программ apis / программного обеспечения, таких как Redis, memcached, zookeeper. Я не могу решить, какой из них выбрать.
Любые предложения / комментарии полезны.
С уважением, Прамод
1 ответ
Я никогда не пользовался зоопарком, поэтому ничего не могу сказать по этому поводу. Redis (база данных) и memcached (кеш) будут работать для вас. Какой из них лучше, зависит от того, как вы используете токены.
Выберите Redis, если:
- токены могут храниться долгое время
- нет необходимости истекать токены
- хотите обрабатывать больше токенов, чем может быть сохранено в памяти
- хотите скопировать токены на другие серверы, поэтому, если один из них выйдет из строя, другой предоставит токены
- токены должны пережить перезапуск сервера
Выберите memcached, если:
- токены действительны только в течение определенного периода времени и должны истечь
- количество токенов, превышающее емкость памяти, будет удален наименее использованный токен.
- все токены могут быть сохранены в памяти
- не нужно копировать токены на другой сервер
- токены не должны пережить перезапуск сервера
- хочу использовать Spring Cache абстракцию