Pull to refresh
113
0
Виктор Грищенко @gritzko

User

Send message

CRDT, RON и Сети Данных

Reading time 6 min
Views 6.5K

Эта статья о следующем эволюционном шаге в развитии систем обработки данных. Тема амбициозная, поэтому расскажу сначала немного о себе. Вот уже больше 10 лет я работаю над проектами в области CRDT и синхронизации данных. За это время успел поработать на университеты, стартапы YCombinator и известные международные компании. Мой проект последние три года – Replicated Object Notation, новый формат представления данных, сочетающий возможности объектной нотации (как JSON или YAML), сетевого протокола и оплога/бинлога. Вы могли слышать про другие проекты, работающие в том же направлении, например, Datanet, Automerge и другие. Также вы могли читать Local-first software, это наиболее полный манифест данного направления Computer Science. Авторы - замечательный коллектив Ink&Switch, включая широко нам известного по "Книге с Кабанчиком" М.Клеппманна. Или вы, возможно, слушали мои выступления по этой теме на различных конференциях.

Идеи этой статьи перекликаются с тем, что пишет последние годы Pat Helland: Immutability Changes Everything и др. Они смежны с проектами IPFS и DAT, к которым я имею отношение.

Итак. Классические БД выстроены на линейном логе операций (WAL). От этого лога выстроены транзакции, от него же выстроена репликация master-slave. Теория репликации с линейным логом написана ещё в начале 1980-х с участием небезызвестного Л. Лампорта. В классических legacy системах с одной большой центральной базой данных всё это работает хорошо. Так работают Oracle, Postresql, MySQL, DB2 и прочие классические SQL БД. Так работают и многие key-value БД, например, LevelDB/RocksDB.

Но линеаризация не масштабируется. Когда система становится распределённой, всё это начинает ломаться. Образно говоря, линейная система – это что-то вроде греческой фаланги. Нужно, чтобы все шли ровно, а для этого хорошо, чтобы земля была везде ровной. Так получается не всегда: где-то электричество отключили, а где-то сеть медленная. Хотя в системе Google Spanner и было показано, что с достаточно большим бюджетом землю можно сделать ровной абсолютно везде, мы всё же отметим, что Google тоже бывает отключается целиком по совершенно смешным причинам.

Читать далее
Total votes 24: ↑22 and ↓2 +20
Comments 8

Holy Grail на стероидах: тотальная синхронизация и изоморфный JavaScript на Swarm.js

Reading time 7 min
Views 22K
Сегодня на Хабре мы представляем технологию реплицированной модели, которая позволяет создавать коллаборативные и реалтаймовые веб приложения так же легко, как локальные десктопные. Мы считаем, что при разработке приложений, синхронизация данных в реальном времени должна быть доступна так же, как TCP поток, HTTP запрос или ток из розетки — сразу и без вопросов. HTML5 приложения, написанные на Swarm, в части автономности, локальности и скорости загрузки не уступают нативным.
Используя библиотеку Swarm, за выходные мы делаем больше, чем за месяц делали без Swarm. Что важней — можем делать то, что без неё делать вообще не могли. Эту библиотеку синхронизации мы предлагаем совершенно бесплатно.



Сегодня мы выкладываем TodoMVC++, реактивное HolyGrail-на-стероидах приложение, написанное на Swarm+React. Приведу список демонстрируемых в приложении возможностей:
Читать дальше →
Total votes 51: ↑39 and ↓12 +27
Comments 49

Эволюция веб-приложений

Reading time 7 min
Views 26K
Всем прикольно пообсуждать «всё новое хреновое», и последние пару лет мы увлечённо обсуждали и пробовали NoSQL/NewSQL на сервере и Angular/Knockout/Ember на клиенте. Но эти тренды, похоже, уже на излёте. Отличный момент, чтобы присесть и поразмыслить, что же дальше. Как сказал M. Andreessen, «software is eating the world». В то же время, mobile/web apps едят обычные приложения. Поэтому особенно интересно прикинуть, а куда же всё катится в мире мобильных и веб-приложений? Ведь они, получается, едят вообще всех. Я считаю, что следующей Большой Темой будет синхронизация данных, и вот почему.
синхронистки
Читать дальше →
Total votes 35: ↑33 and ↓2 +31
Comments 8

Витгенштейн и Google Wave/Buzz/Plus

