В последние пару лет, мессенджеры изменили привычный ход потребления контента, whatsapp, telegram, viber,
Почему P2P CDN это необходимый шаг и как все может работать (и что это вообще такое?!) — всё это рассмотрим в посте.
Вступление
С момента запуска telegram — мессенджеры начали вбирать в себя функционал соц-сетей и уже очень сложно сказать, где соц-сеть а где мессенджер, только одно может намекнуть, что перед нами — мессенджер: контент можно посмотреть только в приложении или же веб-версия очень ограничена. (Утверждение справдливо для большинства мессенджеров, включая телеграм т.к веб версия имеет не все функции)
Таким образом, в мессенджерах начал появлятся тяжелый контент — если посмотреть на каналы телеграма — они изобилуют фото, а в последнее время и видео контентом. А весь этот контент как-то надо доставлять до конечного пользователя.
Проблема
Тяжесть контента — основная проблема которую надо будет решить мессенджерам, каждый решает её как может, whatsapp (Facebook) — оплачивает сервера засчет ваших данных, telegram — пытается сделать ICO и пойти в сторону блокчейна. Но основная проблема — дороговизна инфраструктуры — никуда не уходит, просто источник денег для поддержки — меняется.
Но есть и вторая проблема — страны с медленным интернетом и дорогой интернет в любой стране: люди может и готовы бы потреблять больше контента, но либо доступ физически ограничен — (плохой сигнал) либо же очень дорог.
Решение
Решение этих проблем очень простое и я бы сказал «нативное» — P2P CDN.
Не зря в последних версиях iOS компания Apple по умолчанию всегда держит включенным Bluetooth и Wi-Fi, не зря Telegram хранит гигабайты кэшированного медиа — всё это можно использовать, причем потратив минимум времени на разработку — объединив всех пользователей конкретного мессенджера в огромную Mesh сеть.
Mesh сеть — это объединение по типу каждый с каждым, когда все пользователи приложения (например в автобусе) образуют единую сеть в которой информация может передаватся изолированно от большого интернета
Но как? зачем?
Что бы сейчас создать Mesh сеть на iOS/Android надо написать пару строчек кода — для этого сущестуют готовые фреймворки от разработчиков платформы, в play market/app store есть куча никому не нужных «offline messanger» для общения в лесу или на самолёте.
Что же можно передавать через Mesh сеть?
- Контент в каналах
- Сообщения Пользователь-пользователь
- Любой тяжелый контент из канала/чата/личных сообщений
Предположим ситуацию стандартного большого города — вы утром едите на метро и просматриваете ленту
Звучит не оптимально, правда?
Но это можно улучшить — предположим вы заходите в вагон не на конечной станции, а на следующей, а в вагоне уже есть люди и они уже читали те же каналы которые вы обычно просматриваете. Как только вы зайдете в вагон, приложение соединится с аналогичным приложением и начнет обновлять контент через него.
Другими словами — практически моментально вы синхронизируете свою ленту новостей с человеком который уже загрузил её. И в дальнейшем, приложение может оптимизировать работу, загружая контент только на 1 устройство через интернет, передаявая по Mesh сети на сосединие устройства.
Но и это еще не всё — если вы находитесь в месте с плохой связью, а вам нужно передать документ вашему другу который находится рядом с вами — мессенджер может найти его и по P2P сети передать ему документ. Что в конечном итоге сэкономит интернет трафик как вам так и другу, да и даже мессенджеру!
Мессенджер ведёт у себя список всех каналов/чатов с ID + ключами, в древовидном режиме хранится весь контент который был загружен, аналогично с ID и ключами подписи.
Переодически идет опрос эфира на наличее узлов вашей же сети — сети мессенджера, при успешном нахождении идет сравнение сравнение контента между вами и соседом.
Фактически каждый узел будет предоставлять список того, на что он подписан (желательно с возможностью отключения такой функции для определенного канала/чата). Если найденый сосед — из списка контактов — можно производить полную синхронизацию и отправлять ему сообщения локально. Если же неизвестный — только синхронизировать тяжелый контент.
Как только установилось взаимодействие между узлами, происходит синхронизация доступного контента, если что-то отсутствует у абонента А а есть у Б — А получает его от Б.
При поступлении нового контента, тот кто его первый получил, например А — может отправить его всем участникам сети (по типу multicast).
Причем, это схема будет работать и в более классическом виде для Mesh сетей — когда между А и Б есть еще Х — который не подписан на тот же самый канал, что А и Б — он будет просто посредником, передавая трафик между ними.
Естественно — для неизвестных узлов нельзя передавать данные номера телефона, только ID, а лучше временный ID, косвенно связанный с ID внутри мессенджера.
Переодически идет опрос эфира на наличее узлов вашей же сети — сети мессенджера, при успешном нахождении идет сравнение сравнение контента между вами и соседом.
Фактически каждый узел будет предоставлять список того, на что он подписан (желательно с возможностью отключения такой функции для определенного канала/чата). Если найденый сосед — из списка контактов — можно производить полную синхронизацию и отправлять ему сообщения локально. Если же неизвестный — только синхронизировать тяжелый контент.
Как только установилось взаимодействие между узлами, происходит синхронизация доступного контента, если что-то отсутствует у абонента А а есть у Б — А получает его от Б.
При поступлении нового контента, тот кто его первый получил, например А — может отправить его всем участникам сети (по типу multicast).
Причем, это схема будет работать и в более классическом виде для Mesh сетей — когда между А и Б есть еще Х — который не подписан на тот же самый канал, что А и Б — он будет просто посредником, передавая трафик между ними.
Естественно — для неизвестных узлов нельзя передавать данные номера телефона, только ID, а лучше временный ID, косвенно связанный с ID внутри мессенджера.
А что с безопасностью?
Несмотря на то, что вы будете получать контент от незнакомых вам людей — он может быть точно верифицирован — достаточно основному серверу мессенджера подписывать весь контент своим ключем при загрузке, переодически его обновляя. Таким образом — вы можете доверять контенту от вашего условного соседа на основе того, что контент который он вам отправит имеет соответствующую подпись, аналогичную контенту полученному от основного сервера мессенджера.
С разговорами и чатами ровно точно так же — вам потребуется иметь соединение с интернетом только для начала общения (проверка ключей шифрования) — дальнейшее взаимодействие может быть P2P — вы гарантировано будете уверяны, что трафик получает именно ваш друг.
Конкретный пример безопасного получения контента который есть у вас и он нужен пользователю, который хочет вас деаннонимизировать описан в
Вы должны зарегистрироваться, чтобы увидеть внешние ссылки
И много где будет эта самая «Mesh P2P сеть»??
Если вы житель большого города — везде.
В общественном транспорте, на работе, да даже дома в квартире — ваш телефон может видеть соседние устройства. А теперь подумайте, что если все устройства у которых установлен популярный мессенджер, будут автоматически создавать ту самую сеть, без какой-либо настройки…
Итог
Давайде подведем итог — выше я описал, как с помощью незначительной доработки мессенджера сделать его:
— Дешевле для обладателя
— Повысить скорость его работы
— Сделать привлекательным в странах с дорогим/медленным интернетом
— Усилить защиту от блокировок
— Новое поколение сервисов ориентированных на P2P
— Сделать возможным частичную работу без интернета
Но, это только мысли, я очень надеюсь, что Telegram/Whatsapp/любой другой крупный мессенджер решится на такую авантюру и мы наконец-то перевернём страницу истории, открыв главу распределенного интернета. И что-то мне подсказывает, что я прав и эту главу начнут именно мессенджеры, а не браузеры или операционные системы...
Оригинал:
Вы должны зарегистрироваться, чтобы увидеть внешние ссылки