Как я могу создать очередь с несколькими работниками?

Я хочу создать очередь, в которую клиенты могут помещать запросы, а затем рабочие потоки сервера могут извлекать их, поскольку у них есть доступные ресурсы.

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

Имея в виду инструменты безопасности и проверки,вот простой пример того, что я имею в виду:

  • пользователь отправляет запрос в корзину «очереди»
  • серверы вытаскивают запрос и удаляют его(как мне убедиться, что только один сервер получает запрос?)
  • сервер проверяет данные и извлекает их из частной корзины (или вводит новые данные)
  • сервер отправляет данные и/или ошибки обратно в корзину пользователя

enter image description here

Упрощенным примером того, где это может быть полезно, может быть аутентификация :

  • . пользователь помещает запрос аутентификации в общую очередь
  • его логин/пароль помещаются в его личное ведро (, место, куда только он может читать/писать)
  • сервер получает запрос на аутентификацию, извлекает логин/пароль и проверяет доступ к частной корзине только для сервера
  • сервер помещает токен в личную корзину пользователя

(конечно, в публичной очереди все еще есть некоторые лазейки безопасности; Я просто исследую этот момент)

Некоторые другие примеры использования:

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

Итак, вопросы:

  1. Является ли это хорошим дизайном, который хорошо интегрируется в будущие планы обеспечения безопасности? Какие альтернативные подходы изучаются?
  2. Как заставить все серверы слушать очередь, но только один, чтобы получать каждый запрос?
8
задан Kato 28 June 2012 в 16:26
поделиться