Reading time 2 min
Views 13K
Достаточно очевидно, что проекты Google Wave, Buzz и Plus закончились грандиозным провалом, хотя Plus вроде бы ещё не закрыт официально. Возникает вопрос, почему Google со всеми их ресурсами и пользовательской базой не смогли «протолкнуть» такие проекты. Если неохота разбираться, можно сказать «это не работает» или «это никому не нужно», при этом скорчив гримасу превосходства (это важно), и закрыть вопрос. Но если подумать, то мы увидим, что в чём-то схожие проекты Google Docs, Twitter и Facebook соответственно (тут ирония), вполне себе цветут и пахнут. Всё-таки работает, всё-таки нужно. Так в чём же фокус?
Читать дальше →
Total votes 56: ↑16 and ↓40 -24
Comments 28

Техническая сторона Bitcoin

Reading time 3 min
Views 11K
В последние месяцы, пир-ту-пир валюта Bitcoin серьёзно выросла в популярности, в основном благодаря упоминаниям в прессе и вовлечению массовой аудитории. В то же время, среди эспертов, насколько я могу судить, распространены скептические оценки, вплоть до «Bitcoin is a scam». Я в прошлом разрабатывал и платежные системы и P2P-системы, и с криптографией приходилось работать. Поэтому я прочитал доступные источники и постарался рассмотреть технологию Bitcoin с технической точки зрения, по возможности взвешенно. Предлагаю вам краткий русский перевод материала.
Читать дальше →
Total votes 84: ↑70 and ↓14 +56
Comments 46

Пиар, фрод и буллшит на службе науки. Часть I. Пиар

Reading time 4 min
Views 619
«Британские учёные установили, что свист вызывает рак», «то ли дождик, то ли снег, то ли будет, то ли нет, а виной тому — глобальное потепление». Новости из мира науки производят порой странное впечатление. Аспиранту на заметку: я постараюсь кратко обрисовать положение дел для тех, кто не в курсе, чтобы дать верные ключи к пониманию процесса появления таких новостей.

Итак, финансирование научных проектов и карьера их участников сильно зависят от раскрученности проекта, а раскрученность зависит от журналистов. Журналисты традиционно некомпетентны в вопросах науки, как и в любых других узкопрофессиональных темах. Соответственно подбираются и методы работы с прессой, по типу «КРОВЬ, РАСЧЛЕНЁНКА (ФОТО)», но более культурно: «ГЛОБАЛЬНОЕ ПОТЕПЛЕНИЕ УНИЧТОЖИТ ЦИВИЛИЗАЦИЮ (ГРАФИКИ)».
Читать дальше →
Total votes 26: ↑18 and ↓8 +10
Comments 6

Модные штучки

Reading time 4 min
Views 807
Сегодня я настроен поговорить о технологиях, которые были весьма модны и породили вал публикаций, но по прошествии лет так и не привели к каким-либо значимым практическим результатам, либо их ниша оказалась настолько узка, что её сопоставление с первоначальными ожиданиями создаёт сатирический эффект. Как правило, такие технологии создают у новичков при первом ознакомлении впечатление «магии», чего-то, решающего все проблемы невероятно хитрым образом, но трезвая профессиональная оценка в биг-О, реальных числах и обстоятельствах заканчивается диагнозом: «пустышка».
Как показывает опыт, у таких модных штучек более или менее ярко присутствуют четыре качества: «магичность» (восхищает сложностью), неестественность (идёт против шерсти, естественного порядка вещей), сложность (это всегда плохо) и неприменимость (лишь в конкретных обстоятельствах, но какие обстоятельства ни возьми — оно неприменимо).
Итак, приступим к вскрытию.

Читать дальше →
Total votes 11: ↑7 and ↓4 +3
Comments 8

Впечатления от Wikimania 2010

Reading time 3 min
Views 824
In a nutshell: вы можете прочитать эту новость 2006 года; ничего в Википедии с тех пор серьёзно не поменялось.

Итак, 9-11 июля в Гданьске прошла ежегодная конференция википедистов. Съехалось человек 300-350, было интересно. В этом году Wikimania была совмещена с WikiSym — симпозиумом по вики вообще (не педии). И там и там в процессе прений было озвучено много интересных фактов и сделано немало полезных выводов. Итак.

