TWiki> Cenkes Web>HighLoad2009>EverMesh (30 Dec 2009, Main.AndrewPantyukhin)EditAttach
Tags:
create new tag
, view all tags

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 до звука и видео.

Короче, остаётся только соединить точки. Доклад теоретический, идейно-аналитический. Никакой практики, только красивые разговоры smile

Дисклеймер: эта тема НЕ о том, как ускорить сервер в 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
    • really
  • 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?
    • not for long
  • a complicated set of comparisons with weight
    • much like spam rating

Ideology

  • p2p ~~ FOSS

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

Topic revision: r31 - 30 Dec 2009 - 09:18:32 - Main.AndrewPantyukhin
 

Cenkes - IT Pro Bono