Лучшая стратегия для разработки серверной части приложения с большой базой пользователей с учетом ограничений пропускной способности, одновременных подключений и т. Д. c. - PullRequest
0 голосов
/ 26 февраля 2020

Я занимаюсь разработкой приложения Android, которое в основном делает это: на целевой (домашней) странице оно показывает пару слов. Эти слова должны обновляться ежедневно. Во-вторых, есть вкладка «впечатления», в которой отображается список впечатлений пользователя (около 500) с их профилем pi c, description и др. c.

Это базовое c приложение Ожидается, что около 1 млн пользователей будут ежедневно открывать приложение хотя бы один раз, чтобы увидеть эти пару слов. Многие могут иногда открывать раздел опыта.

В-третьих, приложение должно иметь функцию уведомления pu sh.

Я планирую приобрести управляемый хостинг WordPress, настроить веб-сайт и добавляйте пост каждый день с этими двумя словами, используйте JSON -API, чтобы извлечь эти слова и отобразить их на домашней странице приложения. Аналогично, я добавлю каждое из них в качестве сообщения WordPress и извлеку их из базы данных Wordpress. Причина, по которой я выбираю wordpress, состоит в том, что он имеет готовые интерфейсы для ввода данных, которые сэкономят мое время и усилия.

Но я застрял на этом: сможет ли БД wordpress обрабатывать такое большое количество запросов ? С такой большой базой пользователей и колючими трафиками c, я подозреваю, что смогу пересечь макс. лимит одновременных подключений.

Какая стратегия лучше всего подходит для моего случая? Должен ли я использовать WP, или использовать Firebase или любой другой сервис? Я должен убедиться, что схема также экономически эффективна. Мое приложение в основном очень похоже на это: https://play.google.com/store/apps/details?id=com.ekaum.ekaum

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

1 Ответ

0 голосов
/ 26 февраля 2020

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

Вы все еще можете использовать WP для ввода данных, и написать запланированную функцию который будет использовать WP 10 * API для копирования этих данных в Firebase.

Масштабируемость RTDB-vs-Firestore утверждает, что RTDB может обрабатывать 200 тысяч одновременных подключений и Firestore 1 миллион одновременных подключений.

Однако, если я правильно понял, ваше приложение не нуждается в подключениях, чтобы быть активными (т.е. получать обновления в режиме реального времени). Вы можете получить данные один раз, а затем закрыть соединение.

Для RTDB Включение автономных возможностей для Android означает, что

Вкл. Android, Firebase автоматически управляет состоянием соединения, чтобы уменьшить пропускную способность и использование батареи. Когда у клиента нет активных прослушивателей, нет ожидающих операций записи или onDisconnect, и он явно не отключен методом goOffline , Firebase закрывает соединение после 60 секунд бездействия.

Таким образом, соединение должно закрываться само по себе через 1 минуту, если вы удаляете своих слушателей или вы можете принудительно закрыть его раньше, используя goOffline .

Для Firestore, я не знаю, происходит ли это автоматически, но вы можете сделать это вручную .

В Firebase Pricing вы можете видеть, что 100K Firestore читает документ за 0.06 $. Чтение 1M (для двух слов) должно стоить $ 0,6 плюс некоторый сетевой трафик c. В RTDB стоимость связана с объемом данных, поэтому требует некоторых вычислений, но не должна быть большой. Я не знаком с мелкими деталями ценообразования, поэтому вам следует провести еще какое-то исследование.

В упомянутом вами приложении опыт, похоже, меняется не очень часто. Возможно, вы захотите попытаться создать собственное кэширование вручную и добавить необходимую информацию о версиях в ежедневные данные.


Редактировать:

Возможно, это будет более эффективным и менее затратным, если вы использовали Firebase Hosting вместо RTDB / Firestore напрямую. См. Обслуживание динамического c контента и микросервисов хоста с помощью облачных функций и Управление поведением кэша .

Короче говоря, вы создаете функцию HTTP который читает вашу базу данных и возвращает нужные вам данные. Вы настраиваете хостинг для вызова этой функции и настраиваете кеш так, чтобы последующие запросы обслуживались в кешированном результате через хостинг (без дополнительных вызовов функций).

...