После статьи об архитектуре connect.ua многие спрашивали о подсистеме обслуживания медиа файлов, поэтому в этой статье речь пойдет о масштабируемых и производительных системах обслуживания медиа.
Что такое подсистема хостинга медиа вообще? Это часть системы, которая отвечает за загрузку, сохранение, преобразование (транскодирование) и отдачу медиа файлов. Зачастую эта система является наиболее ресурсоемкой ввиду больших объемов данных и процессорных затрат.
Connect.ua — це перший український соціальний сервіс. За два роки проект виріс у досить великий, а отже має свою власну історію масштабування і зростання.
Під час росту ми перепробували велику кількість технологій та підходів, якими я і хочу поділитися в цій статті.
У цій статті поговоримо про один із найбільш гучних і зростаючих проектів — Twitter.com (далі — Твіттер).
Розробка і розвиток цього проекту збігається із класичною схемою вдалого стартапу. Стартував проект з простенького прототипу, написаного нашвидкоруч на платформі Ruby-on-Rails. Після цього в проекті була зроблено величезна кількість змін в архітектурному і технічному плані. Твіттер не раз стикався і долав проблеми швидкого зростання навантаження.
У цій статті розглянемо проблеми, які можуть виникати при кешуванні важких запитів. Під важкими запитами слід розуміти не тільки повільні, але і ресурсомісткі запити (наприклад, звернення до зовнішніх XML джерел з наступною обробкою). Найбільш стандартні ситуації — це важкі SQL вибірки на сторінках з агрегационною інформацією (популярні відео клiпи, кращі фотки, найактивніші користувачі тощо). На перший погляд все просто — кешуємо на годину… дві і забуваємо про ці запити на довгий час. Які проблеми можуть виникнути в ході збільшення навантажень?
Для начала, некоторые поразительные показатели проекта Ebay.com:
— Более 89 миллионов активных пользователей
— 190 миллионов товаров в 50 тыс. категорий
— Более 8 миллиардов URL запросов в день
— Большая динамика развития — сотни новых функциональных улучшений каждые 3 месяца
— 39 стран, 9 языков, 24 часа в сутки, 7 дней в неделю, круглый год
— 70 миллиардов операций чтения/записи в день
— Обработка 50 Тб данных в день
— Анализ 50 Пб данных каждый день
Цікавий опис підходу до поєднання MySQL+Memcached коли сервери є розподілені географічно.
Описані проблеми цілісності кешу та проблеми, які можуть виникнути коли буде розсинхронізація даних.
Стали доступними з самої більшої Java конференції JavaOne.
Для доступну до файлів необхідно зареєструватись на Sun Developer Network (SDN).
Кількість та якісь презентацій є дуже хорошою. Цікаво буде всім, навіть не джавістам.
Наприклад:
Best Practices for Large-Scale Web Sites: Lessons from eBay
JDBC? We Don't Need No Stinkin' JDBC: How LinkedIn Scaled with memcached, SOA, and a Bit of SQL
Google App Engine: Java Technology in the Cloud
Monkeybars: Tools-Enabled Swing Development with JRuby
Clojure: Dynamic Functional Programming for the JVM Machine
What's New in Groovy 1.6?
The Feel of Scala
Tips and Tricks for Ajax Push and Comet Applications
Drizzle: A New Database for the Cloud
Hadoop, a Highly Scalable, Distributed File/Data Processing System Implemented in Java Technology