Во-первых, как показало голосование, большинство участников на конференции впервые. Что странно, это противоречило экспертным мнениям о наличии постоянного ядра участников в 300 чел. Похоже, всё-таки, в движении высокая текучка. Люди приходят, загораются, участвуют, разочаровываются, уходят.
Читать дальше →
Total votes 6: ↑6 and ↓0 +6
Comments 2

Эпоха медиареальности

Reading time 2 min
Views 754
Нашу реальность пишут наши медиа.
Культ Сталина — это не злой кровавый человек в Кремле. Культ Сталина — это центрально контролируемые немногочисленные газеты и радио в каждой деревне. И средневековый Папа Римский — это не наместник Бога на земле, а иерархическая, центрально контролируемая организация с представителем в каждой деревне, полощущим мозги населению каждое воскресенье.
Медиа — продолжение нашей нервной системы, оно определяет наше отношение к реальности, а то и нашу реальность.
Читать дальше →
Total votes 46: ↑30 and ↓16 +14
Comments 72

Утечка писем из CRU подрывает репутацию британских климатологов

Reading time 1 min
Views 493
Так, мне показалось я спрятал этот пост. Но продолжают прибывать минусовщики. Алё! Идите куда хотите.

Тут в мире разгорелся небольшой скандальчик повышенной вонючести c утечкой архива переписки из Climate Research Unit Университета Восточной Англии. Мainstream media пока пытается вежливо игнорировать историю и даже, говорят, на slashdot эту тему удалили. А между тем, критики глобального потепления ликуют в блогосфере — такого праздника у них не было давно!
Так вот, если верить сочной выжимке цитат (также здесь) из переписки видных климатологов — потепленцев, победы в научных спорах они достигали следующими методами:
  • вольным обращением с данными
  • сокрытием и уничтожением научных данных
  • уничтожением архивов переписки по сговору, с целью избежать огласки
  • выдуванием круглых чисел для прессы, созданием видимости научного консенсуса
  • недопущением публикации неугодных статей политическими методами
  • отстранением неугодных редакторов, также посредством интриг

Ничего не могу сказать про глобальное потепление в целом, поскольку климатологом не являюсь. Но фактурка позволяет усомниться в научной добросовестности данного конкретного коллектива британских учёных. Как я понимаю, тот график, который в своём фильме так артистично демонстрировал Ал Гор, базируется на данных именно этого коллектива.
Total votes 34: ↑14 and ↓20 -6
Comments 7

Интернет, телеграф… главное — хвост!

Reading time 3 min
Views 785
Читал про историю позднего телеграфа и раннего интернета. В общем, вырисовывается типичная картина эволюции — ничто не появилось одномоментно, всё эволюционировало постепенно, было много тупиковых веток, какие-то ветки скрещивались.
Начнём с того, что поздний телеграф был вообще подозрительно близок к интернету.

Читать дальше →
Total votes 43: ↑37 and ↓6 +31
Comments 26

Простота в дизайне. Эпизод 3. Борьба с фрирайдерством

Reading time 2 min
Views 1.2K
Simplicity does not precede complexity, but follows it. /Alan J. Perlis/

История эта началась в начале 2000-х, когда все поняли на примере Gnutella, что пиринговую сеть убивает фрирайдерство — масса пользователей-паразитов, только скачивающих, но не раздающих. Была написана масса статей про доверие и учёт траффика в пиринговых сетях. Например, «The EigenTrust Algorithm for Reputation Management in P2P Networks», одна из самых популярных и цитируемых статей этого направления, где в соавторах был сам Гарсия-Молина, была представлена на WWW'2003. Как говорится, всё по классу «А». Статья подразумевала, что пиры будут совместно высчитывать PageRank-подобную метрику, передавая друг другу векторы размером N, где N-количество участников. Я знаю несчастных, которые даже сегодня продолжают заниматься такими метриками, с O(N) данных на узел и сложными правилами вывода. А в реальной жизни «победил» BitTorrent, в котором некоторый репутационный элемент конечно был — алгоритм tit-for-tat, «ты мне — я тебе», но всё это было сильно проще репутационно-учётных систем на основе DHT и прочего подобного. Просто каждый пир пытается отвечать взамностью и слать траффик (интересное в мелочах) трём пирам, которые закачали ему больше всего в последние 20 секунд и ещё одному, случайно выбранному. Конечно, следует признать, что простые репутационные системы тоже в ходу. Пóфиксы, как я их называю, или затычки. Sharing ratio enforcement есть на том же torrents.ru, tvtorrents.com и где только его нет. Но с моей точки зрения, это доказывает следующее: траффика будет море, если только есть какое-то, пусть даже самое символическое вознаграждение. Если вознаграждения нет совсем, то траффик будет. Но не море. Как на thepiratebay.com.

