13 януари 2009

Архитектурата на LiveJournal

Пленителен и детайлен разказ как LiveJournal се разви и мащабира системата си.LiveJournal беше от първите играчи в полето на безплатните блог услуги и срещна проблема с бързото добавяне на голям брой потребители. Публикациите в блоговете започнаха да стават все по-често, което доведе до много операции запис, които са трудно мащабируеми. Опитът на LiveJournal с проблеми при мащабирането може да помогне на вдъхновените разработчици на web услуги.

Източници на информация

  • LiveJournal
  • Google Video
  • Tokyo Video
  • 2005 version
  • Платформи

  • Linux
  • MySql
  • Perl
  • Memcached
  • MogileFS
  • Apache

    Вътрешна организация

  • Мащабиране от 1, 2 и 4 хоста до клъстер.
  • Дублиране при критичните точки.
  • Използване само на MySQL репликация не върши работа.
  • Ограничаването на входно/изходните операции обезмисля мащабирането
  • Разпределяне на четенето и записа за по-голям паралелизъм .
  • Не може да се мащабира чрез добавяне на подчинени сървъри.
  • За максимална продуктивност да се използва подходът Shard. Заделянето се основава на ролите.
  • Кеширане за подобряване на производителността . Кеширане на две нива заради разпределената RAM.
  • Динамично натоварване с Perlbal .
  • Разпределена файлова система за паралелизаъм MogileFS.
  • Разпределяне на работата с TheSchwartz и Gearman за повече паралелна работа.
  • Решаване на постоянните проблеми с връзката.

    Поуки

  • Не се страхувайте сами да си пишете програмно обезпечение за решаване на проблемите си. LiveJournal положиха големи усилия и спомогнаха много за развитието на общността.
  • Малките сайтове с по 1-2 машини могат да се развият до големи системи като следват желанията на потребителите .
  • Ключът към мащабирането е паралелизмът. Премахнете тесните места в системата чрез кеширане , разпределяне на натоварването, sharding, клъстерни файлови системи и използването на повече дискови шпиндели.
  • Репликацията си има цена .Не може просто да се добавят още и още подчинени дискове и да се очаква мащабиране.
  • Проблемите на ниско ниво като избора кой механизъм за обработване на събития от ОС, файловата система и обръщенията към диска са от голямо значение при мащабиране.