Как стать автором
Обновить
113
0
Виктор Грищенко @gritzko

Пользователь

Отправить сообщение

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

Время на прочтение6 мин
Количество просмотров6.7K

Эта статья о следующем эволюционном шаге в развитии систем обработки данных. Тема амбициозная, поэтому расскажу сначала немного о себе. Вот уже больше 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 тоже бывает отключается целиком по совершенно смешным причинам.

Читать далее
Всего голосов 17: ↑15 и ↓2+20
Комментарии8

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

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



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

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

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

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

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

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

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

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

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

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

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

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

Читать дальше →
Всего голосов 11: ↑7 и ↓4+3
Комментарии8

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

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

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

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

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

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

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

Время на прочтение1 мин
Количество просмотров505
Так, мне показалось я спрятал этот пост. Но продолжают прибывать минусовщики. Алё! Идите куда хотите.

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

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

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

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

Читать дальше →
Всего голосов 43: ↑37 и ↓6+31
Комментарии26

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

Время на прочтение2 мин
Количество просмотров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 часа в сутки могут. Если только это не создаёт неудобств.
Всего голосов 6: ↑6 и ↓0+6
Комментарии14

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

Время на прочтение2 мин
Количество просмотров5.9K
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
Всего голосов 59: ↑51 и ↓8+43
Комментарии30

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

Время на прочтение2 мин
Количество просмотров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 минут. Этот рекорд до сих пор не побит.

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

Информация

В рейтинге
Не участвует
Откуда
Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность