Я хочу создать очередь, в которую клиенты могут помещать запросы, а затем рабочие потоки сервера могут извлекать их, поскольку у них есть доступные ресурсы.
Я изучаю, как я мог бы сделать это с репозиторием Firebase, а не с внешней службой очередей, которая затем должна была бы вводить данные обратно в Firebase.
Имея в виду инструменты безопасности и проверки,вот простой пример того, что я имею в виду:
- пользователь отправляет запрос в корзину «очереди»
- серверы вытаскивают запрос и удаляют его(как мне убедиться, что только один сервер получает запрос?)
- сервер проверяет данные и извлекает их из частной корзины (или вводит новые данные)
- сервер отправляет данные и/или ошибки обратно в корзину пользователя
Упрощенным примером того, где это может быть полезно, может быть аутентификация :
- . пользователь помещает запрос аутентификации в общую очередь
- его логин/пароль помещаются в его личное ведро (, место, куда только он может читать/писать)
- сервер получает запрос на аутентификацию, извлекает логин/пароль и проверяет доступ к частной корзине только для сервера
- сервер помещает токен в личную корзину пользователя
(конечно, в публичной очереди все еще есть некоторые лазейки безопасности; Я просто исследую этот момент)
Некоторые другие примеры использования:
- очередь состояния только для чтения (статус пользователя передается через частное ведро, сервер записывает его в общедоступное ведро, которое читается -только для общего доступа)
- очередь сообщений (сообщения отправляются через пользователя, сервер решает, в какие сегменты обсуждения они попадают)
Итак, вопросы:
- Является ли это хорошим дизайном, который хорошо интегрируется в будущие планы обеспечения безопасности? Какие альтернативные подходы изучаются?
- Как заставить все серверы слушать очередь, но только один, чтобы получать каждый запрос?
задан Kato 28 June 2012 в 16:26
поделиться