HighLoad.org – блог о высоких нагрузках
HighLoad.org > Скажите да NoSQL. Cassandra на старт!

Скажите да NoSQL. Cassandra на старт!
2010-03-12 21:25 my_fess 
Последние шесть месяцев были очень интересными для команды разработчиков Digg. Мы решили все переписать с нуля. Мы не только переписывали весь код приложения, но и запускали новую серверную и клиентскую архитектуру. Ну и, чтобы не мелочиться, мы заодно меняли большую часть нашей инфраструктуры и переезжали с LAMP. Возможно, самым крупным нашим изменением был отказ от MysQL в пользу NoSQL. Для кого то вроде меня, кто уже 20 лет занимается разработкой систем почти исключительно на реляционных базах данных, это было смелым шагом.

Что не так с MySQL?

Нашим главным мотивом ухода от MySQL была увеличивающаяся сложность построения приложения, которое было бы высокопроизводительным, с большой нагрузкой на запись на множестве данных, которое быстро растет и не собирается останавливаться. Этот рост вынудил нас использовать горизонтальные и вертикальные стратегии партицирования, которые уничтожили весь смысл реляционной базы данных, при этом накладные расходы были велики. Технология реляционных баз данных становится неудобным инструментом и мы хотим найти инструмент, который лучше подходит для наших специфических требований. Наша область, новости, не удовлетворяет строго требованиям согласованности, поэтому (по теореме Бреуера) мы можем выиграть в доступности и устойчивости к сбоям узлов (например, в выполнении операций, даже в несогласованных системных состояниях). Мы уверены, что наши разработчики смогут обеспечить уровень согласованности намного лучше, чем это делает MySQL в общем случае. С ростом нашей системы, для нас важно использовать больше дата-центров для избыточности и улучшения сетевой производительности и добавлять емкость или заменять упавшие узлы без задержки. Мы планируем продолжить использование обычного дешевого железа, и продолжим допускать, что оно будет регулярно отказывать. Такой подход становится все сложнее, если использовать MySQL.

В поисках альтернативы

Digg предан использованию и разработке опен-сорс продуктов и мы рады не платить лишнего за проприетарные высокомасштабируемые решения. Google и Amazon вдохновили нас широким использованием своих нереляционных систем BigTable и Dynamo. Мы провели оценку всех оупенсорсных NoSQL-кандидатов. После продолжительных дебатов, мы решили остановиться на Cassandra. В двух словах, Cassandra - это распределенная база данных с моделью данных BigTable, работающей на инфраструктуре, подобной Dynamo. Она колонко-ориентирована и допускает хранение относительно структурированных данных. Ее модель полностью децентрализована; все узлы идентичны и единого слабого места не существует. Также, она очень нечувствительна к ошибкам; данные реплицируются на несколько узлов и дата-центров. Cassandra является очень эластичной; пропускная способность на чтение и запись увеличивается линейно с добавлением новых машин. Мы экспериментировали на нашем сайте, заменяя довольно высокомасштабируемый компонент MySQL на Cassandra. Эти тесты прошли хорошо. Вы можете прочитать об этих экспериментах больше здесь.

Где мы сейчас

На данный момент, большая часть функциональности Digg использует Cassandra как главное хранилище данных. Мы добавили индексирование, основанное на Cassandra, использующее полнотекстовые, реляционные и графовые системы индексирования. Мы начинаем привыкать к конечной согласованности. Также, мы работали непосредственно над Cassandra. Мы сделали несколько значительных улучшений производительности: увеличенная скорость сравнений, добавили лучшее compaction threading, уменьшили накладные расходы при логировании, добавили кэширование на уровне строк, и внедрили возможность одновременной выборки нескольких записей. Мы также ввели нативные атомарные счетчики, используя Zookeeper (вы наверняка догадаетесь, почему мы так хотели сделать это =)) Мы протестировали и улучшили наши операционные возможности Cassandra, улучшая ее Rackaware способность, добавили логирование медленных запросов, улучшили массовый импорт и сделали поддержку Scribe для улучшения логирования. Также мы провели кучу операционных тестов. Вся наша работа над Cassandra открывается в opensource.

Что дальше?

Сейчас наша главная задача - запустить последний релиз Digg в широкий доступ, но мы продолжим наш путь в первых рядах разработки и адаптации Cassandra. Если вы хотите присоединиться к команде мирового класса, использующей передовые технологии NoSQL-масштабирования, проверьте http://jobs.digg.com

Автор статьи: John Quinn. VP Engineering. Дата: 9 марта 2010 Оригинал статьи


комментарии [0]  | комментировать

  © 2010-2018 HIGHLOAD