<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Всякие интересные штучки для WEB-разработчика &#187; Highload/Balancing</title>
	<atom:link href="http://iphp.com.ua/archives/category/highloadbalancing/feed" rel="self" type="application/rss+xml" />
	<link>http://iphp.com.ua</link>
	<description>блог о технологиях web-разработки // all your base are belong to us</description>
	<lastBuildDate>Thu, 17 Nov 2011 08:49:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Архитектура Google</title>
		<link>http://iphp.com.ua/archives/38</link>
		<comments>http://iphp.com.ua/archives/38#comments</comments>
		<pubDate>Tue, 12 Feb 2008 11:37:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Highload/Balancing]]></category>
		<category><![CDATA[google]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Каждый хоть раз слышал о Google благодаря их всеобъемлющему, “умному” и быстрому поисковому сервису, но ни для кого не секрет, что они не ограничиваются только им. Их платформа для построения масштабируемых приложений позволяет выпускать множество удивительно конкурентноспособных интернет-приложений, работающих на уровне всего Интернета вцелом. Они ставят перед собой цель постоянно строить все более и более [...]]]></description>
			<content:encoded><![CDATA[<p>Каждый хоть раз слышал о Google благодаря их всеобъемлющему, “умному” и быстрому поисковому сервису, но ни для кого не секрет, что они не ограничиваются только им. Их платформа для построения масштабируемых приложений позволяет выпускать множество удивительно конкурентноспособных интернет-приложений, работающих на уровне всего Интернета вцелом. Они ставят перед собой цель постоянно строить все более и более производительную и масштабируемую архитектуру для поддержки своих продуктов. Как же им это удается?</p>
<p><span id="more-35"></span></p>
<h3>Источники информации</h3>
<p><em>Эта запись является переводом с английского, автор оригинальной версии &#8212; Todd Hoff. Оригинал написан приблизительно в середине 2007 года, но по-моему до сих пор очень даже актуально.</em></p>
<p>Далее следует перечисление источников информации из оригинала:</p>
<ul>
<li><a rel="nofollow" href="http://iphp.com.ua/goto/http://video.google.com/videoplay?docid=-5699448884004201579"  target="_blank" rel="_nofollow">Video: Построение больших систем в Google</a></li>
<li><a rel="nofollow" href="http://iphp.com.ua/goto/http://labs.google.com/papers/gfs.html"  target="_blank" rel="_nofollow">Google Lab: Файловая система Google (<acronym title="Google File System">GFS</acronym>)</a></li>
<li><a rel="nofollow" href="http://iphp.com.ua/goto/http://labs.google.com/papers/mapreduce.html"  target="_blank" rel="_nofollow">Google Lab: MapReduce: упрощенная обработка данных на больших кластерах</a></li>
<li><a rel="nofollow" href="http://iphp.com.ua/goto/http://labs.google.com/papers/bigtable.html"  target="_blank" rel="_nofollow">Google Lab: BigTable.</a></li>
<li><a rel="nofollow" href="http://iphp.com.ua/goto/http://video.google.com/videoplay?docid=7278544055668715642"  target="_blank" rel="_nofollow">Video: BigTable: система распределенного хранения данных.</a></li>
<li><a rel="nofollow" href="http://iphp.com.ua/goto/http://www.baselinemag.com/article2/0,1540,1985514,00.asp"  target="_blank" rel="_nofollow">Как работает Google</a> от David Carr в Baseline Magazine.</li>
<li><a rel="nofollow" href="http://iphp.com.ua/goto/http://labs.google.com/papers/sawzall.html"  target="_blank" rel="_nofollow">Google Lab: интерпретирование данных. Параллельный анализ с помощью Sawzall.</a></li>
<li><a rel="nofollow" href="http://iphp.com.ua/goto/http://www.25hoursaday.com/weblog/2007/06/25/GoogleScalabilityConferenceTripReportMapReduceBigTableAndOtherDistributedSystemAbstractionsForHandlingLargeDatasets.aspx"  target="_blank" rel="_nofollow">Записи с конференции по масштабированию от Dare Obasonjo.<span id="more-38"></span></a></li>
</ul>
<h3>Платформа</h3>
<ul>
<li>Linux</li>
<li>Большое разнообразие языков программирования: Python, Java, C++</li>
</ul>
<h3>Что внутри?</h3>
<h4>Статистика</h4>
<ul>
<li>На 2006 год система включала в себя 450000 недорогих серверов</li>
<li>За 2005 год было проиндексировано 8 миллиардов страниц. На данный момент… кто знает?</li>
<li>На момент написания оригинала Google включает в себя более 200 <acronym title="Google File System">GFS</acronym> кластеров. Один кластер может состоять из 1000 или даже 5000 компьютеров</li>
<li>Десятки и сотни тысяч компьютеров получают данные из <acronym title="Google File System">GFS</acronym> кластеров, которые насчитывают более 5 петабайт дискового пространства. Суммарные пропускная способность операций записи и чтения между дата центрами может достигать 40 гигабайт в секунду</li>
<li>BigTable позволяет хранить миллиарды ссылок (<acronym title="Uniform Resource Locator">URL</acronym>), сотни терабайт снимков со спутников, а также настройки миллионов пользователей</li>
</ul>
<p><em>// Цифры не первой свежести конечно, но тоже неплохо.</em></p>
<h4>Стек</h4>
<p>Google визуализирует свою инфраструктуру в виде трехслойного стека:</p>
<ul>
<li><em>Продукты:</em> поиск, реклама, электронная почта, карты, видео, чат, блоги</li>
<li><em>Распределенная инфраструктура системы:</em> <acronym title="Google File System">GFS</acronym>, MapReduce и BigTable</li>
<li><em>Вычислительные платформы:</em> множество компьютеров во множестве датацентров</li>
<li>Легкое развертывание для компании при низком уровне издержек</li>
<li>Больше денег вкладывается в оборудование для исключения возможности потерь данных</li>
</ul>
<h4>Надежное хранение данных с помощью <acronym title="Google File System">GFS</acronym></h4>
<ul>
<li>Надежное масштабируемое хранение данных крайне необходимо для любого приложения. <strong><acronym title="Google File System">GFS</acronym></strong> является основой их платформы хранения информации</li>
<li><strong><acronym title="Google File System">GFS</acronym></strong> &#8212; большая распределенная файловая система, способная хранить и обрабатывать огромные объемы информации</li>
<li><em>Зачем строить что-либо самим вместо того, чтобы просто взять это с полки?</em> Они контролируют абсолютно всю систему и именно эта платформа отличает их от всех остальных. Она предоставляет:
<dl>
<dd>– высокую надежность дата центров</dd>
<dt>
</dt>
<dd>– масштабируемость до тысяч сетевых узлов</dd>
<dt>
</dt>
<dd>– высокую пропускную способность операций чтения и записи</dd>
<dt>
</dt>
<dd>– поддержку больших блоков данных, размер которых может измеряться в гигабайтах</dd>
<dt>
</dt>
<dd>– эффективное распределение операций между датацентрами для избежания возникновения “узких мест” в системе</dd>
</dl>
</li>
<li>В системе существуют мастер-сервера и сервера, собственно хранящие информацию:
<dl>
<dt>
</dt>
<dd>– Мастер-сервера хранят метаданные для всех файлов. Сами данные хранятся блоками по 64 мегабайта на остальных серверах. Клиенты могут выполнять операции с метаданными на мастер-серверах, чтобы узнать на каком именно сервере расположены необходимые данные.</dd>
<dt>
</dt>
<dd>– Для обеспечения надежности один и тот же блок данных хранится в трех экземплярах на разных серверах, что обеспечивает избыточность на случай сбоев в работе какого-либо сервера.</dd>
<dt>
</dt>
<dd>– Новые приложения могут пользоваться как существующими кластерами, так и новыми, созданными специально для них.</dd>
<dt>
</dt>
<dd>– Ключ успеха заключается в том, чтобы быть уверенными в том, что у людей есть достаточно вариантов выбора для реализации их приложений. <strong><acronym title="Google File System">GFS</acronym></strong> может быть настроена для удовлетворения нужд любого конкретного приложения.</dd>
</dl>
</li>
</ul>
<h4>Работаем с данными при помощи MapReduce</h4>
<ul>
<li>Теперь, когда у нас есть отличная система хранения, что же делать с такими объемами данных? Допустим, у нас есть много терабайт данных, равномерно распределенных между 1000 компьютерами. Коммерческие базы данных не могут эффективно масштабироваться до такого уровня, именно в такой ситуации в дело вступает технология <strong>MapReduce</strong>.</li>
<li><strong>MapReduce</strong> является программной моделью и соответствующей реализацией обработки и генерации больших наборов данных. Пользователи могут задавать функцию, обрабатывающую пары ключ/значение для генерации промежуточных аналогичных пар, и сокращающую функцию, которая объединяет все промежуточные значения, соответствующие одному и тому же ключу. Многие реальные задачи могут быть выражены с помощью этой модели. Программы, написанные в таком функциональном стиле автоматически распараллеливаются и адаптируются для выполнения на обширных кластерах. Система берет на себя детали разбиения входных данных на части, составления расписания выполнения программ на различных компьютерах, управления ошибками, и организации необходимой коммуникации между компьютерами. Это позволяет программистам, не обладающим опытом работы с параллельными и распределенными системами, легко использовать все ресурсы больших распределенных систем.</li>
<li>Зачем использовать <strong>MapReduce</strong>?
<dl>
<dd>– Отличный способ распределения задач между множеством компьютеров</dd>
<dd>– Обработка сбоев в работе</dd>
<dd>– Работа с различными типами смежных приложений, таких как поиск или реклама. Возможно предварительное вычисление и обработка данных, подсчет количества слов, сортировка терабайт данных и так далее</dd>
<dd>– Вычисления автоматически приближаются к источнику ввода-вывода</dd>
</dl>
</li>
<li><strong>MapReduce</strong> использует три типа серверов:
<dl>
<dd>– <em>Master:</em> назначают задания остальным типам серверов, а также следят за процессом их выполнения</dd>
<dd>– <em>Map:</em> принимают входные данные от пользователей и обрабатывают их, результаты записываются в промежуточные файлы</dd>
<dd>– <em>Reduce:</em> принимают промежуточные файлы от Map-серверов и сокращают их указанным выше способом</dd>
</dl>
</li>
<li>Например, мы хотим посчитать количество слов на всех страницах. Для этого нам необходимо передать все страницы, хранимые в <strong><acronym title="Google File System">GFS</acronym></strong>, на обработку в <strong>MapReduce</strong>. Этот процесс будет происходить на тысячах машин одновременно с полной координацией действий, в соответствии с автоматически составленным расписанием выполняемых работ, обработкой потенциальных ошибок, и передачей данных выполняемыми автоматически.
<dl>
<dd>– Последовательность выполняемых действий выглядела бы следующим образом: <em><acronym title="Google File System">GFS</acronym> → Map → перемешивание → Reduce → запись результатов обратно в <acronym title="Google File System">GFS</acronym></em></dd>
<dd>– Технология <strong>MapReduce</strong> состоит из двух компонентов: соответственно <em>map</em> и <em>reduce</em>. Map отображает один набор данных в другой, создавая тем самым пары ключ/значение, которпыми в нашем случае являются слова и их количества.</dd>
<dd>– В процессе перемешивания происходит аггрегирование типов ключей.</dd>
<dd>– Reduction в нашем случае просто суммирует все результаты и возвращает финальный результат.</dd>
</dl>
</li>
<li>В процессе индексирования Google подвергает поток данных обработке около 20 разных механизмов сокращения. Сначала идет работа над всеми записями и аггрегированными ключами, после чего результат передается следующему механизму и второй механизм уже работает с результатами работы первого, и так далее.</li>
<li>Программы могут быть очень маленькими, всего лишь от 20 до 50 строк кода.</li>
<li>Единственной проблемой могут быть “отстающие компьютеры”. Если один компьютер работает существенно медленнее, чем все остальные, это будет задерживать работу всей системы в целом.</li>
<li>Транспортировка данных между серверами происходит в сжатом виде. Идея заключается в том, что ограничивающим фактором является пропускная способность канала и ввода-вывода, что делает резонным потратить часть процессорного времени на компрессию и декомпрессию данных.</li>
</ul>
<h4>Хранение структурированных данных в BigTable</h4>
<ul>
<li><strong>BigTable</strong> является крупномасштабной, устойчивой к потенциальным ошибкам, самоуправляемой системой, которая может включать в себя терабайты памяти и петабайты данных, а также управлять миллионами операций чтения и записи в секунду.</li>
<li><strong>BigTable</strong> представляет собой распределенный механизм хэширования, построенный поверх <strong><acronym title="Google File System">GFS</acronym></strong>, а вовсе не реляционную базу данных и, как следствие, не поддерживает <acronym title="Structured Query Language">SQL</acronym>-запросы и операции типа Join.</li>
<li>Она предоставляет механизм просмотра данных для получения доступа к структурированным данным по имеющемуся ключу. <strong><acronym title="Google File System">GFS</acronym></strong> хранит данные не поддающиеся пониманию, хотя многим приложениям необходимы структурированные данные.</li>
<li>Коммерческие базы данных попросту не могут масштабироваться до такого уровня и, соответственно, не могут работать с тысячами машин одновременно.</li>
<li>С помощью контролирования своих низкоуровневых систем хранения данных, Google получает больше возможностей по управлению и модификации их системой. Например, если им понадобится функция, упрощающая координацию работы между датацентрами, они просто могут написать ее и внедрить в систему.</li>
<li>Подключение и отключение компьютеров к функционирующей системе никак не мешает ей просто работать.</li>
<li>Каждый блок данных хранится в ячейке, доступ к которой может быть предоставлен как по ключу строки или столбца, так и по временной метке.</li>
<li>Каждая строка может храниться в одной или нескольких таблицах. Таблицы реализуются в виде последовательности блоков по 64 килобайта, организованных в формате данных под названием <strong>SSTable</strong>.</li>
<li>В <strong>BigTable</strong> тоже используется три типа серверов:
<dl>
<dd>– <em>Master:</em> распределяют таблицы по Tablet-серверам, а также следят за расположением таблиц и перераспределяют задания в случае необходимости.</dd>
<dd>– <em>Tablet:</em> обрабатывают запросы чтения/записи для таблиц. Они раделяют таблицы, когда те превышают лимит размера (обычно 100-200 мегабайт). Когда такой сервер прекращает функционирование по каким-либо причинам, 100 других серверов берут на себя по одной таблице и система продолжает работать как-будто ничего не произошло.</dd>
<dd>– <em>Lock:</em> формируют распределенный сервис ограничения одновременного доступа. Операции открытия таблицы для записи, анализа Master-сервером или проверки доступа должны быть взаимноисключающими.</dd>
</dl>
</li>
<li>Локальная группировка может быть использована для физического хранения связанных данных вместе, чтобы обеспечить лучшую локализацию ссылок на данные.</li>
<li>Таблицы по возможности кэшируются в оперативной памяти серверов.</li>
</ul>
<h3>Оборудование</h3>
<ul>
<li>Как эффективно организовать большую группу компьютеров с точки зрения издержек и производительности?</li>
<li>Используется самое обыкновенное ультра-дешевое оборудование и поверх него строится программное обеспечение, способное спокойно пережить смерть любой части оборудования.</li>
<li>Тысячекратный рост вычислительной мощности может быть достигнут с издержками в 33 раза меньшими, если воспользоваться толерантной к сбоям инфраструктурой, по сравнению с инфраструктурой, построенной на высоконадежных компонентах. Надежность строится поверх ненадежных компонентов.</li>
<li>Linux, домашнее размещение серверов, материнске платы предназначенные для персональных компьютеров, дешевые средства хранения данных.</li>
<li>Цена за каждый ватт энергии в расчете на производительность не становится меньше, что ведет к большим проблемам связанным с энергообеспечением и охлаждением.</li>
<li>Использование совместного размещения в своих и арендуемых датацентрах.</li>
</ul>
<h3>Разное</h3>
<ul>
<li>Быстрый выпуск изменений более предпочтителен, чем ожидание.</li>
<li>Библиотеки &#8212; превалирующий метод построения программ.</li>
<li>Некоторые приложения предоставляются в виде сервисов.</li>
<li>Инфраструктура управляет определением версий приложений таким образом, что они могут выпускать новые продукты, не боясь сломать работу какого-либо компонента системы.</li>
</ul>
<h3>Пути развития</h3>
<ul>
<li>Поддержка географически распределенных кластеров.</li>
<li>Создание единого глобального пространства имен для всех данных. На данный момент данные распределены по кластерам.</li>
<li>Более автоматизированные передача и обработка данных</li>
<li>Решение вопросов, связанных с поддержанием работоспособности сервисов даже в тех случаях, когда целый кластер отключается от системы в связи с техническими работами или каким-либо сбоем в работе.</li>
</ul>
<h3>Подводим итоги</h3>
<ul>
<li><strong>Инфраструктура может быть конкурентным преимуществом.</strong> Это определенно так для Google. Они могут выпускать новые интернет сервисы быстрее, с меньшими издержками, на таком уровне, что мало кто сможет составить им конкуренцию. Подход многих компаний сильно отличается от подхода Google, эти компании рассматривают инфраструктуру как статью расходов, они обычно используют совсем другие технологии и совсем не задумываются о планировании и организации своей системы. Google позиционирует себя как компанию по построению систем, что является очень современным подходом к разработке программного обеспечения.</li>
<li><strong>Охватывание нескольких дата центров до сих пор является нерешенной проблемой.</strong> Большинство сайтов базируется в одном или двух дата центрах. Полное распределение сайта между несколькими датацентрами является хитрой задачей.</li>
<li>Взгляните на <em>Hadoop</em>, если у Вас нет времени на собственноручное построение всей архитектуры с нуля. <em>Hadoop</em> явялется <acronym title="Бесплатное, свободно распространяемое программное обеспечение с открытым кодом">opensource</acronym> воплощением в жизнь многих идей здесь представленных.</li>
<li>Часто недооцениваемым преимуществом платформенного подхода является тот факт, что даже неопытные разработчики могут быстро и качественно реализовывать трудоемкие приложения на базе платформы. Но если бы каждый проект требовал одинаково распределенной архитектуры, то это создало бы много проблем, так как люди, которые понимают как это делается, являются достаточно большой редкостью.</li>
<li><strong>Совместная деятельность не всегда является таким уж плохим занятием.</strong> Если все части системы работают взаимосвязанно, то улучшение в одной из них сразу и абсолютно прозрачно отразится положительным образом и на остальных компонентах системы. В противном случае такой эффект наблюдаться не будет.</li>
<li>Построение самоуправляемых систем позволяет более легко перераспределять ресурсы между серверами, расширять систему, отключать некоторые компьютеры и элегантно проводить обновления.</li>
<li>Производить длительные операции стоит параллельно.</li>
<li>Всему, что было сделано Google, предшествовало искусство, а не только крупномасштабное развертывание системы.</li>
<li>Учитывайте возможность <strong>компрессии данных</strong>, она является очень неплохим решением, если остается лишнее процессорное время, но присутствует нехватка пропускной способности.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://iphp.com.ua/archives/38/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Архитектура Flickr</title>
		<link>http://iphp.com.ua/archives/37</link>
		<comments>http://iphp.com.ua/archives/37#comments</comments>
		<pubDate>Mon, 11 Feb 2008 12:49:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Highload/Balancing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Flickr является мировым лидером среди сайтов размещения фотографий. Перед Flickr стоит впечатляющая задача, они должны контролировать обширное море ежесекундно обновляющегося контента, непрерывно пополняющиеся легионы пользователей, постоянный поток новых предоставляемых пользователям возможностей, а делается все это при постоянной поддержке отличной производительности. Как же они это делают? Источники информации Этот пост является переводом статьи от Todd’а Hoff’а.  [...]]]></description>
			<content:encoded><![CDATA[<p class="entry"><a rel="nofollow" href="http://iphp.com.ua/goto/http://www.flickr.com/"  rel="nofollow" target="_blank">Flickr</a> является мировым лидером среди сайтов размещения фотографий. Перед Flickr стоит впечатляющая задача, они должны контролировать обширное море ежесекундно обновляющегося контента, непрерывно пополняющиеся легионы пользователей, постоянный поток новых предоставляемых пользователям возможностей, а делается все это при постоянной поддержке отличной производительности. Как же они это делают?<br />
<span id="more-37"></span></p>
<h3>Источники информации</h3>
<p><em>Этот пост является переводом <a rel="nofollow" href="http://iphp.com.ua/goto/http://highscalability.com/flickr-architecture"  target="_blank" rel="nofollow">статьи</a> от <a rel="nofollow" href="http://iphp.com.ua/goto/http://highscalability.com/user/todd-hoff"  target="_blank" rel="nofollow">Todd’а Hoff’а</a>.  Далее привожу источники информации из оригинальной статьи:</em></p>
<ul>
<li><a rel="nofollow" href="http://iphp.com.ua/goto/http://www.niallkennedy.com/blog/uploads/flickr_php.pdf"  rel="nofollow" target="_blank">Flickr и <acronym title="Hypertext PreProcessing">PHP</acronym></a> (ранний документ)</li>
<li>Планирование нагрузок на LAMP</li>
<li><a rel="nofollow" href="http://iphp.com.ua/goto/http://www.bytebot.net/blog/archives/2007/04/25/federation-at-flickr-a-tour-of-the-flickr-architecture#comment-127411"  rel="nofollow" target="_blank">Федерация Flickr: Тур по архитектуре Flickr</a></li>
<li><a rel="nofollow" href="http://iphp.com.ua/goto/http://highscalability.com/book-building-scalable-web-sites"  rel="nofollow" target="_blank">Построение масштабируемых веб-сайтов</a> от Call Handerson’а из Flickr</li>
<li>История войн баз данных #3: Tim O’Reilly о Flickr</li>
<li><a rel="nofollow" href="http://iphp.com.ua/goto/http://www.iamcal.com/talks/"  rel="nofollow" target="_blank">Cal Henderson’s Talks</a> &#8212; много полезных презентаций</li>
</ul>
<h3>Платформа</h3>
<ul>
<li><acronym title="Hypertext PreProcessing">PHP</acronym></li>
<li>MySQL</li>
<li>Сегментирование <em>(прим.: разбиение системы на части, обслуживающие каждая свою группу пользователей; называть можно было по-разному, но давайте остановимся на этом варианте перевода слова “Shards”)</em></li>
<li>Memcached для кэширования</li>
<li>Squid в качестве обратной-прокси для <acronym title="HyperText Markup Language">HTML</acronym> и изображений</li>
<li>Linux (RedHat)</li>
<li>Smarty в роли шаблонизатора</li>
<li>Perl</li>
<li>PEAR для парсинга e-mail и <acronym title="eXtensible Markup Language">XML</acronym></li>
<li>ImageMagick для обработки изображений</li>
<li>Java для узлового сервиса</li>
<li>Apache</li>
<li>SystemImager для развертывания систем</li>
<li>Ganglia для мониторинга распределенных систем</li>
<li>Subcon хранит важные системные конфигурационные файлы в SVN-репозитории для легкого развертывания на машины в кластере.</li>
<li>Cvsup для распространения и обновления коллекций файлов по сети<span id="more-37"></span></li>
</ul>
<h3>Статистика</h3>
<ul>
<li>Более четырех миллиардов запросов в день</li>
<li>Примерно 35 миллионов фотографий в кэше Squid</li>
<li>Около двух миллионов фотографий в оперативной памяти Squid</li>
<li>Всего приблизительно 470 миллионов изображений, каждое представлено в 4 или 5 размерах</li>
<li>38 тысяч запросов к memcached (12 миллионов объектов)</li>
<li>2 петабайта дискового пространства</li>
<li>Более 400000 фотографий добавляются ежедневно</li>
</ul>
<h3>Архитектура</h3>
<p>Симпатичное изображение архитектуры Flickr можно увидеть на <a rel="nofollow" href="http://iphp.com.ua/goto/http://www.slideshare.net/techdude/scalable-web-architectures-common-patterns-and-approaches/138"  target="_blank" rel="nofollow">этом слайде</a>. Краткое ее описание выглядит следующим образом:<br />
–– Два ServerIron<br />
–––– Squid кэши<br />
–––––– Системы хранения NetApp<br />
–––– Серверы <acronym title="Hypertext PreProcessing">PHP</acronym>-приложений<br />
–––––– Менеджер хранения данных<br />
–––––– Master-master сегменты<br />
–––––– Центральная база данных, структурированная по принципу Dual Tree<br />
–––––– Memcached кластер<br />
–––––– Поисковая система</p>
<dl>
<dd>– Структура Dual Tree является индивидуальным набором модификаций для MySQL, позволяющим масштабировать систему путем добавления новых мастер-серверов без использования кольцевой архитектуры. Эта система позволяет экономить на масштабировании, так как варианты мастер-мастер требовали бы удвоенных вложений в оборудование.</dd>
</dl>
<dl>
<dd>– Центральная база данных включает в себя таблицу пользователей, состоящую из основных ключей пользователей (несколько уникальных идентификационных номеров) и указатель на сегмент, на котором может быть найдена остальная информация о конкретном пользователе.</dd>
</dl>
<ul>
<li>Использование выделенных серверов для статического контента.</li>
<li>Все, за исключением фотографий, хранится в базе данных</li>
<li>Отсутствие состояний заключается в том, что они передают пользователей от сервера к серверу, что облегчает для них создание своего <acronym title="Application Programming Interface">API</acronym></li>
<li>В основе масштабируемости лежит репликация, но этот факт помогает лишь при обработке операций чтения</li>
<li>Для поиска по определенной части базы данных создается отдельная копия этого фрагмента</li>
<li>Использования горизонтального масштабирования для того чтобы можно было проще добавлять новые машины в систему</li>
<li>Обработка изображений, полученных от пользователей по электронной почте, происходит с помощью <acronym title="Hypertext PreProcessing">PHP</acronym></li>
<li>Раньше система страдала от задержек связанных с организацией по принципу мастер-слуга. При слишком большой нагрузке они имели одну точку, которая теоретически могла дать сбой.</li>
<li>Им было необходимо иметь возможность проводить технические работы во время непрерывной работы сайта, не прекращая его функционирование.</li>
<li>Были проведены отличные работы по планированию распределения дискового пространства, более подробную информацию можно найти по ссылкам в разделе “Источники информации”.</li>
<li>Для обеспечения возможности масштабирования в будущем, они пошли по федеративному пути развития:
<dl>
<dd>– <em>Сегменты системы:</em> Мои данные хранятся на моем сегменте, но запись о Вашем комментарии хранится на Вашем сегменте.</dd>
<dd>– <em>Глобальное кольцо:</em> Принцип работы схож с <acronym title="Domain Name System">DNS</acronym>, Вам необходимо знать куда Вы хотите пойти и кто контролирует то место, куда Вы собираетесь пойти.</dd>
<dd>– Логика на <acronym title="Hypertext PreProcessing">PHP</acronym> устанавливает соединение с сегментом и поддерживает целостность данных (10 строк кода с комментариями!)</dd>
</dl>
</li>
<li><strong>Сегменты:</strong>
<dl>
<dd>– Срез основной базы данных</dd>
<dd>– Активная репликация по принципу мастер-мастер: имеет несколько недостатков в MySQL 4.1. Автоматическое инкрементирование идентификационных номеров используется для поддержания системы в режиме одновременной активности обоих серверов в паре</dd>
<dd>– Привязывание новых учетных записей к сегментам системы происходит случайным образом</dd>
<dd>– Миграция пользователей проводится время от времени для того, чтобы избавиться от проблем, связанных с излишне активными пользователями. Необходима сбалансированность в этом процессе, особенно в случаях с большим количеством фотографий… 192 тысячи фотографий, 700 тысяч тэгов, может занять несколько минут. Миграция выполняется вручную.</dd>
</dl>
</li>
<li>Нажатие на <strong>Favorite</strong>:
<dl>
<dd>– Получается информация об учетной записи владельца из кэша для того, чтобы узнать к какому сегменту он привязан (допустим на shard-5)</dd>
<dd>– Получается информация о моей учетной записи из кэша, более конкретно &#8212;  мой сегмент (например shard-13) </dd>
<dd>– Начинается “распределенная трансакция” для определения ответов на вопросы: Кто добавил эту фотографию в избранное? Как изменился список избранных фотографий?</dd>
</dl>
</li>
<li>Подобные вопросы могут задаваться любому сегменту, информация на них абсолютно избыточна.</li>
<li>Для избавления от задержек, связанных с репликацией…
<dl>
<dd>– при каждой загрузке страницы, пользователю предоставляется список серверов</dd>
<dd>– если сервер не в состоянии ответить на запрос, запрос переходит к следующему серверу в списке; если список кончился &#8212; выводится сообщение об ошибке. При этом не используются постоянные соединения, каждый раз создаются и разрываются новые соединения.</dd>
</dl>
</li>
<li>Запросы на чтение и запись от каждого пользователя ограничиваются рамками одного сегмента. Задержки репликации исчезают из поля зрения пользователей.</li>
<li>Каждый сервер в рамках одного сегмента в обычном состоянии нагружен ровно на половину. Выключите половину серверов в каждом сегменте и система продолжит функционировать без изменений. Это значит, что один сервер внутри сегмента может взять на себя всю нагрузку второго, в то время как второй сервер может по каким либо причинам быть отключен от системы, например для проведения технических работ. Обновление оборудования производится очень просто: отключается половина сегмента, она же обновляется, подключается обратно, процесс повторяется для оставшейся половины.</li>
<li>Периоды пиковой нагрузки также нарушают правило 50% нагрузки. В такие моменты система получает 6-7 тысяч запросов в секунду, в то время как на данный момент система может работать на пятидесятипроцентном уровне нагрузки только при четырех тысячах запросов в секунду.</li>
<li>В среднем при загрузке одной страницы выполняется 27-35 <acronym title="Structured Query Language">SQL</acronym>-запросов. Списки избранных фотографий обрабатываются в реальном времени, ровно как и доступ через <acronym title="Application Programming Interface">API</acronym> к базе данных. Все требования к нагрузке в реальном времени выполняются без каких-либо недостатков.</li>
<li>Более 36 тысяч запросов в секунду может выполняться не выходя за рамки возможностей системы, даже при резком росте трафика.</li>
<li>Каждый сегмент содержит данные о более чем 400 тысячах пользователей.
<dl>
<dd>– Многие данные хранятся в двух местах одновременно. Например, комментарий является частью между комментатором и автором комментируемого контента. Где его хранить? Как насчет обоих мест? Трансакции используются для предотвращения рассинхронизации данных: открывается первая трансакция, выполняется запись, открывается вторая трансакция, выполняется запись, подтверждается первая трансакция если все нормально, после чего вторая подтверждается только в случае если первая прошла успешно.</dd>
</dl>
</li>
<li><strong>Поиск:</strong>
<dl>
<dd>- Используется два варианта поиска: поиск в рамках сегмента, поддерживающий до 35 тысяч запросов в секунду, а также проприетарный веб-поиск от Yahoo!</dd>
<dd>- В 90% случаев используется система от Yahoo!, за исключением поиска по тэгу фотографий одного пользователя и массовых изменений тэгов.</dd>
<dd>- Эту систему стоит рассматривать как аналог Lucene.</dd>
</dl>
</li>
<li><strong>Оборудование:</strong>
<dl>
<dd>- EMT64 под управлением RHEL 4 с 16 <acronym title="Kilobyte">GB</acronym> оперативной памяти.</dd>
<dd>- 6 жестких дисков с 15000rpm, объединены в <acronym title="Redundant Array of Independent Disks">RAID</acronym>-10.</dd>
<dd>- Размер для пользовательских метаданных достигает 12 терабайт (это не включает фотографии, для них цифры существенно больше).</dd>
<dd>- Используются 2U корпуса.</dd>
</dl>
</li>
<li><strong>Процедура резервного копирования данных:</strong>
<dl>
<dd>- ibbackup выполняется регулярно посредством cron daemon’а, на каждом сегменте настроен на разное время.</dd>
<dd>- Каждую ночь делается снимок со всего кластера баз данных.</dd>
<dd>- Запись или удаление нескольких больших файлов с резервными копиями одновременно на реплицирующую систему хранения может сильно сократить производительность системы вцелом на последующие несколько часов из-за процесса репликации. Выполнение этого на активно работающей системе хранения фотографий было бы не самой лучшей идеей.</dd>
<dd>- Содержание нескольких резервных копий всех Ваших данных требует существенных материальных затрат, но оно того стоит. Особенно это актуально для тех ситуаций, когда Вы понимаете, что что-то пошло не так только спустя несколько дней после того как это случилось, в таких случаях неплохо иметь, например, резервные копии 1, 3, 10 и 30-дневной давности.</dd>
</dl>
</li>
<li>Фотографии хранятся в системе хранения данных. После загрузки изображения система выдает различные его размеры, на чем ее работа заканчивается. Метаданные и ссылки на файловые системы, где расположены фотографии, хранятся в базе данных.</li>
<li>Аггрегация данных проходит очень быстро, так как она ограничена пределами сегмента.</li>
<li>max_connections = 400 соединений на каждый сегмент, неплохой запас. Значение для кэша потоков установлено равным 45, так как не бывает ситуаций когда более 45 пользователей одновременно выполняют какие-либо действия с одним конкретным сегментом.</li>
<li><strong>Тэги:</strong>
<dl>
<dd>- Тэги плохо вписываются в традиционную нормализованную схему реляционной базы данных. Денормализация или активное кэширование &#8212; единственные способы сгенерировать облако меток для сотен миллионов тэгов в течении миллисекунд.</dd>
<dd>Некоторые данные обрабатываются отдельными вычислительными кластерами, которые сохраняют результаты своей работы в MySQL, так как иначе вычисление сложных отношений заняло бы все процессорное время основных серверов баз данных.</dd>
</dl>
</li>
<li>Направления для развития: ускорение работы с помощью создания организационного плана для непрерывной работы всей системы на уровне нескольких датацентров, таким образом чтобы все датацентры имели возможность получать запросы на общий уровень данных (как сами БД, так и memcache и прочее) все вместе одновременно. Если все части системы постоянно активны &#8212; время простоя оборудования будет сведено к минимуму.</li>
</ul>
<h3>Подводим итоги</h3>
<ul>
<li>Старайтесь думть о своем приложении как о чем-то большем, чем просто веб-приложении, тогда у Вас возможно появятся поддержка различных <acronym title="Application Programming Interface">API</acronym>, <acronym title="Really Simple Syndication">RSS</acronym> и Atom ленты и многие другие возможности.</li>
<li>Отсутствие состояний системы позволяет более выполнять модернизации не моргнув и глазом.</li>
<li>Реструктуризация базы данных &#8212; не самое лучшее занятие.</li>
<li>Планирование нагрузок должно проводиться уже на ранних этапах развития проекта</li>
<li>Начинайте медленно. Не покупайте сразу много оборудования просто из-за того, что Вы рады/боитесь, что ваш сайт взорвется.</li>
<li>Измеряйте реально, планирование нагрузок должно базироваться на реальных вещах, а не абстрактных.</li>
<li>Внедряйте ведение логов и индивидуальные измерения для оценки реальных показателей на основе серверной статистики, статистика использования не менее важна чем серверная.</li>
<li>Кэширование и оперативная память может стать ответом на все вопросы.</li>
<li>Создавайте четкие уровни абстракции между работой базы данных, бизнес-логикой, логикой страниц, разметкой страниц и презентационным уровнем. Это позволяет ускорить циклы итеративной разработки.</li>
<li>Разделение приложения на уровни позволяет каждому заниматься своим делом: разработчики могут строить логику страниц, в то время как дизайнеры работают с удобством работы для пользователей.</li>
<li>Делайте релизы как можно чаще, пускай даже это будет происходить каждые полчаса.</li>
<li>Забудьте о всех небольших эффективных вещах, предварительная оптимизация является корнем всего зла в примерно 97% всех случаев.</li>
<li>Тестируйте в работе. Постройте архитектурные механизмы (флаги конфигурации, балансировку нагрузки, и так далее), которые позволят Вам разворачивать новое оборудование в (и из) работу.</li>
<li>Забудьте об искусственных тестах, они годятся только для получения общего представления о нагрузках, но не для планирования. Искуственные тесты дают искусственные результаты, для настоящих тестов все же стоит пользоваться реальным временем выполнения задач.</li>
<li>Найдите максимальное значения для всех показателей:
<dl>
<dd>- Какой максимум чего-то, что может выполнять каждый сервер?</dd>
<dd>- Как близко параметр находится к максимуму и каковы тенденции?</dd>
<dd>- MySQL (дисковый ввод/вывод?)</dd>
<dd>- Squid (дисковый ввод/вывод? или процессорное время?)</dd>
<dd>- <a rel="nofollow" href="http://iphp.com.ua/goto/http://www.insight-it.ru/tag/memcached?PHPSESSID=903615a1adb41949c5c7dabc5aff5bfd"  target="_blank">Memcached</a> (процессорное время? или пропускная способность сети?)</dd>
</dl>
</li>
<li>Старайтесь учесть особенности использования Вашего приложения.
<dl>
<dd>- Возможен ли резкий рост нагрузки, связанный с каким-либо событием? Например: какое-либо бедствие, или может быть новость?</dd>
<dd>- Flickr получает на 20-40% больше новых фотографий в первый рабочий день нового года, чем в любой пик в предыдущем году.</dd>
<dd>- По воскресеньям нагрузка в среднем на 40-50% выше, чем в любой другой день недели.</dd>
</dl>
</li>
<li>Учтите возможность экспонентациального роста. Больше пользователей означает больше контента, больше контента означает больше соединений, больше соединений означает более активное использование.</li>
<li>Планируйте возможные варианты управления работой системы в периоды пиковых нагрузок.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://iphp.com.ua/archives/37/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Proxy для MySQL (и не только)</title>
		<link>http://iphp.com.ua/archives/25</link>
		<comments>http://iphp.com.ua/archives/25#comments</comments>
		<pubDate>Mon, 05 Nov 2007 18:51:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Highload/Balancing]]></category>
		<category><![CDATA[Mysql]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[SQL Relay. SQL Relay is a persistent database connection pooling, proxying and load balancing system for Unix and Linux. MySQL Proxy.  The MySQL Proxy is an application that communicates over the network using the MySQL Network Protocol and provides communication between one or more MySQL servers and one or more MySQL clients. In the most [...]]]></description>
			<content:encoded><![CDATA[<ol>
<li><a rel="nofollow" href="http://iphp.com.ua/goto/http://sqlrelay.sourceforge.net/" target="_blank" >SQL Relay</a>. SQL Relay is a persistent database connection pooling, proxying and load balancing system for Unix and Linux.</li>
<li><a rel="nofollow" href="http://iphp.com.ua/goto/http://dev.mysql.com/doc/refman/5.1/en/mysql-proxy.html" target="_blank" >MySQL Proxy</a>.  The MySQL Proxy is an application that communicates over the network using the MySQL Network Protocol and provides communication between one or more MySQL servers and one or more MySQL clients. In the most basic configuration, MySQL Proxy simply passes on queries from the client to the MySQL Server and returns the responses from the MySQL Server to the client.</li>
<li><a rel="nofollow" href="http://iphp.com.ua/goto/http://pgfoundry.org/projects/plproxy/" target="_blank" >PL/Proxy</a>. PL/Proxy is database partitioning system implemented as PL language.</li>
<li><a rel="nofollow" href="http://iphp.com.ua/goto/http://sqlb.sourceforge.net/frameset.html" target="_blank"  title="SQLB : SQL Load Balancer">SQLB : SQL Load Balancer</a>. The SQLB project is used to improve SQL requests to a database. It supports MySQL, PostgreSQL and Oracle(tm). It is a set of deamon programs that make multiple permanent connection to one or more database when they start. Then an external program, previously linked with the sqlb client library, can send SQL requests to these deamons and get the result without any need to make a connection/disconnection. The SQLB PHP and Perl modules provided here with SQLB are some examples of such programs.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://iphp.com.ua/archives/25/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scalability and Scalable Architecture Video Lectures</title>
		<link>http://iphp.com.ua/archives/24</link>
		<comments>http://iphp.com.ua/archives/24#comments</comments>
		<pubDate>Mon, 05 Nov 2007 18:21:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Highload/Balancing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Отсюда http://freescienceonline.blogspot.com/2007/08/scalability-and-scalable-architecture.html This month I present to you the amazingly good videos on scalability and scalable architectures. They cover real life scalability issues and solutions at YouTube, Twitter, LiveJournal and Wikipedia. Some other videos are on more theoretical aspects of scalability such as design of effective data storage systems and effective algorithms to read and [...]]]></description>
			<content:encoded><![CDATA[<p>Отсюда <a rel="nofollow" href="http://iphp.com.ua/goto/http://freescienceonline.blogspot.com/2007/08/scalability-and-scalable-architecture.html" >http://freescienceonline.blogspot.com/2007/08/scalability-and-scalable-architecture.html</a></p>
<p>This month I present to you the amazingly good videos on scalability and scalable architectures.</p>
<p>They cover real life scalability issues and solutions at YouTube, Twitter, LiveJournal and Wikipedia. Some other videos are on more theoretical aspects of scalability such as design of effective data storage systems and effective algorithms to read and modify the data.<br />
Also I found some video lectures on MySQL tuning, clustering and high availability.</p>
<p>Enjoy!<br />
<span id="more-24"></span><br />
<span style="font-weight: bold">BigTable: Google&#8217;s Distributed Structured Storage System</span></p>
<ul>
<li><a rel="nofollow" href="http://iphp.com.ua/goto/http://video.google.com/videoplay?docid=7278544055668715642" >Video on BigTable</a> (from Google Video, by Jeff Dean)</li>
<li><a rel="nofollow" href="http://iphp.com.ua/goto/http://www.uwtv.org/programs/displayevent.aspx?rID=4188" >Video on BigTable</a> (alternative, from University of Washington TV)</li>
<li><a rel="nofollow" href="http://iphp.com.ua/goto/http://andrewhitchcock.org/?post=214" >Notes on Google BigTable</a></li>
</ul>
<p><span style="font-size: 85%">Bigtable is a distributed storage system for managing structured data that is designed to scale to a very large size: petabytes of data across thousands of commodity servers. Many projects at Google store data in Bigtable, including web indexing, Google Earth, and Google Finance. These applications place very different demands on Bigtable, both in terms of data size (from URLs to web pages to satellite imagery) and latency requirements (from backend bulk processing to real-time data serving). Despite these varied demands, Bigtable has successfully provided a flexible, high-performance solution for all of these Google products. In this paper we describe the simple data model provided by Bigtable, which gives clients dynamic control over data layout and format, and we describe the design and implementation of Bigtable.</span></p>
<p><span style="font-weight: bold">MapReduce Used on Large Data Sets</span></p>
<ul>
<li><a rel="nofollow" href="http://iphp.com.ua/goto/http://video.google.com/videoplay?docid=741403180270990805" >Video Lecture on MapReduce</a></li>
</ul>
<p><span style="font-size: 85%">MapReduce is a programming model and library designed to simplify distributed processing of huge datasets on large clusters of computers. This is achieved by providing a general mechanism which largely relieves the programmer from having to handle challenging distributed computing problems such as data distribution, process coordination, fault tolerance, and scaling. While working on Google maps, I&#8217;ve used MapReduce extensively to process and transform datasets which describe the earth&#8217;s geography. In this talk, I&#8217;ll introduce MapReduce, demonstrating its broad applicability through example problems ranging from basic data transformation to complex graph processing, all the in the context of geographic data.</span></p>
<p><span style="font-weight: bold">Abstractions for Handling Large Datasets</span></p>
<ul>
<li><a rel="nofollow" href="http://iphp.com.ua/goto/http://video.google.com/videoplay?docid=-2727172597104463277" >Video on Handling Large Datasets</a></li>
</ul>
<p><span style="font-size: 85%">MapReduce, BigTable, and Other Distributed System Abstractions for Handling Large Datasets Jeff Dean, Google, Inc. Search is one of the most important applications used on the internet, but it also poses some of the most interesting challenges in computer science. Providing high-quality search requires understanding across a wide range of computer science disciplines, from lower-level systems issues like computer architecture and distributed systems to applied areas like information retrieval, machine learning, data mining, and user interface design. In this talk, I&#8217;ll highlight some of the behind-the-scenes pieces of infrastructure that we&#8217;ve built in order to operate Google&#8217;s services.</span></p>
<p><span style="font-weight: bold">Building Large Systems at Google</span></p>
<ul>
<li><a rel="nofollow" href="http://iphp.com.ua/goto/http://video.google.com/videoplay?docid=-5699448884004201579" >Video Lecture on Building Large Systems</a></li>
</ul>
<p><span style="font-size: 85%">Google deals with large amounts of data and millions of users. We&#8217;ll take a behind-the-scenes look at some of the distributed systems and computing platform that power Google&#8217;s various products, and make the products scalable and reliable.</span></p>
<p><span style="font-weight: bold">YouTube Scalability</span></p>
<ul>
<li><a rel="nofollow" href="http://iphp.com.ua/goto/http://video.google.com/videoplay?docid=-6304964351441328559" >Video Presentation on YouTube Scalability</a></li>
</ul>
<p><span style="font-size: 85%">This talk will discuss some of the scalability challenges that have arisen during YouTube&#8217;s short but extraordinary history. YouTube has grown incredibly rapidly despite having had only a handful of people responsible for scaling the site. Topics of discussion will include hardware scalability, software scalability, and database scalability.</span></p>
<p><span style="font-weight: bold">Blaine Cook on Scaling Twitter</span></p>
<ul>
<li><a rel="nofollow" href="http://iphp.com.ua/goto/http://video.google.com/videoplay?docid=-7846959339830379167" >Video Lecture on Scaling Twitter</a></li>
<li><a rel="nofollow" href="http://iphp.com.ua/goto/http://www.slideshare.net/Blaine/scaling-twitter/" >Lecture Slides</a></li>
</ul>
<p><span style="font-size: 85%">Blaine gave this talk on how they scaled Twitter. Twitter is probably the largest Ruby on Rails application in production today, so it was filled with lots of great insights including many not so obvious tips.</span></p>
<p><span style="font-weight: bold">Wikipedia and MediaWiki</span></p>
<ul>
<li><a rel="nofollow" href="http://iphp.com.ua/goto/http://video.google.com/videoplay?docid=7747790812939045407" >Video Lecture on Wikipedia</a></li>
</ul>
<p><span style="font-size: 85%"><br />
Over four years, MediaWiki has evolved from a quick hack to run a little-known encyclopedia web site to the monster engine behind a heavily-used public site, while maintaining the simplicity needed for an entry-level intranet wiki. Brion reviews past and future directions for Wikipedia&#8217;s software and hardware, and how modern buzzword technologies could power and simplify the wiki world.</span></p>
<p><span style="font-weight: bold">Behind the Scenes at LiveJournal: Scaling Storytime</span></p>
<ul>
<li><a rel="nofollow" href="http://iphp.com.ua/goto/http://video.google.com/videoplay?docid=-8953828243232338732" >Video Lecture on Scaling LiveJournal</a></li>
</ul>
<p><span style="font-size: 85%">The history and lessons learned while scaling a community site (LiveJournal.com) from a single server with a dozen friends to hundreds of machines and 10M+ users. What&#8217;s worked, what hasn&#8217;t, and all the things we&#8217;ve had to build ourselves, now in common use thoughout the &#171;Web 2.0&#8243; world, including memcached, MogileFS, Perlbal, and our job dispatch systems.</span></p>
<p><span style="font-weight: bold">Lessons In Building Scalable Systems</span></p>
<ul>
<li><a rel="nofollow" href="http://iphp.com.ua/goto/http://video.google.com/videoplay?docid=6202268628085731280" >Video Lecture on Building Scalable Systems</a></li>
</ul>
<p><span style="font-size: 85%">Since launching Google Talk in the summer of 2005, we have integrated the service with two large existing products: Gmail and orkut. Each of these integrations provided unique scalability challenges as we had to handle a sudden big increase in the number of users. Today, Google Talk supports millions of users and handles billions of packets per day. I will discuss several practical lessons and key insights from our experience that can be used for any project. These lessons will cover both engineering and operational areas. Reza Behforooz is a Staff Engineer at Google and is currently the technical lead for the Google Talk servers. He&#8217;s passionate about building large systems and working on communication products in an attempt to make the world a smaller place. While at Google, he has primarily worked on Google Talk, Gmail, orkut, Google Groups, and shared infrastructure used by several Google applications.</span></p>
<p><span style="font-weight: bold">Distributed Caching Essential Lessons</span></p>
<ul>
<li><a rel="nofollow" href="http://iphp.com.ua/goto/http://www.infoq.com/presentations/distributed-caching-lessons" >Video Lecture on Distributed Caching</a></li>
</ul>
<p><span style="font-size: 85%">In this presentation, recorded at Javapolis, Cameron Purdy shows how to improve application performance &amp; scalability via caching architectures to reduce load on the database tier and &amp; clustered caching to provide transparent fail-over by reliably sharing live data among clustered JVMs.</span></p>
<p><span style="font-weight: bold">Lustre File System</span></p>
<ul>
<li><a rel="nofollow" href="http://iphp.com.ua/goto/http://video.google.com/videoplay?docid=-144694167366118397" >Video Lecture on Lustre Filesytems</a></li>
</ul>
<p><span style="font-size: 85%">Lustre is a scalable open source Linux cluster file system that powers 6 of the top 10 computers in the world. It is resold by HP, SUN, Dell and many other OEM and storage companies, yet produced by a small powerful technology company, Cluster File Systems, Inc. This lecture will explain the Lustre architecture and then focus on how scalability was achieved. We will address many aspects of scalability mostly from the field and some from future requirements, from having 25,000 clients in the Red Storm computer to offering exabytes of storage. Performance is an important focus and we will discuss how Lustre serves up over 100GB/sec today going to 100TB/sec in the coming years. It will deliver millions of metadata operations per second in a cluster and, write 10&#8242;s of thousands of small files per second on a single node.</span></p>
<p><span style="font-weight: bold">Scalable Test Selection Using Source Code</span></p>
<ul>
<li><a rel="nofollow" href="http://iphp.com.ua/goto/http://video.google.com/videoplay?docid=-3003538972995863248" >Video Lecture on Scalable Test Selections</a></li>
</ul>
<p><span style="font-size: 85%">As the number of automated regression tests increase, the ability to run all of them in a reasonable amount of time becomes more and more difficult, and simply doesn&#8217;t scale. Since we are looking for regressions, it is useful to hone in on the parts of the code that have changed from the last run to help select a small subset of tests that are likely to find the regression. In this way we are only running the tests that need to be run as your system gets larger and the number of possible tests scales outward. We have devised a method to select a subset of tests from an existing test set for scalable regression testing based on source code changes, or deltas. The selection algorithm is a static data mining technique that establishes the relationship between source code deltas and test case execution results. Test selection is then based on the established correlation. In this talk, we will discuss the benefits and also the pitfalls involved in having such an infrastructure. Finally, we will talk about how best to add it to a nightly or continuous test automation infrastructure. Ryan Gerard is currently an SQA Engineer at Symantec. He has a BS in Computer Science and Engineering from UCLA, and is currently pursuing his MS in Information Security. Ryan’s particular specialties are in web technologies and security testing, although his interests span kernel-level technologies to process improvements to data analysis.</span></p>
<p><span style="font-weight: bold">SCTPs Reliability and Fault Tolerance</span></p>
<ul>
<li><a rel="nofollow" href="http://iphp.com.ua/goto/http://video.google.com/videoplay?docid=210885113635893162" >Video Lecture on SCTP Realiability</a></li>
</ul>
<p><span style="font-size: 85%">Low cost clusters are usually built from commodity parts and use standard transport protocols like TCP/IP. Once systems become large enough, reliability and fault tolerance become an important issue and TCP/IP often requires additional mechanisms to ensure reliability of the application. The Stream Control Transmission Protocol (SCTP) is a newly standardized transport protocol that provides additional mechanisms for reliability beyond that of TCP. The added reliability and fault tolerance of SCTP may function better for MapReduce-like distributed applications on large commodity clusters. SCTP has the following features that provide additional levels of reliability and fault tolerance. Selective acknowledgment (SACK) is built-in to the protocol with the ability to express larger gaps than TCP; as a result, SCTP outperforms TCP under loss. For cluster nodes with multiple interfaces, SCTP supports multihoming, which transparently provides failover in the event of network path failure. SCTP has the stronger CRC32c checksum which is necessary with high data rates and large scale systems. SCTP also allows multiple streams within a single connection, providing a solution to the head- of-line blocking problem present in TCP-based farming applications like Google&#8217;s MapReduce. Like TCP, SCTP provides a reliable data stream by default, but unlike TCP, messages can optionally age or reliability can be disabled altogether. The SCTP API provides both a one-to-one (like TCP) and a one-to-many (like UDP) socket style; use of a one-to-many style socket can reduce the number of file descriptors required by an application, making it more scalable.</span></p>
<p><span style="font-weight: bold">Building a Scalable Resource Management</span></p>
<ul>
<li><a rel="nofollow" href="http://iphp.com.ua/goto/http://video.google.com/videoplay?docid=-3937025764791991714" >Video Lecture on Building Scalable RM</a></li>
</ul>
<p><span style="font-size: 85%">This talk will describe the architecture and implementation details for building a highly scalable resource management layer that can support a variety of applications and workloads. This technology has evolved from large scale computing grids deployed in production at customers such as Texas Instruments, AMD, JP Morgan, and various government labs. We will show how to build a centralized dynamic load information collection service that can handle up to 5000 nodes/20,000 cpus in a single cluster. The service is able to gather a variety of system level metrics and is extensible to collect up to 256 dynamic or static attributes of a node and actively feed them to a centralized master. A built-in election algorithm ensures timely failover of the master service ensuring high-availability without the need for specialized interconnects. This building block is extended to multiple clusters that can be organized hierarchically to support a single resource management domain that can span multiple data centers. We believe the current architecture could scale to 100,000 nodes/400,000 cpus. Additional services such as a distributed process execution service, and a policy-based resource allocation engine which leverage this core scale-out clustering service are described. The protocols, communication overheads, and various design tradeoffs that were made the development of these services will be presented along with experimental results from various tests, simulations and production environments.</span></p>
<p><span style="font-weight: bold">VeriSign&#8217;s Global DNS Infrastucture</span></p>
<ul>
<li><a rel="nofollow" href="http://iphp.com.ua/goto/http://video.google.com/videoplay?docid=-5525246919548243924" >Video Lecture on VeriSign&#8217;s Global DNS Infrastructure</a></li>
</ul>
<p><span style="font-size: 85%">VeriSign&#8217;s global network of nameservers for the .com and .net domains sees 500,000 DNS queries per second during its daily peak, and ten times that or more during attacks. By adding new servers and bandwidth, we&#8217;ve recently increased capacity to handle many times that query volume. Name and address changes are distributed to these nameservers every 15 seconds &#8212; from a provisioning system that routinely receives one million domain updates in an hour. In this presentation we describe VeriSign&#8217;s production DNS implementation as a context for discussing our approach to highly scalable, highly reliable architectures. We will talk about the underlying Advanced Transactional Lookup and Signaling software, which is used to handle database extraction, validation, distribution and name resolution. We also will show the central heads-up display that rolls up statistics reported from each component in the infrastructure.</span></p>
<p><span style="font-weight: bold">Scaling Google for Every User</span></p>
<ul>
<li><a rel="nofollow" href="http://iphp.com.ua/goto/http://video.google.com/videoplay?docid=-7039469220993285507" >Video Lecture on Scaling Google for Every User</a></li>
</ul>
<p><span style="font-size: 85%">Marissa Mayer, Vice President, Search Products &amp; User Experience, leads the product management efforts on Google&#8217;s search products – web search, images, groups, news, Froogle, the Google Toolbar, Google Desktop, Google Labs, and more. She joined Google in 1999 as Google&#8217;s first female engineer and led the user interface and webserver teams at that time.</span></p>
<p><span style="font-weight: bold">Scalability and Efficiency on Data Mining Applied to Internet Applications</span></p>
<ul>
<li><a rel="nofollow" href="http://iphp.com.ua/goto/http://video.google.com/videoplay?docid=2980110657131275963" >Video Lecture on Scalable Data Mining</a></li>
</ul>
<p><span style="font-size: 85%">The Internet went well beyond a technology artefact, increasingly becoming a social interaction tool. These interactions are usually complex and hard to analyze automatically, demanding the research and development of novel data mining techniques that handle the individual characteristics of each application scenario. Notice that these data mining techniques, similarly to other machine learning techniques, are intensive in terms of both computation and I/O, motivating the development of new paradigms, programming environments, and parallel algorithms that support scalable and efficient applications. In this talk we present some results that justify not only the need for developing these new techniques, as well as their parallelization.</span></p>
<p><span style="font-weight: bold">Customizable Scalable Compute Intensive Stream Queries</span></p>
<ul>
<li><a rel="nofollow" href="http://iphp.com.ua/goto/http://video.google.com/videoplay?docid=-2939138234670623394" >Video Lecture</a></li>
</ul>
<p><span style="font-size: 85%">GSDM is a data stream management system running on cluster computers. The system is extensible through user-defined data representations and computations. The computations are specified as stream queries continuously computed over windows of data sliding over the streams.</span><span style="font-size: 85%">Our applications include a virtual radio telescope requiring advanced computations over huge streams of data. The system needs to be highly scalable w.r.t. both data and computations. Rather than providing only built-in distribution strategies, the system allows the user to define distribution templates to specify customized distribution strategies for user functions in stream queries. The distribution templates are shown to provide scalability for stream computations that grow more expensive with larger windows.</p>
<p>Distribution templates can be defined in terms of other distribution templates, enabling specification of large distribution patterns of communicating computing nodes. This also allows optimizing templates that generate new templates based on profiling the computations.</p>
<p></span><span style="font-weight: bold">Performance Tuning Best Practices for MySQL</span></p>
<ul>
<li><a rel="nofollow" href="http://iphp.com.ua/goto/http://video.google.com/videoplay?docid=2524524540025172110" >Video Lecture on MySQL Performance Tuning</a></li>
</ul>
<p><span style="font-size: 85%">Learn where to best focus your attention when tuning the performance of your applications and database servers, and how to effectively find the &#171;low hanging fruit&#187; on the tree of bottlenecks. It&#8217;s not rocket science, but with a bit of acquired skill and experience, and of course good habits, you too can do this magic! Jay Pipes is MySQL&#8217;s Community Relations Manager for North America.</span></p>
<p><span style="font-weight: bold">A Googly MySQL Cluster Talk</span></p>
<ul>
<li><a rel="nofollow" href="http://iphp.com.ua/goto/http://video.google.com/videoplay?docid=-4567104036778249401" >Video Lecture on MySQL Clustering</a></li>
</ul>
<p><span style="font-size: 85%">Introduction to MySQL Cluster The NDB storage engine (MySQL Cluster) is a high-availability storage engine for MySQL. It provides synchronous replication between storage nodes and many mysql servers having a consistent view of the database. In 4.1 and 5.0 it&#8217;s a main memory database, but in 5.1 non-indexed attributes can be stored on disk. NDB also provides a lot of determinism in system resource usage. I&#8217;ll talk a bit about that.</span><span style="font-size: 85%">New features in 5.1 including cluster to cluster replication, disk based data and a bunch of other things. anybody that is attending the mysql users conference may find this eerily familiar.</p>
<p></span><span style="font-weight: bold">MySQL Scaling and High Availability Architectures</span></p>
<ul>
<li><a rel="nofollow" href="http://iphp.com.ua/goto/http://www.youtube.com/watch?v=Oa1guca-gFQ" >Video Lecture on MySQL HA (High Availability)</a></li>
</ul>
<p>Along the way I found some nice blogs on scalability, here is one with various presentations:<br />
<a rel="nofollow" href="http://iphp.com.ua/goto/http://poorbuthappy.com/ease/archives/2007/04/29/3616/the-top-10-presentation-on-scaling-websites-twitter-flickr-bloglines-vox-and-more" >Presentations on scaling websites: twitter, Flickr, Bloglines, Vox and more.</a></p>
<p>And here is one collecting slides, talks, audios and videos on scalability:<br />
<a rel="nofollow" href="http://iphp.com.ua/goto/http://www.royans.net/arch/library/" >Scalable Web Architecture Library</a></p>
<p>I would consider adding the following resources as well.</p>
<p><a rel="nofollow" href="http://iphp.com.ua/goto/http://www.gigaspaces.com/wiki/download/attachments/9994343/FromDeadEndToOpenRoad.pdf?version=1" rel="nofollow" >The Scalability Revolution: From Dead End to Open Road</a></p>
<p><a rel="nofollow" href="http://iphp.com.ua/goto/http://www.infoq.com/news/2007/08/scalability-patterns" rel="nofollow" >New patterns and middleware architecture needed for true linear scalability?</a></p>
<p><a rel="nofollow" href="http://iphp.com.ua/goto/http://natishalom.typepad.com/nati_shaloms_blog/2007/08/lessons-from-am.html" rel="nofollow" >Lessons from Pat Helland: Life Beyond Distributed Transactions</a></p>
]]></content:encoded>
			<wfw:commentRss>http://iphp.com.ua/archives/24/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nginx</title>
		<link>http://iphp.com.ua/archives/14</link>
		<comments>http://iphp.com.ua/archives/14#comments</comments>
		<pubDate>Mon, 05 Nov 2007 17:37:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Highload/Balancing]]></category>
		<category><![CDATA[LAMP]]></category>
		<category><![CDATA[nginx]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Все умные мальчики насмотрелись презентаций и уже давно установили себе на сервера NGINX. Полезные линки по теме: хорошее описание внутренностей список рассылки 1 http://dir.gmane.org/gmane.comp.web.nginx.russian (читать обязательно) список рассылки 2 http://www.lexa.ru/nginx-ru/ Nginx memcached rails Nginx English Wiki]]></description>
			<content:encoded><![CDATA[<p>Все умные мальчики насмотрелись презентаций и уже давно установили себе на сервера <a rel="nofollow" href="http://iphp.com.ua/goto/http://sysoev.ru/nginx/"  target="_blank" title="NGINX">NGINX</a>.</p>
<p>Полезные линки по теме:</p>
<ol>
<li>хорошее <a rel="nofollow" href="http://iphp.com.ua/goto/http://www.riceonfire.org/emiller/nginx-modules-guide.html" >описание внутренностей</a></li>
<li>список рассылки 1 <a rel="nofollow" href="http://iphp.com.ua/goto/http://dir.gmane.org/gmane.comp.web.nginx.russian" >http://dir.gmane.org/gmane.comp.web.nginx.russian</a> (читать обязательно)</li>
<li>список рассылки 2 <a rel="nofollow" href="http://iphp.com.ua/goto/http://www.lexa.ru/nginx-ru/" >http://www.lexa.ru/nginx-ru/</a></li>
<li><a rel="nofollow" href="http://iphp.com.ua/goto/http://maxidoors.ru/articles/2007/04/24/nginx-memcached-rails"  target="_blank">Nginx memcached rails</a></li>
<li><a rel="nofollow" href="http://iphp.com.ua/goto/http://wiki.codemongers.com/Main" >Nginx English Wiki</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://iphp.com.ua/archives/14/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WEB-сервер 0W-httpd (ZeroWait httpd)</title>
		<link>http://iphp.com.ua/archives/21</link>
		<comments>http://iphp.com.ua/archives/21#comments</comments>
		<pubDate>Mon, 05 Nov 2007 17:36:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Highload/Balancing]]></category>
		<category><![CDATA[LAMP]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Смотрел однажды  доклад разработчиков системы статистики для liveinternet.ru&#8230; Так вот один из них сказал, что они используют сервер 0W-httpd, который не доступен в исходниках. Так вот это неправда Сайт программки http://0w.ru/httpd/, свеженькая версия 0.7q вышла недавно&#8230; 0W-httpd &#8212; производительный и &#171;легкий&#187; web-сервер. Область применения: сайты со статическим содержимым (&#171;картиночные&#187; сервера, файловые архивы), узкоспециализированные сервера (баннерные, счетчиковые системы), [...]]]></description>
			<content:encoded><![CDATA[<p>Смотрел однажды  доклад разработчиков системы статистики для liveinternet.ru&#8230; Так вот один из них сказал, что они используют сервер 0W-httpd, который не доступен в исходниках. Так вот это неправда <img src='http://iphp.com.ua/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Сайт программки <a rel="nofollow" href="http://iphp.com.ua/goto/http://0w.ru/httpd/" >http://0w.ru/httpd/</a>, свеженькая версия <strong>0.7q</strong> вышла недавно&#8230;</p>
<p><strong>0W-httpd</strong> &#8212; производительный и &#171;легкий&#187; web-сервер.</p>
<p>Область применения: сайты со статическим содержимым (&#171;картиночные&#187; сервера, файловые архивы), узкоспециализированные сервера (баннерные, счетчиковые системы), акселератор для высоко-загруженных серверов общего назначения. Фактически производительность ограничена возможностями сетевой карты и жесткого диска.<br />
<span id="more-21"></span></p>
<p>Основные преимущества и возможности:</p>
<ul>
<li>низкая требовательность к ресурсам (память и CPU)</li>
<li>быстрая реакция на запросы (до нескольких тысяч запросов в секунду)</li>
<li>поддержка большого количества одновременных соединений (до нескольких тысяч)</li>
<li>возможность работы в качестве акселератора для более универсальных серверов (Apache)</li>
<li>поддержка средств повышения производительности протокола http: keep-alive запросы, pipelined-запросы, &#171;докачка&#187;</li>
<li>использование эффективных механизмов Linux (RealTime signals, sendfile) и FreeBSD (kqueue, sendfile), для других ОС: poll, mmap, read/write.</li>
</ul>
<p>ОС: Linux, FreeBSD<br />
Текущая версия: <a rel="nofollow" href="http://iphp.com.ua/goto/http://0w.ru/httpd/0W-httpd-0.7q.tar.gz" >0.7q</a> (<a rel="nofollow" href="http://iphp.com.ua/goto/http://0w.ru/httpd/httpd.ru.txt" >описание файла конфигурации</a>)<br />
<a rel="nofollow" href="http://iphp.com.ua/goto/http://0w.ru/httpd/Changes.rus" >Список изменений</a> (1 ноября 2007)</p>
]]></content:encoded>
			<wfw:commentRss>http://iphp.com.ua/archives/21/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scalable web architectures</title>
		<link>http://iphp.com.ua/archives/19</link>
		<comments>http://iphp.com.ua/archives/19#comments</comments>
		<pubDate>Mon, 05 Nov 2007 15:43:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Highload/Balancing]]></category>
		<category><![CDATA[highload]]></category>
		<category><![CDATA[pdf]]></category>
		<category><![CDATA[presentations]]></category>
		<category><![CDATA[scalable]]></category>
		<category><![CDATA[slides]]></category>
		<category><![CDATA[videos]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Полезные презенташки, блоги и т.д. (отсюда http://www.royans.net/arch/library/) Library This is a collection of Slides, presentations and videos on topics related to designing of high throughput, scalable, highly available websites I’ve been collecting for a while. 8/28/2007 Blog   Inside Myspace 8/28/2007 FAQ   Good Memcached FAQ 8/28/2007 Blog   Measuring scalability 8/28/2007 Blog   Distributed [...]]]></description>
			<content:encoded><![CDATA[<p>Полезные презенташки, блоги и т.д. (отсюда <a rel="nofollow" href="http://iphp.com.ua/goto/http://www.royans.net/arch/library/" >http://www.royans.net/arch/library/</a>)</p>
<h2>Library</h2>
<p class="postentry">This is a collection of Slides, presentations and videos on topics related to designing of high throughput, scalable, highly available websites I’ve been collecting for a while.<br />
<span id="more-19"></span></p>
<table style="width: 562px; height: 3546px">
<tr>
<td>8/28/2007</td>
<td>Blog</td>
<td> </td>
<td><a rel="nofollow" href="http://iphp.com.ua/goto/http://www.baselinemag.com/article2/0,1397,2082921,00.asp" >Inside Myspace</a></td>
</tr>
<tr>
<td>8/28/2007</td>
<td>FAQ</td>
<td> </td>
<td><a href="http://www.socialtext.net/memcached/index.cgi?faq">Good Memcached FAQ<br />
</a></td>
</tr>
<tr>
<td>8/28/2007</td>
<td>Blog</td>
<td> </td>
<td><a href="http://www.informit.com/articles/article.aspx?p=26942&amp;seqNum=18&amp;rl=1">Measuring scalability<br />
</a></td>
</tr>
<tr>
<td>8/28/2007</td>
<td>Blog</td>
<td> </td>
<td><a href="http://www.linuxjournal.com/article/7451">Distributed caching with memcached<br />
</a></td>
</tr>
<tr>
<td>8/28/2007</td>
<td>Blog</td>
<td> </td>
<td><a href="http://mailinator.blogspot.com/2007/02/mailinators-2006-stats.html">Mailinator stats (all on a single server)<br />
</a></td>
</tr>
<tr>
<td>8/28/2007</td>
<td>Blog</td>
<td> </td>
<td><a href="http://mailinator.blogspot.com/2007/01/architecture-of-mailinator.html">Architecture of Mailinator<br />
</a></td>
</tr>
<tr>
<td>8/25/2007</td>
<td>Slides</td>
<td>74</td>
<td><a href="http://www.codemass.com/presentations/apachecon2005/ac2005scalablewebarch.pdf">Building Scalable web architectures<br />
</a></td>
</tr>
<tr>
<td>8/25/2007</td>
<td>Slides</td>
<td>42</td>
<td><a href="http://www.slideshare.net/royans/how-typepad-changed-their-architecture-without-taking-down-the-service">Typepad Architecture change: Change Your Car’s Tires at 100 mph<br />
</a></td>
</tr>
<tr>
<td>8/25/2007</td>
<td>Slides</td>
<td> </td>
<td><a href="http://www.recon.cx/en/f/vskype-part2.pdf">Skype protocol (also talks about p2p connections which is critical for its scalability)<br />
</a></td>
</tr>
<tr>
<td>8/20/2007</td>
<td>slides</td>
<td> </td>
<td><a href="http://krow.net/talks/mysql_slashdot_scaling/slide001.html">Slashdot’s History of scaling Mysql<br />
</a></td>
</tr>
<tr>
<td>8/19/2007</td>
<td>Slides</td>
<td>20</td>
<td><a href="http://www.lethargy.org/~jesus/misc/BBPostgres.pdf">Big Bad Postgres SQL<br />
</a></td>
</tr>
<tr>
<td>8/19/2007</td>
<td>Slides</td>
<td>90</td>
<td><a href="http://www.lethargy.org/~jesus/misc/Scalable%20Ti.pdf">Scalable internet architectures<br />
</a></td>
</tr>
<tr>
<td>8/19/2007</td>
<td>Slides</td>
<td>59</td>
<td><a href="http://www.lethargy.org/~jesus/misc/production-troubleshooting.pdf">Production troubleshooting (not related to scalability… but shit happens everywhere)<br />
</a></td>
</tr>
<tr>
<td>8/19/2007</td>
<td>Slides</td>
<td>31</td>
<td><a href="http://www.lethargy.org/~jesus/misc/Logging%20AC2005.pdf">Clustered Logging with mod_log_spread<br />
</a></td>
</tr>
<tr>
<td>8/19/2007</td>
<td>Slides</td>
<td>86</td>
<td><a href="http://www.lethargy.org/~jesus/misc/Apache2002US_HALB.pdf">Understanding and Building HA/LB clusters<br />
</a></td>
</tr>
<tr>
<td>8/12/2007</td>
<td>Blog</td>
<td> </td>
<td><a href="http://capttofu.livejournal.com/1752.html">Multi-Master Mysql Replication<br />
</a></td>
</tr>
<tr>
<td>8/12/2007</td>
<td>Blog</td>
<td> </td>
<td><a href="http://www.ajaxline.com/node/363">Large-Scale Methodologies for the World Wide Web<br />
</a></td>
</tr>
<tr>
<td>8/12/2007</td>
<td>Blog</td>
<td> </td>
<td><a href="http://philip.greenspun.com/seia/scaling">Scaling gracefully<br />
</a></td>
</tr>
<tr>
<td>8/12/2007</td>
<td>Blog</td>
<td> </td>
<td><a href="http://scalablecorner.blogspot.com/2007/06/implementing-tag-cloud-nasty-way-part-2.html">Implementing Tag cloud &#8212; The nasty way<br />
</a></td>
</tr>
<tr>
<td>8/12/2007</td>
<td>Blog</td>
<td> </td>
<td><a href="http://www.kottke.org/04/10/normalized-data">Normalized Data is for sissies<br />
</a></td>
</tr>
<tr>
<td>8/12/2007</td>
<td>Slides</td>
<td> </td>
<td><a href="http://www.scribd.com/doc/88689/apcfacebook">APC at facebook<br />
</a></td>
</tr>
<tr>
<td>8/6/2007</td>
<td>Video</td>
<td> </td>
<td><a href="http://files.skyscrapr.net/users/arcast/tv/ARCastTV20070802-PlentyOfFish.wmv">Plenty Of fish interview with its CEO<br />
</a></td>
</tr>
<tr>
<td>8/6/2007</td>
<td>Slides</td>
<td> </td>
<td><a href="http://www.onjava.com/pub/a/onjava/2003/10/15/php_scalability.html">PHP scalability myth<br />
</a></td>
</tr>
<tr>
<td>8/6/2007</td>
<td>Slides</td>
<td>79</td>
<td><a href="http://talks.php.net/show/hpp">High performance PHP<br />
</a></td>
</tr>
<tr>
<td>8/6/2007</td>
<td>Blog</td>
<td> </td>
<td><a href="http://www.oreillynet.com/onlamp/blog/2006/04/digg_phps_scalability_and_perf.html">Digg: PHP’s scalability and Performance<br />
</a></td>
</tr>
<tr>
<td>8/2/2007</td>
<td>Blog</td>
<td> </td>
<td><a href="http://www-128.ibm.com/developerworks/ibm/library/i-osource5/">Getting Started with Drupal<br />
</a></td>
</tr>
<tr>
<td>8/2/2007</td>
<td>Blog</td>
<td> </td>
<td><a href="http://20bits.com/2007/02/27/4-problems-with-drupal/">4 Problems with Drupal<br />
</a></td>
</tr>
<tr>
<td>8/2/2007</td>
<td>Video</td>
<td>55m</td>
<td><a href="http://video.google.com/videoplay?docid=741403180270990805">Seattle Conference on Scalability: MapReduce Used on Large Data Sets<br />
</a></td>
</tr>
<tr>
<td>8/2/2007</td>
<td>Video</td>
<td>60m</td>
<td><a href="http://video.google.com/videoplay?docid=-7039469220993285507">Seattle Conference on Scalability: Scaling Google for Every User<br />
</a></td>
</tr>
<tr>
<td>8/2/2007</td>
<td>Video</td>
<td>53m</td>
<td><a href="http://video.google.com/videoplay?docid=-5525246919548243924">Seattle Conference on Scalability: VeriSign’s Global DNS Infrastucture<br />
</a></td>
</tr>
<tr>
<td>8/2/2007</td>
<td>Video</td>
<td>53m</td>
<td><a href="http://video.google.com/videoplay?docid=-6304964351441328559">Seattle Conference on Scalability: YouTube Scalability<br />
</a></td>
</tr>
<tr>
<td>8/2/2007</td>
<td>Video</td>
<td>59m</td>
<td><a href="http://video.google.com/videoplay?docid=-2727172597104463277">Seattle Conference on Scalability: Abstractions for Handling Large Datasets<br />
</a></td>
</tr>
<tr>
<td>8/2/2007</td>
<td>Video</td>
<td>55m</td>
<td><a href="http://video.google.com/videoplay?docid=-3937025764791991714">Seattle Conference on Scalability: Building a Scalable Resource Management<br />
</a></td>
</tr>
<tr>
<td>8/2/2007</td>
<td>Video</td>
<td>44m</td>
<td><a href="http://video.google.com/videoplay?docid=210885113635893162">Seattle Conference on Scalability: SCTPs Reliability and Fault Tolerance<br />
</a></td>
</tr>
<tr>
<td>8/2/2007</td>
<td>Video</td>
<td>27m</td>
<td><a href="http://video.google.com/videoplay?docid=6202268628085731280">Seattle Conference on Scalability: Lessons In Building Scalable Systems<br />
</a></td>
</tr>
<tr>
<td>8/2/2007</td>
<td>Video</td>
<td>41m</td>
<td><a href="http://video.google.com/videoplay?docid=-3003538972995863248">Seattle Conference on Scalability: Scalable Test Selection Using Source Code<br />
</a></td>
</tr>
<tr>
<td>8/2/2007</td>
<td>Video</td>
<td>53m</td>
<td><a href="http://video.google.com/videoplay?docid=-144694167366118397">Seattle Conference on Scalability: Lustre File System<br />
</a></td>
</tr>
<tr>
<td>8/2/2007</td>
<td>Slides</td>
<td>16</td>
<td><a href="http://www.slideshare.net/epee/mysql-2007-tech-at-digg-v3">Technology at Digg.com<br />
</a></td>
</tr>
<tr>
<td>8/2/2007</td>
<td>Blog</td>
<td> </td>
<td><a href="http://www.bytebot.net/blog/archives/2007/04/26/extreme-makeover-database-or-mysqlyoutube">Extreme Makeover: Database or MySQL@YouTube<br />
</a></td>
</tr>
<tr>
<td>8/2/2007</td>
<td>Slides</td>
<td>60</td>
<td><a rel="nofollow" href="http://iphp.com.ua/goto/http://www.slideshare.net/Foxsden/real-time-web-20-and-grid-systems/" >“Real Time</a></td>
</tr>
<tr>
<td>8/2/2007</td>
<td>Blog</td>
<td> </td>
<td><a href="http://www.bytebot.net/blog/archives/2007/04/26/">Mysql at Google<br />
</a></td>
</tr>
<tr>
<td>8/2/2007</td>
<td>Slides</td>
<td>56</td>
<td><a href="http://www.slideshare.net/Blaine/scaling-twitter">Scaling Twitter<br />
</a></td>
</tr>
<tr>
<td>8/2/2007</td>
<td>Slides</td>
<td>53</td>
<td><a href="http://www.slideshare.net/miyagawa/how-we-build-vox">How we build Vox<br />
</a></td>
</tr>
<tr>
<td>8/2/2007</td>
<td>Slides</td>
<td>97</td>
<td><a href="http://www.slideshare.net/techdude/high-performance-web-sites/">High Performance websites<br />
</a></td>
</tr>
<tr>
<td>8/2/2007</td>
<td>Slides</td>
<td>101</td>
<td><a href="http://www.slideshare.net/techdude/beyond-the-file-system-designing-largescale-file-storage-and-serving">Beyond the file system design<br />
</a></td>
</tr>
<tr>
<td>8/2/2007</td>
<td>Slides</td>
<td>145</td>
<td><a href="http://www.slideshare.net/techdude/scalable-web-architectures-common-patterns-and-approaches">Scalable web architectures<br />
</a></td>
</tr>
<tr>
<td>8/2/2007</td>
<td>Blog</td>
<td> </td>
<td><a rel="nofollow" href="http://iphp.com.ua/goto/http://blog.thembid.com/index.php/2007/04/05/build-scalable-web-20-sites-with-ubuntu-symfony-and-lighttpd/" >“Build Scalable Web 2.0 Sites with Ubuntu</a></td>
</tr>
<tr>
<td>8/2/2007</td>
<td>Slides</td>
<td>34</td>
<td><a href="http://www.slideshare.net/techdude/scalability-set-amazons-servers-on-fire-not-yours">Scalability set Amazon’s servers on fire not yours<br />
</a></td>
</tr>
<tr>
<td>8/2/2007</td>
<td>Slides</td>
<td>41</td>
<td><a href="http://www.slideshare.net/akshat/1scaling-phpmysqlpresentation-from-flickr">Hardware layouts for LAMP installations<br />
</a></td>
</tr>
<tr>
<td>8/2/2007</td>
<td>Video</td>
<td>91m</td>
<td><a href="http://www.youtube.com/watch?v=Oa1guca-gFQ">Mysql scaling and high availability architectures<br />
</a></td>
</tr>
<tr>
<td>8/2/2007</td>
<td>Audio</td>
<td>137</td>
<td><a href="http://www.niallkennedy.com/blog/audio/fletcher.mp3">Lessons from Building world’s largest social music platform<br />
</a></td>
</tr>
<tr>
<td>8/2/2007</td>
<td>PDF</td>
<td>137</td>
<td><a href="http://wingedpig.com/Startup_SDForum.pdf">Lessons from Building world’s largest social music platform<br />
</a></td>
</tr>
<tr>
<td>8/2/2007</td>
<td>Slides</td>
<td>137</td>
<td><a href="http://www.slideshare.net/coolstuff/lessons-from-building-worlds-largest-social-music-platform">Lessons from Building world’s largest social music platform<br />
</a></td>
</tr>
<tr>
<td>8/2/2007</td>
<td>PDF</td>
<td>80</td>
<td><a href="http://danga.com/words/2005_oscon/oscon-2005.pdf">Livejournal’s backend: history of scaling<br />
</a></td>
</tr>
<tr>
<td>8/2/2007</td>
<td>Slides</td>
<td>80</td>
<td><a href="http://www.slideshare.net/vishnu/livejournals-backend-a-history-of-scaling">Livejournal’s backend: history of scaling<br />
</a></td>
</tr>
<tr>
<td>8/2/2007</td>
<td>Slides</td>
<td>26</td>
<td><a href="http://www.slideshare.net/jboutelle/scalable-web-architectures-w-ruby-and-amazon-s3">Scalable Web Architectures (w/ Ruby and Amazon S3)<br />
</a></td>
</tr>
<tr>
<td>8/2/2007</td>
<td>Blog</td>
<td> </td>
<td><a href="http://www.symfony-project.com/weblog/2006/10/28/yahoo-bookmarks-uses-symfony.html">Yahoo! bookmarks uses symfony<br />
</a></td>
</tr>
<tr>
<td>8/2/2007</td>
<td>Slides</td>
<td> </td>
<td><a href="http://talks.php.net/show/oscon06">Getting Rich with PHP 5<br />
</a></td>
</tr>
<tr>
<td>8/2/2007</td>
<td>Audio</td>
<td> </td>
<td><a href="http://www.niallkennedy.com/blog/audio/phpweb20.mp3">Getting Rich with PHP 5<br />
</a></td>
</tr>
<tr>
<td>8/2/2007</td>
<td>Blog</td>
<td> </td>
<td><a href="http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=2e03a43a-535e-49a1-afaa-b47eab5f71c2">Scaling Fast and Cheap &#8212; How We Built Flickr<br />
</a></td>
</tr>
<tr>
<td>8/2/2007</td>
<td>News</td>
<td> </td>
<td><a href="http://software.newsforge.com/article.pl?sid=05/01/27/170244">Open source helps Flickr share photos<br />
</a></td>
</tr>
<tr>
<td>8/2/2007</td>
<td>Slides</td>
<td>41</td>
<td><a href="http://www.niallkennedy.com/blog/uploads/flickr_php.pdf">Flickr and PHP<br />
</a></td>
</tr>
<tr>
<td>8/2/2007</td>
<td>Slides</td>
<td>30</td>
<td><a href="http://mysqluc.com/presentations/mysql06/mituzas_wikipedia.pdf">Wikipedia: Cheap and explosive scaling with LAMP<br />
</a></td>
</tr>
<tr>
<td>8/2/2007</td>
<td>Blog</td>
<td> </td>
<td><a href="http://kylecordes.com/2007/07/12/youtube-scalability/">YouTube Scalability Talk<br />
</a></td>
</tr>
<tr>
<td>8/2/2007</td>
<td> </td>
<td> </td>
<td><a href="http://www.slideshare.net/techdude/high-order-bit-architecture-for-humanity-47513/">High Order Bit: Architecture for Humanity<br />
</a></td>
</tr>
<tr>
<td>8/2/2007</td>
<td>PDF</td>
<td> </td>
<td><a href="http://www.adele.gouv.fr/it06/leblog/wp-content/mysql_wp_web20.pdf">Mysql and Web2.0 companies<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td> </td>
<td>36</td>
<td><a href="http://www.slideshare.net/iwmw/building-highly-scalable-web-applications">Building Highly Scalable Web Applications<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td> </td>
<td> </td>
<td><a href="http://wiki.apache.org/lucene-hadoop-data/attachments/HadoopPresentations/attachments/HadoopApacheConEu07.pdf">Introduction to hadoop<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td>webpage</td>
<td> </td>
<td><a href="http://lucene.apache.org/hadoop/hdfs_design.html">The Hadoop Distributed File System: Architecture and Design<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td> </td>
<td> </td>
<td><a href="http://labs.google.com/papers/sawzall-sciprog.pdf">Interpreting the Data: Parallel Analysis with Sawzall<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td>PDF</td>
<td> </td>
<td><a href="http://cis.poly.edu/suel/papers/odissea.pdf">ODISSEA: A Peer-to-Peer Architecture for Scalable Web Search and Information Retrieval<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td>PDF</td>
<td> </td>
<td><a href="http://www.eecs.harvard.edu/~mdw/papers/seda-sosp01.pdf">SEDA: An Architecture for well conditioned scalable internet services<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td>PDF</td>
<td> </td>
<td><a href="http://www8.org/w8-papers/4c-server/radar/radar.pdf">A scalable architecuture for Global web service hosting service<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td> </td>
<td> </td>
<td><a href="http://wiki.apache.org/lucene-hadoop-data/attachments/HadoopPresentations/attachments/oscon-part-1.pdf">Meed Hadoop<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td>Blog</td>
<td> </td>
<td><a href="http://developer.yahoo.net/blog/archives/2007/07/yahoo-hadoop.html">Yahoo’s Hadoop Support<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td>Blog</td>
<td> </td>
<td><a href="http://developer.amazonwebservices.com/connect/entry.jspa?externalID=873&amp;categoryID=112">Running Hadoop MapReduce on Amazon EC2 and Amazon S3<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td> </td>
<td>53m</td>
<td><a href="http://video.google.com/videoplay?docid=-7096662377647111009">LH*RSP2P : A Scalable Distributed Data Structure for P2P Environment<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td> </td>
<td>90m</td>
<td><a href="http://video.google.com/videoplay?docid=-3750938102931445233">Scaling the Internet routing table with Locator/ID Separation Protocol (LISP)<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td> </td>
<td> </td>
<td><a href="http://wiki.apache.org/lucene-hadoop-data/attachments/HadoopPresentations/attachments/HadoopMapReduceArch.pdf">Hadoop Map/Reduce<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td>Slides</td>
<td> </td>
<td><a href="http://wiki.apache.org/lucene-hadoop-data/attachments/HadoopPresentations/attachments/HDFSDescription.pdf">Hadoop distributed file system<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td>Video</td>
<td>45m</td>
<td><a href="http://video.google.com/videoplay?docid=-8953828243232338732">Brad Fitzpatrick &#8212; Behind the Scenes at LiveJournal: Scaling Storytime<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td>Slides</td>
<td> </td>
<td><a href="http://www.slideshare.net/sekimura/inside-livejournals-backend-april-2004">Inside LiveJournal’s Backend (April 2004)<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td>Slides</td>
<td>25</td>
<td><a href="http://www.slideshare.net/Georgio_1999/how-to-scale-your-web-app">How to scale<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td> </td>
<td>36m</td>
<td><a href="http://www.youtube.com/watch?v=Gw0SfHt_dok">Testing Oracle 10g RAC Scalability<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td>Slides</td>
<td>107</td>
<td><a href="http://ilia.ws/files/phptek2007_performance.pdf">PHP &amp; Performance<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td>Blog</td>
<td> </td>
<td>1217</td>
</tr>
<tr>
<td>8/3/2007</td>
<td> </td>
<td>45m</td>
<td><a href="http://video.google.com/videoplay?docid=6227082417476798530">SQL Performance Optimization<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td> </td>
<td>80m</td>
<td><a href="http://video.google.com/videoplay?docid=-2761803348665601866">Building_a_Scalable_Software_Security_Practice<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td> </td>
<td>59m</td>
<td><a href="http://video.google.com/videoplay?docid=-5699448884004201579">Building Large Systems at Google<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td> </td>
<td> </td>
<td><a href="http://wiki.apache.org/lucene-hadoop-data/attachments/HadoopPresentations/attachments/yahoo-sds.pdf">Scalable computing with Hadoop<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td>Slides</td>
<td>37</td>
<td><a href="http://www.addsimplicity.com/downloads/eBaySDForum2006-11-29.pdf">The Ebay architecture<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td>PDF</td>
<td> </td>
<td><a href="http://labs.google.com/papers/bigtable-osdi06.pdf">Bigtable: A Distributed Storage System for Structured Data<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td>PDF</td>
<td> </td>
<td><a href="http://www.cs.colorado.edu/department/publications/reports/docs/CU-CS-1003-06.pdf">Fault-Tolerant and scalable TCP splice and web server architecture<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td>Video</td>
<td> </td>
<td><a href="http://video.google.com/videoplay?docid=7278544055668715642">BigTable: A Distributed Structured Storage System<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td>PDF</td>
<td> </td>
<td><a href="http://labs.google.com/papers/mapreduce-osdi04.pdf">MapReduce: Simplified Data Processing on Large Clusters<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td>PDF</td>
<td> </td>
<td><a href="http://www.cs.arizona.edu/classes/cs522/fall06/google.arch.pdf">Google Cluster architecture<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td>PDF</td>
<td> </td>
<td><a href="http://labs.google.com/papers/gfs-sosp2003.pdf">Google File System<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td>Doc</td>
<td> </td>
<td><a href="http://download.microsoft.com/download/c/1/5/c15f4833-4642-4662-8ed0-d451728f2293/Scalarch.doc">Implementing a Scalable Architecture<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td>News</td>
<td> </td>
<td><a href="http://news.com.com/2100-1001-275155.html">How linux saved Millions for Amazon<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td> </td>
<td> </td>
<td><a href="http://wiki.apache.org/lucene-hadoop-data/attachments/HadoopPresentations/attachments/oscon-part-2.pdf">Yahoo experience with hadoop<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td>Slides</td>
<td> </td>
<td><a href="http://www.mysqluc.com/presentations/mysql06/kottke_joe.pdf">Scalable web application using Mysql and Java<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td>Slides</td>
<td> </td>
<td><a href="http://www.mysqluc.com/presentations/mysql05/pattishall_dathan.pdf">Friendster: scalaing for 1 Billion Queries per day<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td>Blog</td>
<td> </td>
<td><a href="http://www.ibm.com/developerworks/web/library/wa-ltwebserv/">Lightweight web servers<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td>PDF</td>
<td> </td>
<td><a href="http://dev.mysql.com/tech-resources/articles/application_partitioning_wp.pdf">Mysql Scale out by application partitioning<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td>PDF</td>
<td> </td>
<td><a href="http://www.ssrc.ucsc.edu/Papers/honicky-ipdps04.pdf">Replication under scalable hashing: A family of algorithms for Scalable decentralized data distribution<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td>Product</td>
<td> </td>
<td><a href="http://www.isilon.com/pdfs/white_papers/Clustered_Storage_Revolution.pdf">Clustered storage revolution<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td>Blog</td>
<td> </td>
<td><a href="http://glinden.blogspot.com/2006/05/early-amazon-end.html">Early Amazon Series<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td>Web</td>
<td> </td>
<td><a href="http://meta.wikimedia.org/wiki/Wikimedia_servers">Wikimedia Server info<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td>Slides</td>
<td>32</td>
<td><a href="http://www.nedworks.org/~mark/presentations/san/Wikimedia%20architecture.pdf">Wikimedia Architecture<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td>Slides</td>
<td>21</td>
<td><a href="http://www.slideshare.net/dee987/my-space-presentation/">MySpace presentation<br />
</a></td>
</tr>
<tr>
<td>8/3/2007</td>
<td>PDF</td>
<td> </td>
<td><a href="http://eprints.cdlr.strath.ac.uk/2598/01/ferguson_scaleablefaulttolerant.pdf">A scalable and fault-tolerant architecture for distributed web resource discovery<br />
</a></td>
</tr>
<tr>
<td>8/4/2007</td>
<td>PDF</td>
<td> </td>
<td><a href="http://labs.google.com/papers/chubby-osdi06.pdf">The Chubby Lock Service for Loosely-Coupled Distributed Systems<br />
</a></td>
</tr>
<tr>
<td>8/5/2007</td>
<td>Slides</td>
<td>47</td>
<td><a href="http://develooper.com/talks/real-world-mysql-tuning.pdf">Real world Mysql tuning<br />
</a></td>
</tr>
<tr>
<td>8/5/2007</td>
<td>Slides</td>
<td>100</td>
<td><a href="http://develooper.com/talks/Real-World-Scalability-MySQL-2007-r12.pdf">Real world Mysql performance tuning<br />
</a></td>
</tr>
<tr>
<td>8/5/2007</td>
<td>Slides</td>
<td>63</td>
<td><a href="http://www.art-code.org/files/shibuya_pm_tt07_mogilefs_with_catalyst.pdf">Learning MogileFS: Buliding scalable storage system<br />
</a></td>
</tr>
<tr>
<td>8/5/2007</td>
<td>Slides</td>
<td> </td>
<td><a href="http://www.danga.com/words/2004_pdx_pm_perlbal/perlbal.pdf">Reverse Proxy and Webserver<br />
</a></td>
</tr>
<tr>
<td>8/5/2007</td>
<td>PDF</td>
<td> </td>
<td><a href="http://db.cs.berkeley.edu/papers/hpts85-nothing.pdf">Case for Shared Nothing<br />
</a></td>
</tr>
<tr>
<td>8/5/2007</td>
<td>Slides</td>
<td>27</td>
<td><a href="http://www.cpan.org/authors/id/T/TI/TIMB/Gofer-200707.pdf">A scalable stateless proxy for DBI<br />
</a></td>
</tr>
<tr>
<td>8/5/2007</td>
<td>Slides</td>
<td>91</td>
<td><a href="http://develooper.com/talks/Real-World-Scalability-Web-Builder-2006.pdf">Real world scalability web builder 2006<br />
</a></td>
</tr>
<tr>
<td>8/5/2007</td>
<td>Slides</td>
<td>52</td>
<td><a rel="nofollow" href="http://iphp.com.ua/goto/http://develooper.com/talks/rwws-oscon2005.pdf" >Real world web scalability</a></td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://iphp.com.ua/archives/19/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.niallkennedy.com/audio/fletcher.mp3" length="31973083" type="audio/mpeg" />
<enclosure url="http://www.niallkennedy.com/audio/phpweb20.mp3" length="24353132" type="audio/mpeg" />
		</item>
	</channel>
</rss>

