EverMesh
Related inside: EverMash, EverHash.
A conceptual look at replacing high loads with p2p, edge-to-edge, distributed computing and pervasive meshing — in every IT process and service, from physical connectivity to the hypertext web, from real-time communications to knowledge base management, from writing code to content delivery.
I’ve been thinking about it, on and off, for many years. Haven’t documented much, alas. E.g. tech —
Distrifeeds, ideology —
OpenLife.
Abstract
p2p & edge-to-edge: разоблачая необходимость высоких нагрузок
- Codename: EverMesh
- Homepage: http://wiki.cenkes.org/Cenkes/EverMesh
- Аудитория: стратеги-мечтатели, armchair generals, ИТ-архитекторы
- Buzzwords: p2p, edge-to-edge, mesh, grid, distributed, mashup
Концептуальный взгляд на вытеснение высоких нагрузок технологиями p2p, edge-to-edge, распределёнными вычислениями и повсеместным meshing — в любом ИТ-процессе и сервисе, от физических подключений до гипертекстового веба, от коммуникаций реального времени до управления базами знаний, от написания кода до доставки контента.
Это одна из моих больных псевдо-исследовательских тем. О том, что высокие нагрузки — результат неправильного подхода к использованию сети. О том, что за последние 20 лет никто не освоил радикально новых бизнес-моделей и валютой интернет-бизнеса остаётся трафик (в широком смысле).
Всё это пока звучит странно, но в этом году уже неожиданно зазвенели звоночки типа Google Wave и Opera Unite. До этого появлялись mashup-редакторы, из которых Microsoft Popfly и Google Mashup Editor уже скончались, но Yahoo Pipes и Mozilla Ubiquity набирают обороты.
Я бы хотел рассказать о переходах central server — decentralized servers — distributed servers — CDN — p2p в вебе и о движении от сервисов к стандартам вообще. На идеологическом, технологическом и коммерческом уровнях.
Насколько это реально именно в вебе? Или это только идея?
Технически вполне реально. Более того, зачаточные решения показывали работоспособность ещё в 90-х (например, рабочий и широко использовавшийся edge-to-edge есть в squid уже очень давно, просто web2.0 требует пересмотра технологии). Сейчас тяжёлый веб-контент переползает на p2p: поддержка есть во flash 10 и других плагинах. Для Firefox давно есть XMPP-extension, это p2p-ориентированный протокол, готовый эффективно передавать всё, от html до звука и видео.
Короче, остаётся только соединить точки. Доклад теоретический, идейно-аналитический. Никакой практики, только красивые разговоры
Дисклеймер: эта тема НЕ о том, как ускорить сервер в 100 раз, хостить порно со спокойной совестью или зарабатывать $1000 в час, просто кликая мышкой.
Quick-Start
Интернет создавался как полностью распределённая сеть равноправных узлов. Так он и развивался, пока не пришёл настоящий электронный бизнес — реклама.
Гонка за трафиком, или количеством посещений, при традиционном подходе ставит перед большинством интернет-компаний задачу максимально повысить нагрузку на свои ресурсы.
EverMesh — небольшой исследовательский проект, изучающий возможность использования технологии и идеологии p2p для радикального решения проблемы высоких нагрузок, которое было бы приемлемо для бизнеса.
Архитектуры
Client-server — разделяет приложение на обработчик и отправителя запросов. E.g. HTTP, IMAP. В том или ином виде обычно присутствует во всех других типах архитектур.
Client-queue-client — соединение нескольких клиентов посредством сервера. E.g. IRC, XMPP.
P2P, peer-to-peer — непосредственное соединение множества клиентов между собой. E.g. BitTorrent, eDonkey2000.
Hybrid P2P — частично опирается на centralized, client-server компоненты (обычно в части поиска, синхронизации). E.g. Skype, Napster.
Pure P2P — полное отсутствие точек сосредоточенного контроля. E.g. BitTorrent/DHT/Cubit, SMTP, IP.
Centralized — жестко привязаны к центральной точке контроля. E.g. RDBMS, FTP.
Decentralized — несколько центральных точек контроля. E.g. HA-/LB-кластеры, geo-partitioning.
Distributed — каждый клиент является полноценной точкой контроля. Практически pure P2P. E.g. DNS, SMTP, IP. Часто смешивается со значением parallel.
CDN, Content Delivery Network — сеть типа decentralized или distributed, предоставляющая услуги доставки мультимедийного контента, обычно по протоколам типа centralized. E.g. Akamai, CloudFront.
Grid — отличается свободным членством узлов, распределённым административным контролем. Обычно подразумевает HPC-задачи.
Cloud — легко масштабируемые сервисы, часто HPC и CDN, предлагаемые в удобной, интегрированной инфраструктуре. E.g. Amazon EC2, S3, Rackspace, OpSource.
Push — инициирование соединения стороной-источником. E.g. SMTP, XMPP. Часто эмулируется на базе pull-протоколов типа HTTP, IMAP, с разной степенью эффективности. Push-архитектура необходима для real-time и near-real-time приложений.
Pull — инициирование соединения стороной-получателем. E.g. HTTP, POP3. Pull-протоколы обычно имеют меньше проблем с шумом, чем push.
Portal — объединение идейно связанных интерфейсных компонент в одном, структурно разделённом по источникам front-end, часто web-based.
Mashup — объединение идейно связанных потоков данных и функций в одном приложении, часто web-based. Отличается от портала существенной value-adding обработкой, часто сводящейся к простому агрегированию или коррелированию.
Протоколы
IP/TCP/UDP — коммуникационные протоколы интернет нижнего уровня. Изначально спроектированы как pure p2p. Вместе с протоколами динамической маршрутизации обеспечивают стабильную работу при отказе значительного числа узлов.
SCTP — замена TCP/UDP с поддержкой multipathing, multihoming, multistreaming, etc. Множество новых возможностей позволяют более эффективно внедрять mobile ip и p2p, поддерживать децентрализацию на транспортном уровне.
SMTP — базовый почтовый протокол. Разрабатывался как pure p2p. С распространением персональных компьютеров принял вид edge-to-edge. Отличается особой стойкостью к отказу узлов и простотой. Из-за push-модели и консервативности подвержен преобладанию шума — массовым рассылкам рекламы и вредоносного контента.
HTTP — базовый протокол www. Ограниченность функций заставляет разработчиков внедрять такие широко востребованные возможности, как поддержку сессий, синхронизацию и real-time оповещения, на более высоких уровнях, зачастую нарушая общую request-response парадигму протокола. Строгая client-server модель, допускающая определённую децентрализацию.
XMPP — обмен xml-сообщениями в реальном времени. Протокол изначально модульно-расширяемый, за 10 лет получил сотни популярных расширений, от передачи XHTML и файлов до полноценного SIP-совместимого Video/Voice over IP. Широко используется в закрытых приложениях типа Google Talk и Lotus Sametime. Последнее время приобрёл значения general-purpose p2p message-passing протокола.
Napster — первый популярный hybrid p2p протокол. Имел централизованную систему поиска, легко уязвимую для судебного вмешательства.
BitTorrent — современный популярный hybrid p2p протокол. За годы существования приобрёл несколько расширений, которые приблизили его к pure p2p. Изначально плохо подходит для последовательной передачи данных, но модификации позволяют использовать его для поточного асинхронного широковещания.
DHT — экспоненциально масштабируемая pure p2p key-value таблица, эффективно выдерживающая отказ произвольно заданного процента узлов. E.g. Chord, Kad, trackerless BitTorrent, Coral CDN, Freenet, memcached. DHT-алгоритмы используются для скоростной распределённой маршрутизации, в том числе multicast.
Стратегии
Simple Caching (ISP, last mile, edge) — отлично работает для объёмного контента, — и p2p (75% reusal) и HTTP/FTP (50%+ reusal).
Edge-to-edge Caching — простое кэширования с общением между кэш-серверами. HTCP. Успешно опробован в squid. Ограниченная область применения.
HTTP-/DPI-based кэширование полезно, но сегодня уже совсем недостаточно. Передача тяжёлой медиа-информации успешно решена, проникновение pure p2p растёт, появляются потоковые решения на их основе. Основная проблема кроется в генерации и распространении лёгкого контента. Проблема, которую не решит ни кеширование, ни p2p без радикального изменения парадигмы.
Structuring — структурирование информации для удобства передачи, хранения и reusal в mashups, по открытым стандартам и технологиям. E.g. HTML в RSS/Atom, ICQ в XMPP, plain-text в XML, XLS в CSV/SQL.
По проникновению лидирует базовый структурный стандарт XML, но единого стека конкретных схем до сих пор нет.
EverHash — everything hashed, повсеместное присвоение любым элементам структурированных данных UUID, основанных на крипто-стойких хэшах, для обеспечения работы DHT-системам. UUID-хэши также могут назначаться строкам URL, ключевым словам, физическим и логическим участникам сети и любым другим объектам, в зависимости от требований p2p-алгоритмов и для удобства индексированного поиска. Напоминает HTTP ETag, но действует намного шире и на более глубоком уровне.
EverMash — mashups everywhere, условное обозначения всепроникающих mashups, когда большинство существенных гиперссылок заменяются элементами типа mashup, асинхронно подгружаемых из pure-P2P DHT-based систем.
EverMesh — meshing everyone, переход от модели доступа к центральным агрегаторам к модели распределённых peers, “друзей–соседей”, свободно определяемых любыми классификаторами: по местоположению (в частном случае совпадая с IP-сетью или 802.11s mesh), социальным связям (совпадая с соцсетями), цепочкам доверия, или, для оптимальной устойчивости, по выбору алгоритма DHT.
Todo
- DNS
- Push-over-pull piggybacking
- Commercial concerns
- Ideology and ethics
Highlights
- implementation, ideology, commerce
- NOT about how you can make your server run 100x faster
- NOT about how you can host porn with clean conscience
- NOT about how you can make $1000 an hour just by clicking
- get an MCSE or a botnet for that
- rather, about the absurdity
- Distributed computing is hard. Everyone’s kinda doing it, but nobody’s really doing it.
Notes
- DHT works: Coral CDN, Amazon, etc. It works quickly.
- Today URI=URN=URL => fallacy!
- URI should become dependable UUID (256-bit crypto hash)
- URL should be dynamic
- DHT-based or otherwise derived from the cloud
- reads and writes
- reads are more or less trivial
- reads already work (Coral CDN)
- writes are trickier
- work, but poprietary so far (Amazon Dynamo)
- demand review of current archs
- ACID transactions are a myth
- undetected errors happen
- not needed in most cases
- delays are often more damaging overall
- outages are almost often more damaging, locally and overall
- ticket booking transactions are a joke
- banking transactions are really not critical
- publishing
- easy
- transitionally, html/rss start referencing uuid urns
- ultimately, uuids are just injected into the dht
- both pull and push work great in dht
- the legacy concept of “page”
- transitionally, versioned and updated
- published under new uuids
- ultimately obsoleted
- presentation layer is moved to the edge
- think e-mail
- W3C CSS is just a step towards free associations between pieces of different media
- ultimate solution for centralized interactive apps
- abandon centralized interactive apps
- there’s no need for such a thing, really
- push SaaS to the edges!
- $$ - hardware appliances
- $$ - software appliances
- $$ - proprietary software
- $$ - “FOSS” with non-free corporate licensing
- $$ - FOSS support and provisioning
- turn SaaS into an open P2P standard
Technology
ETag on Steroids
pipes and mashups
slashdot-effect
- not there with real-world gossip
- not there with mass-media
- not there if properly distributed
search
- multi-(UU)ID
- multi-dimensional
- FreeBSD release 8.0 -> (x, y, z) -> (FreeBSD, release, 8.0)
- possibly alphabetic sorting, or hashing into dimension number
- possibly dynamic number of dimensions
- structured dynamic info as ID augment
- distance based on keyword marching, other matches, dynamic user-defined matches
- OID tree, usenet tree
- limited mind experiment validity
- hybrid metric for likeness of data: text, media (audio/video), binary
- rely on metadata?
- a complicated set of comparisons with weight
Ideology
Commerce
Buzzwords
p2p, peer to peer, many to many, edge to edge, mesh, distributed, decentralized, egalitarian networks, social networking, file sharing, grid computing, the Writable Web (or Read-Write Web), remixed web, CPBB or Commons-Based Peer Production, the alter-globalization, FOSS, parallel and distributed computing, object-oriented sociality, the Information Commons, folksonomies and tags, collective intelligence, synergetics, distributed ownership
Random Links