Кафка для хранения статуса пользователя - PullRequest
0 голосов
/ 17 июня 2020

У меня есть служба, которая подключается к клиентам через веб-сокет. У меня есть несколько экземпляров этой службы, работающих в Kubernetes. Один пользователь может иметь несколько подключений к разным репликам одновременно. Служба использует разные идентификаторы группы для всех тем, которые она прослушивает, потому что все реплики должны получать все сообщения в топе c, чтобы каждая из них могла отправлять данные пользователю, если у него есть соединение с этой репликой.

Теперь мой вопрос - проверить, можем ли мы использовать Kafka для хранения онлайн / офлайн-статуса пользователей. Когда пользователь подключается к любой 1 реплике, он может быть отмечен как подключенный к сети, если он еще не подключен. Когда пользователь отключается от реплики, он не должен быть помечен как автономный, если он не подключен к какой-либо другой реплике. подумал:

Создайте топи c для хранения событий подключения / отключения из экземпляров службы. Используйте этот topi c для kstream для создания глобальной ktable, в которой хранится онлайн-статус пользователя в автономном режиме. Ключ будет использоваться для идентификации пользователя.
Все экземпляры будут прослушивать этот топ. c
Все экземпляры должны иметь доступ к GlobalKtable, в которой хранится статус пользователей онлайн / офлайн.
На основе значения Ktable это будет решать, отправлять ли событие отключения / подключения на topi c

Вот вопросы:

  • Следует ли использовать сжатый topi c для сохранения статуса пользователя онлайн / офлайн
  • Или мне следует использовать Global KTable для его хранения
  • Поскольку есть частые обновления, GlobalKtable не следует использовать здесь?
  • Если мы используем KTable, каждый экземпляр приложения должен индивидуально рассчитать таблицу на основе событий подключения / отключения topi c?
...