| idec.talks | HOME |
// Я попробую транслировать в сеть некоторые посты из своего бложика, если кто не против IDEC - это протокол обмена сообщениями совместимый на базовом уровне с ii. Расшифровывается, как ii-like Data Exchange Convention. Главная фишка его - это простота и возможность работать поверх чего угодно, например, ssh. Но практически все реализации сейчас работают поверх http. Цитата из документации(https://ii-net.tk/idec-doc/) >Есть несколько серверов (грубо говоря, сайтов), за каждым из которых закреплены свои пользователи (поинты). Поинты пишут сообщения каждый на свой сервер. >Через каждые 10-20 минут сервера скачивают друг у друга новые сообщения. В итоге на всю сеть одна общая база данных. >Для установления цепочек синхронизации владельцы серверов сначала договариваются. >Всё общение разделено на так называемые эхоконференции или эхи (см. терминология). Эха - это что-то вроде ленты твиттера или темы на форуме. >Пользователи могут свободно подписываться на интересные им эхи и писать туда сообщения в пределах одной станции. >Держатели серверов синхронизируют между собой (по общему согласию) самые популярные и нужные пользователям эхи, и сообщения оттуда расходятся по всей сети. Так при отключении одного из серверов, сообщения останутся живы на других, что дает нам такие блага, как антицензурируемость и отказоустойчивость. == Общение В стандарте предусмотрена очень полезная фича, как /list.txt(это может быть на самом деле файл или путь в строке адреса в браузере). На запрос list.txt сервер возвращает нам список эх(публичных) с описанием и количеством сообщений в них. Так при первом попадании на сервер, клиент сможет сразу знать какие эхи он хочет читать. Стандарт и все реализации серверов поддерживают создание эхи пользователем. Для этого нужно всего лишь написать в нее. Такая эха не будет отображаться в list.txt и получить из нее сообщения можно, только зная название. Шифрования в стандарте нет, но это и не нужно, ибо приносит только усложнение. Для приватного общения можно использовать скрытую эху и GPG. Личных сообщений нет, но обсуждение стандарта идет. Можно начать с чтения [этого](https://dynamic.lessmore.pw/?j=FGOqT29oVwwBElTJNMjx) треда. Каждое сообщение в сети уникально, т.е. ему присвается ID сгенерированный на основе суммы sha256 от контента. Это не спасает от спама, но позволяет избежать коллизий в сети. == Устройство сети На протоколе IDEC чаще всего реализуют децентрализованную клиент-сервер сеть. P2P не предусмотрено, но никто не мешает написать свое расширение, которое реализует P2P обмен. Итак, рассмотрим топологию сети от простого к сложному. Самая простейшая сеть выглядит так: https://difrex.lessmore.pw/images/idec/idec1.png У нас есть два клиента, которые обмениваются сообщениями через сервер. Оба клиента получают сообщения из одной и той же эхи. Все централизовано и при смерти сервера клиенты больше не смогут общаться с друг дугом. Давайте добавим еще один сервер! https://difrex.lessmore.pw/images/idec/idec2.png Владельцы серверов договорились между собой обмениваться сообщениями эхи pipe.2032, теперь при выходе из строя одного из серверов сообщения будут доступны на другом сервере. Добавим еще сегмент сети https://difrex.lessmore.pw/images/idec/idec3.png У нас добавился еще один сегмент сети в котором происходит общение в эхах pipe.2032 и linux.14. Так наш первый сегмент начинает обмениваться сообщениями со вторым. Добавим еще один сегмент. https://difrex.lessmore.pw/images/idec/idec4.png И еще https://difrex.lessmore.pw/images/idec/idec5.png Можно еще добавить связь между серверами внутри кольца и мы получим полностью децентрализованную сеть, которая реализует распределенную базу данных. IDEC позволяет строить любые топологии. Клиент может выступать так же и сервером и забирать сообщения сразу со всех серверов. А простота протокола позволяет писать клиентов очень быстро. В следующей статье напишем бота, который будет слать сообщения в указанную нами эху. |