Я искал в стеке поток похожих вопросов, таких как MMORPG-сервер.
шаблоны проектирования и тому подобное, так как концепция по сути та же самая, однако я пришел
нет удовлетворительного заключения для решения моей проблемы.
Функциональность
По сути, серверное программное обеспечение (которое разрабатывается на Java с использованием JBoss Netty) просто
позволяет аутентифицированным клиентам устройства передавать и контролировать данные объекта, которые затем передаются клиентам устройства с указанным диапазоном.
Рассмотренные подходы
1. Используйте фиксированный пул потоков и периодически обновляйте устройства в очереди, в которых сервер
выполняет проверку объектов в зоне действия устройства и передает соответствующие
порождает / обновляет / уничтожает пакеты.
2. Используйте модель стиля ректора, где события регистрируются в реакторе и обрабатываются
синхронно. Например, событие может быть опубликовано при обновлении устройства
сущность или устройство обновляет свое местоположение. Затем сервер может выбрать объекты в
дальность действия устройства и передача соответствующих пакетов создания / обновления / уничтожения
асинхронно.
3. Выполните обновления в потоке событий Netty. Например, клиент обновляет это
местоположение, сервер выполняет проверку сущностей в пределах диапазона и отправляет соответствующие
создавать / обновлять / уничтожать пакеты. Проблема в том, что при таком подходе сервер будет
не передавать объекты, если устройство не обновляет свое местоположение. Средство, чтобы решить это
проблема также может заключаться в выборе устройств в радиусе действия объекта при создании / обновлении / уничтожении
сообщение от устройства и обновлять каждый из них синхронно.
Это лишь несколько подходов, которые я рассмотрел, я ищу наиболее масштабируемый подход
обеспечивая минимально возможную задержку, поскольку данные должны быть в режиме реального времени, насколько это возможно.
Любые другие рекомендуемые подходы приветствуются.
Мои извинения, если в моем вопросе недостаточно информации, я с удовольствием исправлю любые ошибки
или предоставьте дополнительную информацию по запросу.
Спасибо за ваши ответы.