|
Персональные инструменты |
|||
|
РИТ:Высокие нагрузки-2008 (Отчет Стаса Фомина)Материал из CustisWikiВерсия от 21:48, 18 августа 2010; StasFomin (обсуждение | вклад) (→Доставка контента пользователям) Это снимок страницы. Он включает старые, но не удалённые версии шаблонов и изображений. Замечания и предложения направлять автору. С учетом того, что материалы, то есть презентации и даже видео в приличном качестве организаторы обещают опубликовать в ближайшее время, ограничусь очень краткими впечатлениями-соображениями о конференции вообще и о докладах по отдельности. Сразу замечу, хотя явно вроде не указано (в списке спонсоров-соорганизаторов десятки значков участников, даже «udaff.com»), что эту конференцию (highload.info, не путать с highload.ru) было бы правильней именовать «Яндекс:Нагрузки», ибо практически «контрольный пакет»
всех докладов был от «Я», также было немало Я-участников в Содержание
Общие соображенияПонравилось
Update: Сейчас, когда в Крокус-сити провели Крокус-метро, аргумент снимается. Проблемы и предложения
Возможно организаторы до последнего пытались заполнить вакансии платными участниками, однако не стоило тянуть до последней секунды. Надеюсь, в следующий раз известят хотя бы за пару дней.
День первыйЧто такое нагрузка
Хороший доклад «еще раз о компьютерной архитектуре от практика-железячника», некие тривиальные основы о «сферическом вебсервере в вакууме».
О проектах, отягощенных производительностью
Очень ценный доклад, наиболее профильный для нашей компании. Докладчик сразу отметил, что сейчас есть два самых распространенных полюса систем:
Но есть и редкий третий тип. Речь зашла о редких высоконагруженных «бизнес-логичных» системах (такие имеет смысл ловить наверно только в ЖКХ — офигически сложные расчеты всяких там льгот, куча транзакций и т. п.), или какой другой массовый биллинг (телекоммуникационный). Банки думаю не — кроме яндекс.денег, любой интернет-банк по нагрузке отдыхает. Ну а дальше докладчик прошелся по всем аспектам разработки таких систем, разрушая мифы, раздавая эпитеты и приговоры различным технологиям:
Другие мысли:
В общем, наверно самый полезный для нас доклад, надо дождаться видео (я даже запросил DVD-диски, может пришлют), и смотреть всем.
Как писать высокопроизводительные сервераЖаркий дискуссионный вопрос. Давным-давно, во времена первого апача, порождавшего при обслуживании пул с трудом переключаемых процессов, все уяснили, что переключение контекста процесса есть штука чудовищно дорогая, и ее надо минимизировать. На помощь пришли методы телекоммуникационщиков из систем реального времени — никакой многозадачности с планировщиком («кузнец нам не нужен»), должна быть однопроцессная система с конечным автоматом (FSM), обрабатывающем события. На таких принципах реалован очень популярный вебсервер статики nginx. Но много минусов — кроме статики он ничего не умеет, стандартные вебфреймворки к нему не прикрутишь. Автор же доклада принес благую весть — треды в apache2 уже достаточно эффективны и хороши, можно держать их тысячами и пользоваться всеми благами апача (или они пока только в BSD хороши, а в линуксе тормозят — уже не помню, но это не принципиально). А если применить собственный механизм переключения облегченных тредов (которых обозвали «зелеными тредами», «ко-рутинами»), то вообще никакого проигрыша конечному автомату не будет. Да, у этих корутин есть некоторые болезни (для переключения используется тот же механизм, что для обработки C++ исключений, поэтому от исключений придется отказаться), но в целом, это прогресс и возможно гвоздь в гроб идеи FSM. Ну еще известна шизофреничная сложность отладки программы с тредами, на что докладчик искренне удивлялся — «зачем отлаживать? не проще ли писать без ошибок?». Вроде как проверено на крупных яндекс-проектах, типа краулера и верхнего уровня поиска. Была жесткая дискуссия, требовали доказательств, цифр, корректного эксперимента. Я лично склонен поверить докладчику. Причем с корутинами думаю не столкнусь, а то что апач2 с тредами хорош (пусть даже чуть хуже FSM) — это хорошо, возможно альтернативы ему отомрут сами со временем. HCS — система хранения данных в РамблереHCS (Hierarchically Compressed Stream) — некая библиотека для реализации некоторой алгебры операций (слияния, фильтрация, агрегация,…) над сверхбольшими плоскими файлами. (1011 строк, 10Tb/ 200Gb обновлений в день). Работает быстро (сравнивали правда с неоптимизированными движками MySQL), но, насколько я понял, это не параллелиться (а ведь есть Hadoop, который вроде как можно было бы применить для этих задач). Вроде готовится к публикации в опен-сорс. Примечание два года спустя — так и не выложили. Сервис хранения данных на базе SQL Server Data ServicesМаркетинговый доклад. Верный признак «чисто маркетинга», когда всякие «архитектурные» картинки рисуются блоками с градиентной заливкой, всякий гламур и анимация на слайдах. По сути некая компиляция whitepaperов разных технологий (SaaS, DaaS, PaaS,… все модные buzzwords, все в кучу). Интерес (судя по заполненности зала) был слабоват. Проблемы работы с большими объемами реляционно слабосвязанных данных в высоконагруженных веб-проектахОчень невнятное название, не шибко внятное содержимое. Типа у нас тут реляционная база и большая нагрузка — давайте выкинем нормальную форму нафиг, но при этом, вместо использования стандартных механизмов хранения часто требуемых данных во всяких NoSQL-кешах, завести опять таки в реляционной БД, специально денормализованные таблицы. В общем и новизны нет, и не похоже, что решение оптимально и вообще адекватно задаче. Насколько я понял, это ребята из команды пытавшейся оптимизировать наследие Фицпатрика, что им так и не удалось[1], и в результате все они покинули проект. Масштабирование системы баннерной рекламы с централизованной базой данныхНесколько топорная (без гениальности, изящества, и т.п.) реализация баннероторговли и баннеропубликации на Oracle. Зачем там Oracle — совершенно непонятно, скорее всего унаследованный код финансовых модулей на PL/SQL, которых лень переписывать, вокруг чего начали воротить все остальное.
Ибо надежность там не нужна, транзакционность и немедленность реакции — тоже
(грузят Бизнес примитивный и надеюсь скоро вымрет, когда баннерорезки будут у всех, кроме полных даунов (и накручивающих трафик роботов), а реклама станет контекстной и уйдет в поисковики. Из интересного — ребята смогли выйти и работают на японском рынке. Я то думал, что японский национализм абсолютен, и гайдзинов брать в разработчики не будут, тем более когда полно своих боевых программистов. День второйSphinx в примерах и задачахМне ужасно стыдно, но я проспал и пришел только к концу. Хотя тема явно интересная, уже есть два эффективных бесплатных и опен-сорс движка полнотекстового поиска — Sphinx и встроенный поиск PostgreSQL (Lucene таки тормозной). Очень интересно кто-кого, и даст ли «синергию» конкуренция и перекрестное опыление. Например в некоторых наших внутренних MySQL-системах я уже подключил Sphinx для поиска, в некоторых — думаю подождать и сразу перейти на PostgreSQL, и делать полнотекстовый поиск с морфологией напрямую в БД. На PostgresQL не перешли, но в трекере теперь используем полнотекстовый поиск MySQL (с морфологией), в принципе, тоже неплохо. Организация асинхронной обработки задачЧастично опоздал, но в целом доклад не оправдал моих ожиданий. Судя по названию можно было бы ждать опыта использования специализированных продуктов — от вендоров, типа Oracle Advanced Queuing (в тезисах говорилось про оракл), IBM WebSphere MQ,…, а может даже и опен-сорс. Увы, рассказали о простом самодельном решении на оракле (очереди на дорогой и жирной РСУБД). Как-то невозбуждающе. Практическое использование Hadoop в системе интернет-статистикиРазумное и модное решение задачи параллельной обработки и агрегации логов посещения сайтов. Используется фреймворк Hadoop (параллельные вычисления в парадигме map/reduce), который для таких задач вроде как идеально предназначен, и в общем-то единственно доступный (опен-сорс), ибо гугловый аналог закрыт, а больше вроде ничего нет. Кластер относительно небольшой (12 восьмиядерников с 8Gb памяти), но справляется. Два прохода:
Ну и всякие там хитрости, вроде все разумно. Опять таки, убьют наверно баннерорезки и этот бизнес. CAS — сервер приложений C++Как-то не. Ждал «сервер приложений на C++». Оказалось, «не сервер», «не приложений», «не C++». То есть ребята написали очередной шаблонизатор, для вызова из скриптовых языков. Вроде как быстрый (судя по картинке-гистограмме с неподписанными осями и без единой цифры), но как-то не то, что ожидалось. Насколько я понял, им он позарез нужен, чтобы спасать от высоких нагрузок написанное на перле поделие Бреда Фицпатрика, что же, посмотрим[2]. Но я в общем, не в теме, шаблонизаторы меня если интересуют, то не с точки зрения максимальной производительности, а с точки зрения максимальной гибкости и удобства для разработки и модификации. Т.е. я готов например, согласится, что XML/XSLT, и Template Toolkit — не ОК, но не знаю, действительно ли все настролько плохо, что нужно изобретать свой велосипед. Виртуализация в среде highload serversВроде по содержанию маркетинговый доклад, подвигающий фишку виртуализации от SWSoft — вместо выполнения виртуальных машин целиком (VMWare, Hyper-V, Virtual PC, VirtualBox, …), на хост машине размещается одно ядро операционной системы, а виртуализуется все остальное — файловая система и все что на ней. Для маркетингового доклада выглядел как-то вяло, но оказалось, что докладывал не маркетолог, а инженер техподдержки (для него это нормально). Выгоды сферической виртуализации в вакууме понятны, угрозы тоже (взлом виртуальной машины высоковероятно приводет к взлому машины хостера, и конец всей сотне виртуальных машин). См. например An Empirical Study into the Security Exposure to Hosts of Hostile Virtualized Environments. Да и без всяких взломов, как выяснилось, трудно рулить физическими ресурсами — например можно ограничить виртуальную память каждой машине, но живую память квотировать нельзя — соответственно одна «оборзевшая» виртуальная машина может поставить «раком» остальных. Сравнений с конкурентами тоже не было. Но тема интересная. Application StreamingЖесткий маркетинговый («парилово») доклад от ENDEAVORS (доклада кстати, не было в программе — вероятно это такой вот метод инкорпорирования «джинсы» в конференцию). Презентация с гламуром и анимацией, причем разработанная видимо зарубежом — ни слова по-русски (даже не локализовали). Суть — очередные модели SaaS, не только как вебприложений, но как скачиваемых в специальную среду rich-приложений, работающих ограниченное время (за плату). Почему-то утверждалось, что CRM-системы на вебинтерфейсе невозможны (вроде как неправда). Постоянно упоминались куча софтварных патентов, за которых этой конторе вынуждены отстегивать собственно производители типа Microsofта, технологии защиты цифрового контента, и прочие штуки, которые я ненавижу. Надеюсь в светлом будущем не придется арендовать фильмы в виде защищенного этой технологией одноразового приложения, а все эти технологии благополучно сдохнут. Пусть разве что останутся честные SaaSовсцы, предоставляющие (пусть за деньги) приложения на своем хостинге. Архитектура Photofile.ruИстория эволюции архитектуры фотохостинга, от совсем любительской (на одном сервере), до более-менее масштабируемой. В деталях, как появлялись разные узкие горла, и какими эвристиками с ними боролись — как включали второй сервер, как перетаскивали файлы, оставляя на их месте симлинки, как делали шардинг через Dynamic DNS и т.п. Алсо, ругали Cache Smarty. В общем, с появлением таких монстропроектов, как «я.фотки», «netprint.ru», с огромным машинным и человеческим ресурсом, с изначально масштабируемой архитектурой, фотофайлу наверно высокие нагрузки более не угрожают. Архитектура и реализация сервиса печати фотографий netprint.ruКрутые парни. Большой промышленный проект — практически уже монополия на фотопечать (почти все фотохостинги печатающие фотки, печатают через них). Типичный пример, как централизованный онлайн-сервис убил все кустарные лаборатории. Архитектура — Java, вроде как разваленная на вебсервисы (JMS), плюс PHP+XCACHE+LightHttpd для вебморды. Кстати, опять таки PostgreQL. Максимальная асинхронность, все операции не более константной сложности, причем константу загоняют до нижнего предела:
Ребята не ведутся на марки, тренды и авторитетов:
Попытался после конференции передать свои пожелания к системе. Например, печать EXIF-дат фото на обратной стороне. Когда я еще печатался в мелкой локальной фотолаборатории, моя самописная утилита переименовывала имена файлов под ISO-дату, и как-раз первые восемь символов имени файла печатались сзади. Очень удобно, легко понять, когда это фото и что. Когда начал печататься в нетпринте, халява закончилась — там все фотки при загрузке переименовывались. Это меня теперь сильно останавливает от печати — не хватало еще усугублять файловый бардак, бардаком с бумажными фото. Подождем, может сделают. На самом деле, им даже не нужно патчить софт в машинах-фотолабораториях, проще написать «переименовывающий фильтр» перед подачей этих файлов в машины. Решение проблем высоких нагрузок на примере проекта Яндекс. ФоткиСервис очень хороший, и докладчики наверно хорошие (редкий зверь — два докладчика, практически «парный конферанс»), но доклад вызвал раздражение и аллергию. Презентация намеренно сделана «банально-попсовой», символы архитектуры заменены всякой порнографией (типа женский бюст — Cisco, банан с двумя апельсинами — сами додумайте и т.п.). Плюс дурацкие фото, как эмоциональная иллюстрация идей. Что-то похожее я видел на презентациях с конференции автоматизаторов торговых сетей — тупые и тривиальные тезисы слайдов засыпаны содержимым с fishki.net чуть более чем полностью. Но возможно это лично мое извращенное мнение, аудитория вроде реагировала живо, наверно понравилось. По сути, конференция — это гибрид похода в кино, театр, тусовку и ресторан одновременно, и народ алкает зрелищ и развлечений. А так типа все круто, масштабируемость, распределенные датацентры, супернадежность (мониторинг мониторинга) — остальным фотохостингам остается или закрыватся, или искать нишу (ЕВПОЧЯ). Доставка контента пользователямОбнаружил, что есть сервис smotri.com, позиционирующийся как самый крутой в рунете. Вообще в этой теме (протоколы передачи видео и т. п.) практически не разбираюсь, посмотрел архитектуру — местами «стандартно фотохостинговая», местами есть специальные гитики. Средняя температура по больнице — 4 минуты на ролик, 250Кб/сек — доставка. Отметил, что пользуются WebDAVом для трансляции операций по загрузке и редактированию и не жалуются. Слегка возбудился, когда докладчик начал утверждать, что маршрутизацию оптимального пути от хранилища видеоконтента до потребителя делают стандартным алгоритмом кратчайших путей на графе с весами обратными пропускной способности — очевидно должна получатся фигня. Тут надо либо специальный BFS-алгоритм использовать, либо вообще, учесть загрузку от передаваемых потоков, может даже линейным программированием попользоваться… — но оказалось (в беседе с автором), что там вообще все на глаз — просто «эксперт» разбрасывает целые оценки ребрам (плохой канал — побольше, хороший — поменьше), а потом кратчайшие пути. Вроде всех все устраивает, другая оптимизация не нужна. Хотя может если видео пойдет в большем качестве, то наконец все упрется не в диски-память, а в сеть, и тут понадобится более серьезная оптимизация.
Примечания и ссылки
Репликация: База Знаний «Заказных Информ Систем» → «РИТ:Высокие нагрузки-2008 (Отчет Стаса Фомина)» Любые правки этой статьи будут перезаписаны при следующем сеансе репликации. Если у вас есть серьезное замечание по тексту статьи, запишите его в раздел «discussion». |
|||||