Приложение, над которым я сейчас работаю, нуждается в масштабируемой связи в реальном времени.Мы изучили и опробовали базу данных Firebase в режиме реального времени и пожарный магазин.Похоже, что база данных Firebase в реальном времени более зрелая и проверенная, в то время как Firestore все еще находится в бета-версии, поэтому мы склоняемся к базе данных в реальном времени.
Однако мы обеспокоены возможностями его масштабирования в нашем контексте.Наши запросы будут в основном гео-пространственными в зависимости от местоположения пользователя.Согласно одновременным соединениям Firebase в реальном времени с моей базой данных и https://firebase.google.com/pricing/#faq-simultaneous максимальное количество одновременных пользователей составляет 100 000, что будет слишком мало для наших нужд.
Согласно их документациикажется, что сегментирование базы данных - это способ масштабирования более 100 000 одновременно работающих пользователей https://firebase.google.com/docs/database/usage/sharding. Поскольку наши запросы основаны на местоположении пользователя, мы можем сгруппировать данные по регионам, например, Запад США, Центральный США и Восток США ииметь экземпляр базы данных для каждого из этих трех регионов.
Несмотря на то, что этот метод может работать, его настройка кажется очень громоздкой.Возможно, нам понадобится служба, к которой пользователь первоначально подключается, чтобы перенаправить ее на правильный экземпляр базы данных, который соответствует области, в которой находится пользователь. Кроме того, он должен обрабатывать случай, когда пользователь перемещается в другую область, ипоэтому его следует перенаправить в другой экземпляр базы данных, содержащий данные для этого конкретного региона.Другая сложная задача - распределить данные в правильные экземпляры базы данных.
Существует ли более простой подход для масштабирования более 100 000 пользователей или можно увеличить количество одновременных подключений для одной базы данных Firebase в реальном времени?Мне кажется почти пустой тратой использовать Firebase, если он требует от вас такой большой балансировки «нагрузки».