
После статьи об архитектуре connect.ua многие спрашивали о подсистеме обслуживания медиа файлов, поэтому в этой статье речь пойдет о масштабируемых и производительных системах обслуживания медиа.
Что такое подсистема хостинга медиа вообще? Это часть системы, которая отвечает за загрузку, сохранение, преобразование (транскодирование) и отдачу медиа файлов. Зачастую эта система является наиболее ресурсоемкой ввиду больших объемов данных и процессорных затрат.
Читать далее…

Connect.ua - это первый украинский социальный сервис. За два года проект вырос в достаточно крупный, а следовательно имеет свою собственную историю масштабирования и роста.
Во время роста мы перепробовали большое количество технологий и подходов, которыми я и хочу поделиться в этой статье.
Читать далее…

В этой статье поговорим об одном из самых шумных и растущих проектов - Twitter.com (далее - Твиттер).
Разработка и развитие этого проекта совпадает с классической схемой удачного стартапа. Стартовал проект с простенького прототипа, написаного на скоркую руку на платформе Ruby-on-Rails. После этого в проекте было сделано огромное количество изменений в архитектурном и техническом плане. Твиттер не раз сталкивался и преодолевал проблемы быстрого роста нагрузки.
Разработчики Твиттера делятся своим опытом.
Читать далее…

Ebay - один из самых больших интернет проектов сегодня во всех смыслах, в том числе и по техническим показателям. Рэнди Шуп, архитектор проекта, делится опытом в вопросах масштабирования. Он подготовил отличную презентацию, в которой касается не только практических вопросов, но и общих принципов “того, как нужно думать при построении крупных масштабируемых систем”.
Читать далее…

Мы не раз обсуждали вопросы производительности и масштабирования систем (этому и посвящен этот блог). Тем не менее, иногда очень полезно возвращаться к истоку этих понятий. Это важно для понимания их сути, а следовательно и для того, чтобы принимать правильные решения в нужные моменты времени.
Зачастую эти два понятия тесно связаны, но представляют собой два абсолютно разных свойства системы:
- Производительность - способность системы выполнять операцию за определенное допустимое время (другими словами, достаточно быстро)
- Масштабируемость - способность системы справляться с увеличивающимися нагрузками (обычно - путем наращивания аппаратных ресурсов)
Читать далее…

Создано на wordle
Эта картинка обычно отражает мысли человека, перед которым стоят два факта:
- Система растет
- Производительность падает
Закапываясь в проблемы производительности и масштабирования, мы зачастую забываем и путаем что и зачем мы делаем. В этой статье мы вернемся к первым вопросам, на которые необходимо отвечать постоянно, что-бы не збиваться с курса.
Читать далее…
Все мы слышали о Facebook.com и все можем только представляеть себе те объемы данных, с которыми вынуждены работать бекенды этой системы.
При их объемах они упираются в ограничения стандартных решений - будь то цена либо производительность. Как же они решают задачу управления данными и их хранения?
Читать далее…
В этой статье описывается процесс настройки отказоустойчивого двухузлового балансировщика нагрузки с активной/пассивной конфигурацией, поддержкой сессий и механизма Failover на базе Perlbal/Heartbeat под управлением Debian. Балансировщик работает между конечным пользователем и двумя backend-серверами, которые отдают некий контент. (В нашем примере это два сервера с установленным Apache). Балансировщик не только проксирует запросы к бэкэнду, он еще и проверяет состояние бэкэнда и, в случае отказа, перенаправляет запросы к другому серверу (failover). Вдобавок, ведется постоянный мониторинг бэкэнд-серверов при помощи Heartbeat и, если master-сервер “лежит”, то slave автоматически становится мастером. Ваши пользователи не заметят сбоев в работе сервиса.
Читать далее…
В ходе строительства ряда крупных распределенных систем я наблюдал некоторые вещи, которых не стоит делать при построении таких систем. Я назвал их “наихудшие практики масштабирования”. Большинство из этих вещей сначала могут показаться достаточно невинными, но, если ими пренебречь, они поставят под угрозу рост и масштабируемость системы. На сегодня написано достаточно много статей на тему построения и развития масштабируемых систем, но в этой статье мы сосредоточимся на том, чего следует избегать.
Читать далее…
Комментарии