1.PubNub
В настоящее время PubNub является единственной услугой, которая предлагает готовое решение для геохаш-пабов через веб-розетки, но их цена очень высока (500 подключенных устройств стоят около 49 $, 20 000 устройств стоят 799$) ОБНОВЛЕНИЕ: PubNub обновил цену, теперь с неограниченным количеством устройств .Скоро будут обновлены веб-сайты.
Pubnub работает над своей моделью ценообразования, потому что некоторые из их клиентов платили много за неожиданные всплески трафика.
Однако это не будет жизнеспособным решением для универсального приложения обмена сообщениями, которое должно быть открыто для всех и для которого трафик поэтому очень непредсказуем.
Очень жаль, поскольку этот сервис был бы для нас идеальным решением в противном случае.
2.Ably
Ably предлагает систему pubsub для потоковой передачи данных клиентам через веб-сокеты для пользовательских каналов.Каналы создаются динамически, когда клиент присоединяется, чтобы либо опубликовать, либо подписаться на этот канал.
Основная проблема здесь заключается в том, что:
- Если нам нужна высокая точность геохеша, нам нужно большое количество каналов и, следовательно, мы должны платить больше;
- Если мы пойдем с низкой точностью геохеша, будет много лишних сообщений: допустим, что мы берем канал, который представлен геохешем из 4 символов, охватывающий географическую область 39,1 x 19,5 км.
Любая запись, отправляемая на этот канал, будет мультиплексирована всем в этом регионе, кто в данный момент слушает.
Однако предположим, что наше приложение допускает максимальный радиус 10 км, и половина подключенных пользователей имеет настройку на радиус 1 км.
Это означает, что все сообщения за пределами этого радиуса в 2 км будут излишне мультиплексированы для этих пользователей и будут просто отброшены без дальнейшего использования.
Мы также должны учитывать масштабируемость этого подхода.Для каждого геохеша, который нужен как производителю, так и потребителю, будет создан другой канал.
Определенно дороже иметь приложение, для которого требуются темы, основанные на геошах по всему миру, чем приложение, которое требует только тем, основанных на темах.
То есть, по всему миру количество тем резко возрастает, а следовательно, и цена.
Другое соображение заключается в том, что нашему приложению требуется дополнительное количество каналов:
- По геохэшу и группе: наше приложение позволяет создавать группы на основе геолокации (что будет эквивалентноТвиттер как #hashtags).
- По месту
- По подписчикам (расширенная функция)
Этот подход имеет несколько оптимистичных соображений, несмотря на:
- Потоковая передача требуется только при активной ленте новостей: когда у пользователя открыто окно браузера на нашем веб-сайте +, когда пользователь подключен к мобильному устройству и активно открыт соответствующий канал
- Можно выполнить дальнейшую оптимизацию,например, потоковую передачу можно начинать только через 10–20 секунд после обновления канала
- Потоковая передача по местным / последующим пользователям может иметь высокий трафик в зависимости от текущей активности, но многие каналы мест также будут простаивать
Очень важным замечанием в этом отношении является то, как Ably выставляет счета своим потребителям, что может быть использовано для нашего полного преимущества:
Канал открывается, когда происходит любое из следующего:
- Сообщение публикуется на канале через REST
- Клиент, подключенный к каналу в реальном времени.Канал остается активным в течение всего времени, когда клиент подключен к этому каналу, поэтому, если вы подключаетесь к Ably, подключаетесь к каналу и публикуете сообщение, но никогда не отключаете канал, канал будет оставаться активным до тех пор, пока это соединение остаетсяopen.
Открытый канал автоматически закроется, когда всеприменяются следующие условия:
Больше нет клиентов реального времени, подключенных к каналу. С момента публикации последнего сообщения прошло не менее двух минут.Мы поддерживаем каналы в течение двух минут, чтобы обеспечить непрерывность канала как часть восстановления состояния соединения.
Например, если у вас есть 10 000 пользователей, и в ваше самое загруженное время месяцаэто один пик, когда 500 клиентов устанавливают соединение в реальном времени с Ably, и каждый из них подключается к одному уникальному каналу и одному глобальному общему каналу, максимальное количество каналов будет суммой 500 уникальных каналов на клиента и одного глобального общего канала, то есть 501пиковые каналы.Если в течение месяца каждый из этих 10 000 пользователей подключается к своему уникальному каналу и подключается к нему, но не обязательно в одно и то же время, это не влияет на количество пиковых каналов, поскольку пиковые каналы - это одновременное количество каналов, открытых в любой момент времени.в течение этого месяца.
Оптимистичный вывод
Самый важный вывод заключается в том, что мы должны учитывать, что эта функция может быть не столь важной, как полагают, что дляПервая версия приложения.
Несмотря на то, что Twitter, Facebook и т. Д. Предлагают эту функцию получения обновлений в реальном времени (и пользователи ожидают этого), первоначальная бета-версия нашего приложения в ограниченном масштабе может работать без, то есть пользователь должен обновлять вЧтобы получать новые обновления.
Во время первого запуска приложения можно собирать статистику, чтобы получить более подробные сведения о поведении пользователей.Это позволит нам строить более надежные инфраструктурные и финансовые размышления на основе фактических данных.