Pull to refresh
1
0
Никита Кортунов @watsonstudio

Руководитель группы разработки

Send message
Спасибо, поправим!
Функционал, который сейчас предоставляет платформа, намного шире одних вебсокетов.
Дополнительно к функционалу реализована отказоустойчивость, репликация, балансировка нагрузки. Для каждого приложения выделяется кластер БД, API.

Согласно нашей тарифной политике, пользователю доступно бесплатно:
  • 20 запрсов к API в секунду
  • 10Гб для хранения файлов
  • 200 одновременных подключений к websockets
  • 3 секунды на исполнение серверного кода


Давайте проведем небольшой расчет. Для реализации простого приложения, которому достаточно вышеуказанных лимитов, потребуется БД, app server, балансировщик. Расчет будем вести с учетом не самых мощных машин. Для небольшого отказоустойчивого проекта нам потребуется:

  • БД реплика (арбитер поставим на машинку с application server) — 2 машины по 4 ядра, 16 Гб Озу
  • Балансировщик — 2 машины (на случай отказа) по 8 ядер, 8 Гб Озу
  • App server — (в целях экономии поставим на те же машинки, что и балансировщики)


Берем стоимость ресурсов с сайта известного российского облачного хостера:
4 ядра, 16 Гб Озу — 5 980р
8 ядер, 8 Гб Озу — 3 900р

(3900 * 2) + (5980 * 2) = 19760

Итого стоимость: 19760 руб. в месяц

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

Доступ к вебсокетам регулируется ключом websocketKey, который можно поменять в настройках приложения.

Есть ли возможность подписки по маске?

В данный момент нет, но мысль интересная, подумаем.

p.s. Хотелось бы получить больше информации по поводу плюшек, которых не хватает и были бы востребованы.
Например: подписка по маске, буферизация и т.д.
Магия в том, что нет никакой серверной логики. Т.е. Вы подключаете SDK, указываете канал на который нужно подписаться, и он работает в режиме broadcast. В приведенном примере чата всего один общий канал. Но никто не мешает использовать разные каналы для создания тех же комнат.
Платформа Scorocode хранит данные о подписчиках на каналы и при поступлении данных рассылает их. Вы можете использовать эти возможности например для синхронизации корзины на разных вкладках, используя в качестве названия канала id пользователя, где каждый клиент будет подписываться на свой канал, либо для отправки каких-либо обновлений определенному пользователю.
Спасибо за комментарий. Целью статьи было не создание чата, а возможность рассказать немного о внутреннем устройстве websocket'ов в сервисе Scorocode, а так же показать пример, как эту технологию можно использовать в рамках нашего сервиса.

По поводу «не тратиться», мы уже думаем над кодогенерацией :)
Здравствуйте. Уже работаем в данном направлении.

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity