Jul 08
Полезная, для построителей распределенных систем CAP Theorem-а. Теорема о целостности, доступности и терпимости к разделению. Позволяет избежать изобретения велосипедов с квадратными колёсами.
CAP Theorem-а утверждает, что система может удовлетворять не более двум требованиям из трех: целостность (consistency), доступность (availability) и терпимость к разделению (partition tolerance).
Где:
целостность (consistency) - гарантирует, что все клиенты всегда прочтут одинаковые данные, в не зависимости к какому узлу в кластере они обратились. Операция записи атомарная для всех узлов.
доступность (availability) - гарантирует, что в в случае любого (разумного) отказа, клиенты все равно смогут получить доступ к копии их данных.
терпимость к разделению (partition tolerance) - гарантирует, что система остается работоспособной даже если авария сети приведет к образованию двух или более под-кластеров.
У этой теореме существует формальное доказательство. Работа 2002 года, ссылается на публикации конца 80-х начала 90-х.
Jul 06
В последнее время, кого не послушай, все свои компьютерные кластеры строят на сommodity hardware. Кто ещё не построил - тот собирается. Вот что Yahoo!, примерно, понимает под этим термином:
Processor - 2 quad-core Intel Xeon 2.5GHz CPUs
Memory - 8 GB ECC RAM
Storage - 4×1 TB SATA disks
Network - Gigabit Ethernet
Это конфигурация Hadoop-узла в 4000-ном кластере на сентябрь 2008 года. Характеристики этого самого “сommodity hardware” конечно меняются со временем, но картина становится более-менее понятной.
Что бы примерно прикинуть сколько это стоит - вот голые факты - мы в Viigo за один такой хост платим $1132 USD в месяц. Fully managed hosting @ RackSpace. Free incoming traffic. Годовой контракт. Конечно, если бы мы эти хосты там арендовали сотнями, то цена пошла бы вниз.
“Commodity” не означает “самое дешевое”, дешевые хосты зачастую собраны из самых дешевых комплектующих, которые выходят из строя чаще чем более дорогие (но всё равно “сommodity” класса) детали. Если кластер состоит из десятков, сотен или тысяч машин, дешевые комплектующие выходят боком. Более частые поломки - выше затраты на обслуживание. С другой стороны, машины класса “база данных”, то же не самый лучший выбор - отношение цена/производительность у них так себе. И даже тот факт, что их надо будет меньше что бы построить кластер с заданной производительностью, компенсируется тем, что выход из строя одного такого хоста окажет больший эффект на всю систему в целом.
Jul 03
В январе 2007, двое убеленных сединами, RDBMS специалиста, David J. DeWitt и Michael Stonebraker опубликовали страшную вещь. А они действительно убеленные сединами, и действительно специалисты, так вот, они покусились на святое, на MapReduce - см. “MapReduce: A major step backwards” В статье они критикуют MapReduce вообще и называют его шагом назад по сравнению с RDBMS. Само собой, в коментах молодые герои их смешали с говном. Впочем были и аргументированные ответы - см. “Databases are hammers; MapReduce is a screwdriver” И тут Девиду и Майклу показалось мало, они публикуют статью-ответ на всю критику сразу см. “MapReduce II”. Все эти статьи очень интересное чтиво, включая коментарии.
Рекомендую.
Jun 27
В новостях пишут о что новость о смерти Майкла Джексона привела к перегрузке известных интернет сайтов. Гугль думал что они под хакерской атакой
News of Jackson’s death spread quickly online, causing many websites to experience technical difficulties under the unanticipated swell of users. Google announced technical difficulties after a sudden swell in searches for “Michael Jackson” led the company to believe it was under attack from hackers, while social networking site Twitter reported a crash after record numbers of users used the site to spread the news of Jackson’s death.[175] Wikipedia experienced technical difficulties, and crashed at 3:15 PDT reportedly due to excessive edits and user overload.[167]
wiki
Я тоже сначала думал что нас в Viigo атакуют. Трафик обычных запросов прыгнул на 15% в течении 10-20 минут. Трафик запросов к рекламным банерам - на 40%. Целый час потратил, что бы понять кто все эти люди и откуда они взялись. Мысль про Джексона приходила в голову, но я ее отмёл как несостоятельную.
Если бы мне кто-то сказал, о таком несколько дней назад, я бы не поверил…
Jun 23
Задали вам “не решаемый” вопрос
«Вы — руководитель проекта, который начинается с завтрашнего дня и заканчивается ровно через год. Все планы утверждены, команда подобрана, роли определены. И вдруг… Становятся известны результаты проведенного маркетингового исследования, которые говорят о том, что конкурирующая компания планирует выпуск такого же продукта с той же функциональностью, но месяцем раньше. Ваш топ-менеджмент настаивает на завершении проекта тремя месяцами раньше.»
Из ограничений: нельзя уменьшать функциональность и качество, увеличивать объём ресурсов и стоимость.
Что должно сразу приходить в голову хорошему руководителю проекта?
Ему должны сразу приходить идеи и идеи во множестве.
Например
В конечном счёте всё равно либо придётся вносить изменения в функциональность (не обязательно в сторону ухудшения, но однозначно в сторону уменьшения трудоёмкости), либо находить «из воздуха» дополнительные ресурсы (не те, за которые платит компания): увеличение рабочего дня на энтузиазме (что плохо), привлечь десяток студентов-программистов на практику, организовать юзабилити-конкурс на лучшее решение сложной задачи и т. п. Так или иначе, за эти ресурсы просто заплатят другие: сотрудники, студенты, участники конкурса.
Или вот
1) вторым быть проще (не помню, где читал)
2) вы не уточняете, увеличивать стоимость чего нельзя. если речь идет только о разработке, то можно увеличить маркетинговый бюджет
3) есть утопические варианты вроде саботажа =)
4) группировка функциональности и запуск «облегченной» версси продукта за 6 месяцев, и выпуск полной за 12.
Отсюда
Jun 15
На днях в Сан-Франциско прошла конференция по key-value хранилищам. Представлены все главные проекты, не хватает только Tokyo Cabinet и memcachedb. Cloudera кажется не причём, но это очень хороший ресурс по Hadoop/Hive/Pig
Intro session - Todd Lipcon, Cloudera
Voldemort - Jay Kreps, Linkedin
Cassandra - Avinash Lakshman, Facebook
Dynomite - Cliff Moon, Powerset
HBase - Ryan Rawson, Stumbleupon
Hypertable - Doug Judd, Zvents
CouchDB - Chris Anderson, couch.io
VPork - Jon Travis, Springsource
MongoDb - Dwight Merriman, 10gen
Infinite Scalability - Jonas S Karlsson, Google
Начинают появляться слайды и видео докладов. Кому интересно - могут пройти в закрома. Хорошее место Silicon Valley, всё самое интересное происходит там. В Торонто какие-то убогие сборища в последнее время происходят только. Вот Microsoft рассказывает про OpenSource. Молодой человек на главной странице, очевидно, олицетворяет target группу.
Jun 14
Werner Vogels, Amazon CTO, пишет о том как работает Amazon’s Dynamo в частности и о сложностях дизайна Key-Value distributed storage вообще.
http://www.allthingsdistributed.com/2007/10/amazons_dynamo.html
Ссылается на работы Lamport-а 1978 года, это тот самый кто придумал такие алгоритмы для distributed computing как Vector clock и Paxos. Довольно странно читать научные работы 30-ти летней давности и отчеты о самых свежих, bleeding-edge, программных разработках, которые эти самые работы используют. То ли програмная индустрия безнадежно отстаёт от учёной мысли, то ли учёная мысль вырвалась вперед.
Вот и Last.fm присматривает key-value storage для себя
http://www.metabrew.com/article/anti-rdbms-a-list-of-distributed-key-value-stores/
пишет Richard Jones, бывший Last.fm CTO. Коментарии к посту тоже интересны.
Mar 27
xhprof - маленький и простой профайлер для PHP.
Лицензия Apache 2.0 Работает только под Unix.
Компилируется и инсталлируется в два счёта. Статистику отдает через web интерфейс (PHP)
Очень удобно, никаких дополнительных программ, только браузер. Перед инсталляцией нужно не забыть поставить PHP development module
apt-get install php5-dev
А потом обернуть нужный код в
xhprof_enable();
<some code is here>
$xhprof_data = xhprof_disable();
и готово.
Я для удобства обернул вообще все вызовы, и отдавал ссылку на страницу с собранной статистикой прямо в HTTP header. Выглядело вот так
// start profiling
xhprof_enable();
<some code is here>
// stop profiler
$xhprof_data = xhprof_disable();
include_once $XHPROF_ROOT . "/root/xhprof/xhprof-0.9.1/xhprof_lib/utils/xhprof_lib.php";
include_once $XHPROF_ROOT . "/root/xhprof/xhprof-0.9.1/xhprof_lib/utils/xhprof_runs.php";
$xhprof_runs = new XHProfRuns_Default();
$run_id = $xhprof_runs->save_run($xhprof_data, "xhprof_foo");
header("x-company-name-profile: http://xhprof.company-name.com/index.php?run=$run_id&source=xhprof_foo");
xhprof.company-name.com прописал в hosts на своём компьютере. А на сервере добавил в конфигурацию Apache виртуальный хост
<VirtualHost *:80>
ServerName xhprof.company-name.com
DocumentRoot /root/xhprof/xhprof-0.9.1/hprof_html
<Directory /root/xhprof/xhprof-0.9.1/hprof_html>
AllowOverride All
</Directory>
</VirtualHost>
Любопытно конечно сравнить с другим профайлером - XDebug
Mar 21
Evan Weaver на последней конференции QCon упомянул в частности, что Twitter написал свою собственную версию Message Queue на Scala - Kestrel. Вот ссылка на слайды. Они в Твитере конечно очень счастливы и всё такое, но вызывает недоумение не столько тайный смысл изобретения велосипеда, см. RabbitMQ или QPid или OpenAMQ или ZeroMQ или ActiveMQ или MSMQ, сколько очень посредственная производительность.
Если я правильно понимаю результаты с официальной страницы Kestrel даёт 227.5 транзакций в секунду на 2.5GHz 2008 model Macbook Pro.
В то время как ActiveMQ даёт 2000 транзакций в секунду на более медленном Intel Celeron 2.4 GHz.
И я даже не буду вдаваться в размеры самих сообщений, потому что сравнение будет ещё больше в пользу ActiveMQ.
И какой смысл в существовании Kestrel?