В каком же направлении эта область развивается сейчас? По-видимому, в сторону упрощения. Дело в том, что алгоритм tit-for-tat потребовал разделения файла на мелкие кусочки и затем обмена ими по алгоритму rarest-first (о чём также было написано море забавных статей). Плюс ещё «рейтинги». Всё это довольно сложно. А что если убрать коренную причину конфликта — тот мотив, из-за которого пользователи прекращают сидить? Конкретнее, проблема в том, что лазить по интернету при работающем BitTorrent становится сильно неудобно. Это вызвано тем, что все 50 соединений, открываемых BitTorrent'ом, получают свои доли траффика на равных с теми робкими 4 TCP-соединениями, которые открывает браузер. В результате, браузер тормозит. А если отказаться от TCP и использовать для P2P более робкий транспорт, загружающий аплинк, когда тот свободен и быстро уступающий всплескам TCP-траффика? Многие читали новости про такой транспорт (uTP) в µTorrent. Его разработкой в BitTorrent Inc занимается Станислав Шалунов. Если uTP хорошо пойдёт, возможно удастся искупать пользователей в халявном траффике.

От себя добавлю. Тогда станет возможным забить и на tit-for-tat и на rarest-first и наконец-то, скачивать файлы по порядку и смотреть кино «по клику», как в YouTube. Возможно, для этого понадобится ещё пара пóфиксов, но фундаментально уравнение таково: пользователи не могут скачивать кино 24 часа в сутки. А сидить 24 часа в сутки могут. Если только это не создаёт неудобств.
Total votes 6: ↑6 and ↓0 +6
Comments 14

Простота в дизайне. Эпизод 2. DHT и PEX

Reading time 2 min
Views 5.8K
Peer-to-peer сеть BitTorrent очень популярна. И тем обидней, что базируется такая сеть на веб-сайт, трекер, что совершенно не пиртупирно и потенциально опасно. Соответственно, с тех пор, как жив BitTorrent, предпринимались различные попытки децентрализовать и оставшуюся часть — получение списка пиров.

Есть у студентов computer science популярный шаблон мышления: «Децентрализовать? DHT!». DHT, Distributed Hash Tables — умозрительно простая идея: диапазоны ключей хэш-таблицы разбрасываются на пиров, выстраиваются взаимные ссылки и ура. Ура — в жопе дыра. Потому что при столкновении с реальной сетью, в отличие от симулятора или кластера, начинается преогромное количество проблем. Более половины пиров, например, скрыты за NATами и фэйрволами, поэтому на запросы DHT одним пирам они отвечают, а другим — нет, причём труднопредсказуемым образом. Пиры постоянно приходят и уходят, некоторые пиры глючат, есть злоумышленные пиры, кто-то подключён по диал-апу. Чтобы всё это предусмотреть и подкрутить соответствующие затычки, пришлось серьёзно потрудиться. И получившийся код всё равно вызывает нарекания. Коренная проблема в том, что DHT вынужден строить свою отдельную P2P-сеть по своим отдельным правилам. Что плохо влияет на сложность, эффективность, безопаснось.

Другая попытка в том же направлении — PEX (Peer EXchange)*, gossip протокол, в котором уже соединённые пиры просто обмениваются адресами тех, к кому они уже присоединены. У протокола была нелёгкая судьба, потому что изначально Брам Коэн (автор BitTorrent) был уверен, что PEX будет вести к распадению роя. Он сделал по-быстрому какой-то симулятор и увидел полный распад. Некоторое время назад мне показалось, что я понимаю, почему и него рои распадались. Я тоже сделал симулятор, но при разумных параметрах распадения роя добиться не удалось. Видимо, была у него какая-то ошибка.

А PEX работает отлично. Его изначально реализовали в неофициальных клиентах, кажется Azureus и µTorrent (второй ещё не был куплен BitTorrent Inc). Постепенно реализация µTorrent, под названием ut_pex, стала общепринятой. Протокол очень эффективен: я с моего лаптопа своим специальным BitTorrent-пауком за пару-тройку минут переписывал всех пиров в 100-тысячном рое. Логика работы простая, экспоненциальная. Получив от трекера двадцать пиров и успешно присоединившись к двум, мы тут же по ut_pex получаем ещё двести. Ну и так далее. Сам протокол чрезвычайно прост и состоит из одного (!) сообщения. Ещё один популярный шаблон мышления: все думают, что сообщения должно быть два: запрос и ответ. Нет, запроса нет. Просто сообщения так малы, что экономить нет смысла. А с запросами куча мороки. Поэтому если пир видит, что вы понимаете ut_pex, он просто периодически шлёт вам IP-адреса. Реализация ut_pex в libtorrent-rasterbar занимает в 7 раз меньше места, чем довольно компактная реализация DHT там же**.

* А то, что сейчас написано про PEX в Википедии — это original research или попросту лажа.

** Внимательный читатель, возможно, заметит подтасовку — ut_pex не обеспечивает полной децентрализации трекинга, ведь ему нужны стартовые пиры. Поделюсь секретом. DHT этого тоже не обеспечивает. Во-первых, пользователи всё равно идут на сайт, потому что иначе их собрать сложно. Во-вторых, из того что я знаю, DHT на практике бутстрапится с корневых серверов (только это большой секрет! :) )

The cheapest, fastest, and most reliable components of a computer system are those that aren't there. — G. Bell
Total votes 59: ↑51 and ↓8 +43
Comments 30

Простота в дизайне. Эпизод 1. Червь Уорхола

Reading time 2 min
Views 1.8K
as simple as possible, but not simpler

В 2001, после эпидемии CodeRed, Николас Вивер написал крайне интересную статью про быстрораспространяющихся червей «Warhol Worms: The Potential for Very Fast Internet Plagues», у которой была потом ещё пара сиквелов. Краткое содержание статьи: если к механизму распространения червя добавить ряд оптимизаций, то червь может поразить всю уязвимую популяцию за 15 минут и даже быстрей. Грубо говоря, сломать интернет быстрей, чем админ допьёт кофе. Оптимизации были интересные:
  1. hitlist scanning (заранее создать список первых 1000-10.000 жертв, чтобы избежать начальной пологой стадии экспоненциального роста)
  2. permutation scan (обнаружив уже заражённую машину, перескочить в списке адресов, поскольку следующие за заражённым адреса уже наверняка просканированы)
  3. partitioned scan (родительский червь раздаёт потомкам диапазоны адресов, чтобы совершенно исключить повторное сканирование)
  4. subnet scan — очевидное сканирование локальной подсети в первую очередь

Меня тогда очень поразили такие возможности червестроения. Я тогда накатал статью «Modular Worms», что черви будущего будут со сменными насадками, апдейтиться прямо в сети и т.д. Мою статью, как обычно, отклонили, а лет через пять, как обычно, именно такие черви стали использоваться для строительства ботнетов. Сначала был Agobot, а потом дело встало на поток. Даже появился термин «open-source worm».

Реальный же червь Уорхола появился 25 февраля 2003 года. Он назывался SQL Slammer, заражал MS SQL Server. И этот червь не использовал ни единой хитрой оптимизации. Он тупо распространялся по UDP, умещаясь внутри одной-единственной датаграммы. Это было проще, это было дешевле. Ведь все мы знаем, что TCP нужно отправить три пакета только чтобы начать общение. При этом необходимо держать структуры данных в ядре, ждать ответа, ставить таймеры и т.д. и т.п. Напротив, UDP червь мог тупо забивать аплинк датаграммами, сколько уж влезет. А влазит много: 1Mbits это 332 «споры» в секунду, каждая спора 376 байт. Глобальное распространение червя произошло за 10 минут. Может и быстрее, подумал я, ведь моя статистика собиралась с шагом 10 минут. И в одном файле червя не было, а в следующем он уже был. Я проверил таймстампы — да, примерно 10 минут. Зарубежные коллеги тоже сказали 10 минут. Этот рекорд до сих пор не побит.

Таким образом, самый выдающийся результат в области червестроения был достигнут через простоту и дешевизну, а не через хитровывернутые механизмы и оптимизации.
Total votes 98: ↑95 and ↓3 +92
Comments 22

Information

Rating
Does not participate
Location
Москва и Московская обл., Россия
Date of birth
Registered
Activity