FoundationDB: распределенная база данных, которую нельзя убить

Если вы видели фильм 1975 года (и культовая классика) «Монти Пайтон и Святой Грааль», вы можете вспомнить Черного рыцаря, рыцаря, настолько решительного охранять проход реки, что даже потеря всех его конечностей не удерживает его от его поста.

Во многих отношениях Foundaldb похож на черный рыцарь баз данных, способный продолжать работать, даже когда предпринимаются множество попыток прервать свои операции, отметил Питер Борос, основатель для Data Data, поставщика услуг хранения объектов, выступая на Summit Open Source Foundation Foundation в Северной Америке.

Для Foundationdb процесс «неудача — это просто царапина», сказал он. Сама, Foundationdb устойчив. С помощью Kubernetes он становится в значительной степени пуленепробиваемой.

И для своего выступления он продемонстрировал, как трудно было сбить экземпляр распределенного хранилища стоимости транзакционных ключей.

Сначала он показал, что произойдет, если вы сбиваете один узел в автономном режиме, то что произойдет, отбивая случайные узлы каждую минуту, а затем каждые 10 секунд. Затем он показал, что произойдет, если сервер журналов пойдет вниз.

Во всех случаях база данных быстро восстановилась. Иногда служба замедлилась с точки зрения обслуживания запросов в секунду (QPS). И в серьезных случаях это может кратко выйти в автономном режиме, но всегда возвращалось в оперативное состояние.

В качестве инженера по надежности сайта (SRE) для Tigris, Day Boros’s Dab — поддерживать тысячи баз данных (в основном сорта MySQL). Tigris запускает S3-совместимые магазины объектов, которые доступны во всем мире.

В настоящее время Tigris использует FoundationDB, работающий на Kubernetes, для хранения метаданных для службы хранения объектов в масштабе Petabyte, и поэтому он обслуживает миллиарды запросов в день.

FoundationDB-это «малоизвестная база данных с открытым исходным кодом, но очень безрассудно»,-сказал Борос. Это конкурирует с такими такими такими такими такими тарпактами, TIDB и YugabytedB.

База данных микросервисов

Петр расточительна.

Архитектурно, Foundationdb построен из микросервисов, что означает, что различные части системы управляются отдельными компонентами.

Как и любое хорошее приложение, основанное на микросервациях, многие компоненты (то есть прокси-коммитировку, резолювер, работник, секвенсор) являются без сохранения состояния, что означает, что они не хранят данные. И поэтому, когда они терпят неудачу, их можно быстро заменить на идентичные единицы.

Архитектура предлагает ряд преимуществ, хотя поначалу они могут показаться как ограничения.

Главная особенность/ограничение заключается в том, что он имеет пятисекундную тайм-аут на всех транзакциях. По словам Бороса, это ограничение для принятия.

Этот предел не настраивается. «Через пять секунд ваша сделка закончилась», — сказал он.

Этот предел позволяет FoundationDB быстро восстанавливаться после плохой транзакции.

«Плохие вопросы невозможно, потому что через пять секунд ваша сделка будет убита. И вот и все», — сказал он. Больше не будет у вашей базы данных, потому что разработчик написал несколько плохих SQL.

Аналогичным образом, ключ может быть только 10 КБ или меньше, а значение может варьироваться до 100 КБ. Плюсы? Нет плохих запросов, длинных транзакций или грязных проблем с отменой, чтобы назвать несколько.

Также администратор также не будет испытывать что -то вроде проблемы MongoDB «Jumbo Chunk», в которой куски данных настолько велики, что они застряли в базе данных.

«Эти ограничения на самом деле помогают вам в масштабе», — сказал он.

Программное обеспечение работает как единый поток, хотя производительность может быть повышена посредством параллелизма, запуская индивидуальный процесс на нескольких серверах. FoundationDB предлагает строгую сериализацию, что означает, что транзакции привержены базе данных в том порядке, в котором они были выполнены.

Tigris использует самую простую форму репликации данных, доступной на FoundationDB, либо двойной (вторая копия данных сделана), либо тройной, в случаях глобальных баз данных.

FoundationDB имеет «очень хороший» оператор Kubernetes, который использует Tigris. Оператор Kubernetes — это набор инструкций, которые сообщают Kuberentes, как развернуть (или перераспределять) приложение.

Оператор FoundationDB был построен Apple, которая также управляет FoundationDB на K8S.

Простое рану из плоти

Running Foundationdb на Kubernetes предлагает два уровня устойчивости. Борос объяснил, что как оператор, так и сама база данных являются самовосстанавливающимися. Это означает, что они могут автоматически выполнять отказы.

Boros предоставил пример экземпляра FoundationDB, который хранит три копии каждого бита данных по нескольким стручкам (12 в примере Boros, предоставленных):

Стручки, удерживающие ключевые диапазоны, каждый цвет определяет различный диапазон. Каждый ассортимент имеет три копии, распределенные по 12 стручкам.

В приведенном выше примере, когда стручка снижается, дополнительные копии данных по -прежнему фиксируются на двух других узлах. Отказ узела запустит оператора, чтобы запустить другой узел (или, с точки зрения FoundationDB, еще один процесс), причем все потерянные данные были восстановлены из других узлов.

Этот процесс восстановления восстанавливает потерянные данные быстро, потому что они получают не из одного узла, а от двух, параллельно.

Каждый процесс хранения имеет индивидуальную возможность регистрации, которая отражает все изменения в базе данных. Если процесс журнала не сбои, он заменяет данные из других процессов журнала.

