- PVSM.RU - https://www.pvsm.ru -
Одноклассники – самый крупный пользователь Apache Cassandra в Рунете и один из крупнейших в мире. Мы начали использовать Cassandra в 2010 для хранения оценок фото, а сейчас под управлением Cassandra находятся петабайты данных на тысячах нод, более того, мы даже разработали свою собственную NewSQL транзакционную БД [1].
12 сентября в своём петербургском офисе мы проведем второй митап, посвященный Apache Cassandra [2]. Основным спикером мероприятия станет станет главный инженер Одноклассников Олег Анастасьев. Олег – эксперт в области распределённых и отказоустойчивых систем, он работает с Cassandra уже более 10 лет и неоднократно рассказывал об особенностях эксплуатации этого продукта на конференциях [3].
В преддверии митапа мы поговорили с Олегом про отказоустойчивость распределённых систем с Cassandra, поинтересовались о чем он будет рассказывать на митапе и почему стоит посетить это мероприятие.
Олег начал карьеру программиста в далеком 1995 году. Разрабатывал ПО в банковской сфере, телекоме, транспорте. Работает ведущим разработчиком в Одноклассниках с 2007 года в команде платформы. В его обязанности входит разработка архитектур и решений для высоконагруженных систем, больших хранилищ данных, решение проблем производительности и надежности портала. Также занимается обучением разработчиков внутри компании.
— Олег, привет! В мае состоялся первый митап [4], посвященный Apache Cassandra, участники говорят, что обсуждения шли до поздней ночи, скажи, пожалуйста, какие у тебя впечатления от первого митапа?
Пришли разработчики с разным бекграундом из различных компаний со своей болью, неожиданными решениями проблем и удивительными историями. Нам удалось провести большую часть митапа в формате дискуссии, но обсуждений было так много, что мы смогли затронуть лишь треть намеченных тем. Много внимание уделили тому, как и что мы мониторим на примере наших реальных production-сервисов.
Мне было интересно и очень понравилось.
— Судя по анонсу, второй митап [2] будет полностью посвящен отказоустойчивости, почему выбрали именно эту тему?
Cassandra это типичная нагруженная распределённая система с огромным количеством функциональности помимо непосредственного обслуживания пользовательских запросов: gossip, обнаружение сбоев, распространение изменений схемы, расширение/уменьшение кластера, anti-entropy, бекапы и восстановление и т.д. Как и в любой распределённой системе с ростом количества железа растёт вероятность сбоев, поэтому эксплуатация production кластеров Cassandra требует глубокого понимания её устройства для предсказания поведения в случае сбоев и действий оператора. В процессе многолетнего использования Cassandra мы накопили значительную экспертизу [5], которой готовы поделиться, а также хотим обсудить, как коллеги по цеху решают типичные проблемы.
— Когда речь заходит о Cassandra, что ты понимаешь под отказоустойчивостью?
В первую очередь, конечно, способность системы переживать типичные сбои железа: потерю машин, дисков или сетевой связности с нодами/датацентрами. Но сама тема гораздо шире и в частности включает в себя восстановление после отказов, в том числе отказов, к которым люди редки бывают готовы, например, ошибок оператора.
— Можешь привести пример самого нагруженного и самого большого кластера данных?
Один из наших самых больших кластеров — это кластер подарочков: больше 200 нод и сотни ТБ данных. Но он не является самым нагруженным, поскольку прикрыт распределённым кешем. Наши самые нагруженные кластера держат десятки тыс. RPS на запись и тысячи RPS на чтение.
— Ого! Как часто что-нибудь ломается?
Да постоянно [6]! Суммарно у нас больше 6 тыс. серверов, и каждую неделю пара серверов и несколько десятков дисков идут под замену (без учёта параллельных процессов апгрейда и расширения парка машин). Для каждого вида отказа прописана чёткая инструкция, что и в каком порядке делать, всё по возможности автоматизировано, поэтому отказы являются рутиной и в 99% случаев происходят незаметно для пользователей.
— Какие вы боретесь с подобными отказами?
С самого начала эксплуатации Cassandra и первых инцидентов мы проработали механизмы резервных копий и восстановления из них, построили процедуры deploy, которые учитывают состояние кластеров Cassandra и, например, не дают перезапускать узлы, если возможна потеря данных. Про всё это мы планируем поговорить на митапе.
— Как ты сказал, абсолютно надёжных систем не существует. К каким видам отказов вы готовитесь и способны пережить?
Если говорить о наших инсталляциях кластеров Cassandra, пользователи ничего не заметят, если мы потеряем несколько машин в одном ДЦ или целиком один ДЦ (такое случалось). С ростом количества ДЦ, думаем о том, чтобы начать обеспечивать работоспособность в случае сбоя двух ДЦ.
— Чего на твой взгляд не хватает Cassandra в плане отказоустойчивости?
Cassandra как и многие другие ранние NoSQL хранилища требует глубокого понимания её внутреннего устройства и происходящих динамических процессов. Я бы сказал, что ей не хватает простоты, предсказуемости и наблюдаемости. Но будет интересно услышать мнение других участников митапа!
Олег, большое спасибо что нашел время ответить на вопросы!
Мы ждем всех, кто хочет пообщаться с экспертами в области эксплуатации Apache Cassandra на митап 12 сентября в свой петербургский офис.
Приходите, будет интересно!
Зарегистрироваться на мероприятие. [2]
Автор: Александр Анисимов
Источник [7]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/nosql/329484
Ссылки в тексте:
[1] NewSQL транзакционную БД: https://habr.com/ru/company/odnoklassniki/blog/417593/
[2] второй митап, посвященный Apache Cassandra: https://oktech.timepad.ru/event/1041843/
[3] рассказывал об особенностях эксплуатации этого продукта на конференциях: https://www.youtube.com/watch?v=k2efjgRxMp8
[4] первый митап: https://habr.com/ru/company/odnoklassniki/blog/449532/
[5] накопили значительную экспертизу: https://youtu.be/zfmwd52VuQ0
[6] Да постоянно: https://youtu.be/9TlHn4_Wfts
[7] Источник: https://habr.com/ru/post/465475/?utm_source=habrahabr&utm_medium=rss&utm_campaign=465475
Нажмите здесь для печати.