Я создаю веб-приложение для повышения производительности, которое имеет дело с умеренным параллелизмом пользователей, и я изучаю различные варианты синхронизации данных между сервером и клиентом.Данные приложения загружаются в JavaScript при загрузке страницы, а веб-сокеты используются для передачи данных на сервер.
Для некоторого контекста в настоящее время я использую Node.JS и Socket.IO для создания постоянного клиента-серверный шлюз, который действует как прокси для бэкэнда Django.
Проблема в том, что я хотел бы синхронизировать все подключенные клиенты друг с другом, чтобы любые изменения в приложении в одном сеансе клиента происходили немедленноотражается на всех подключенных клиентских сессиях.Сложность в том, что не всем пользователям обязательно разрешено просматривать все данные;Существуют различные уровни пользователей, и разные пользователи могут стать владельцами немного разных наборов данных.
Следовательно, когда объект каким-либо образом изменяется и это изменение передается в базу данных, мне нужно знать, какиепользователи из тех, кто в данный момент подключен, я могу смело отправлять данные.
Я изучал различные решения для этого, и я чувствую, что это то, что может быть обработано через очередь обмена сообщениями pubsub - используя что-то вроде AMQP, но я изо всех сил пытаюсь выяснить структуру приложения.
В моей голове структура приложения выглядит так:
Client
<-> Node.JS gateway
<--> AMQP messaging queue
<-> Django app
Должен ли я просто создать один прямой обмен, обрабатывая экземпляры Node.js и Django как отдельные клиенты, а затем каким-то образом фильтровать результаты в Node.js?
Или это своего рода фильтрация, которую может обрабатывать система обмена сообщениями, когда каждый подключенный клиент подписывается на релевантныйНапример, и получение только тех данных, которые им разрешено видеть?
У меня очень мало опыта работы с системами обмена сообщениями, поэтому я пытаюсь понять, какую роль они выполняют.способны в приложении.Любой совет будет принята с благодарностью.