Откусить коленные шоссе

Для этой презентации Boros провел ряд тестов на устойчивости прогрессивной серьезности по сравнению с небольшим тестовым кластером Kubernetes с 8 серверами с 96 ядрами каждый, 1 ТБ+ памяти и подключение NVME. Тесты были завершены до презентации, и Борос суммировал результаты для аудитории.

Он использовал V7.3.63 FoundationDB (с двигателем хранения Redwood), который наступал на 9 серверов, в общей сложности 72 процесса хранения.

Спецификации на стороне клиента для тестирования.

Первым случаем был сбой одного стручка. Используя Kubectl, Boros просто убил бегущий стручок. Оператор быстро исправил капсул и вернул его онлайн без необходимости копирования каких -либо данных.

Легко-писание.

Таким образом, Boros зацикливал рутину, чтобы убивать стручок каждую минуту, результаты, для которых были проиллюстрированы на графике ниже. Желтая линия показывает время простоя:

Визуализация была создана FDB-экспортером Tigris.

Опять же, никаких нарушений в эксплуатации, так как стручок был быстро восстановлен.

Как насчет петли, которая вынимает стручок каждые 10 секунд? Опять же, оператор Foundation быстро восстановился через повторные перебои. Хотя здесь, к тому времени, когда один стручок восстановлен, другой потерпел неудачу. Нет времени простоя, и никаких данных не нужно было скопировать, хотя база данных находилась в «нездоровом» состоянии в течение коротких периодов времени (то есть у нее не было второй копии данных).

Несмотря на то, что перебои в капсулах происходили чаще, QPS оставались почти последовательными.

Как эти отключения повлияли на производительность? Тестовая система была разработана, чтобы предложить около 50 000 QP. По мере того, как тестирование стало более агрессивным, QP немного погрузились, но база данных не осталась в автономном режиме.

И, как только тестирование было завершено, QPS вернулись в свое обычное состояние.

«Такого рода время восстановления не является нормальным для других баз данных», — сказал Борос.

В третьем тесте Борос убил все узлы хранения.

Этот тест, наконец, сделал базу данных недоступной — но только в течение короткого периода времени.

Текст слишком мал, чтобы читать, но центральный график показывает FoundationDB кратко копирование данных перед остановкой.

Через минуту база данных была запущена, и нормальные QP были восстановлены, когда оператор быстро перезапустил стручки, и они присоединились к кластеру.

Оператор начал копирование данных для все еще пропускающих стручков, но прекратил эту операцию, когда другие стручки вернулись.

Неудачи журнала? Мы видели хуже

Когда журнал базы данных выйдет в автономном режиме, результаты обычно являются катастрофическими. В конце концов, журналы отслеживают сбои узлов.

Убийство одного журнала в Foundationdb привел к пятисекундному киоску в ответах.

То же самое относится и к многочисленным сбоям журнала, на одну минуту, хотя в этом случае пропускная способность временно сглаживается при 0 QPS:

Оператор FoundationDB отлично справляется с тем, чтобы сохранить базу данных в живых, но FoundeDB также обладает встроенной способностью.

«Самовосстановление работает с существующими процессами».

FoundationDB гарантирует, что различные копии данных существуют в различных зонах доступности. Зона может быть одним из выборов администратора. Каждая зона может быть другой стойкой, отдельным сервером, отдельными именами хоста или реальной географической зоной.

Таким образом, даже если вы убиваете все узлы в одной зоне, FoundationDB может восстановиться.

Борос проходил через случаи сбоев хранения без присутствия оператора. Это имитирует случаи, когда стручки не могут вернуться, такие как сбои с стойкой.

Здесь один сбитый узел запускает копию данных, и поэтому требуется немного больше времени для появления узла, а QPS соответственно падает.

В тесте Boros была восстановлена целая зона в течение трех минут, что потребовалось для воссоздания каждого стручка и заполнять его данными из других стручков, используя быстрые параллельные передачи.

В целом, до шести узлов могут потерпеть неудачу «если они потерпят неудачу достаточно медленно», сказал он.

По мере того, как больше зон провалится, необходимо будет скопировать больше данных, и поэтому время восстановления увеличивается. Отказ узла может занять несколько часов, чтобы полностью восстановиться в этом процессе.

«Если вы хотите иметь потрясающее время восстановления, ваш кластер должен быть достаточно большим», — сказал он.

Отказы журнала без оператора имеют сходное время восстановления с теми, у кого операторы.

Boros также обсудил режимы резервного копирования и аварийного восстановления Foundation в обсуждении. Но вывод ясен: Хотите охранять мост? Нанимайте черного рыцаря. Хотите транзакционную базу данных, которая никогда не уходит? Рассмотрим Foundationdb.

Попробуйте здесь службу хранения объектов Tigris и наслаждайтесь всей презентацией Боро ниже:

Фонд Linux спонсировал поездки этого репортера на вершину с открытым исходным кодом.

Trending Stories youtube.com/thenewstack Tech движется быстро, не пропустите эпизод. Подпишитесь на наш канал YouTube, чтобы транслировать все наши подкасты, интервью, демонстрации и многое другое. Группа подпишитесь с эскизом. Joab Jackson является старшим редактором нового стека, охватывающего облачные нативные вычисления и системы системы. Он сообщил об инфраструктуре и развитии IT более 25 лет, в том числе в IDG и государственных компьютерных новостях. До этого он … читал больше от Джоаба Джексона

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *