Односторонняя репликация между дата-центрами Cassandra

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

Выбор Кассандры был основан на следующих факторах:

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

Оценки данных

  • 250 ТБ прироста в год (50 лет срока службы системы)

Пример использования

У нас есть два центра обработки данных - Operations DC и Analytics DC (для изоляции рабочих нагрузок чтения и записи). В конце поста находится диаграмма, изображающая предлагаемую архитектуру. Из-за ограничений хранилища мы не можем хранить данные, созданные в течение всего срока службы, на Operations DC. Следовательно, мы планируем переместить данные из Operations DC в Analytics DC в соответствии с определенной политикой (скажем, через 1 неделю).

Вопросы

  1. Возможна ли односторонняя репликация в Cassandra между центрами обработки данных? Данные из Operations DC перемещены в Analytics DC. Но данные, сохраненные после обработки в Analytics DC, не должны реплицироваться в Operations DC.
  2. Предоставляет ли Кассандра контроль над тем, что копируется? Мы не хотим, чтобы оба DC были синхронизированы. Мы хотим настроить то, что реплицируется (фактически перемещается) в Analytics DC. Возможно ли это изначально с Кассандрой? Если я хочу указать, что только данные за последнюю неделю должны реплицироваться из Операционного центра данных в Центр данных Аналитики.
  3. Мы планируем использовать встроенную в Cassandra функцию time-to-live для удаления данных (только из операций DC). Данные, удаленные из Operations DC, не должны удаляться из Analytics DC. Как предотвратить репликацию удаленных данных?

  4. Я читал, что один узел Cassandra может обрабатывать до 2-3 ТБ данных. Любые задокументированные ссылки на любые более крупные реализации Cassandra помогут.

  5. Сколько узлов Cassandra нужно развернуть, чтобы справиться с таким ростом? И какая должна быть рекомендованная стратегия развертывания?

  6. Соображения производительности: хотя объем хранилища в Operations DC будет ограничен (данные за 3–7 дней, около 5-10 ТБ), хранилище данных в Analytics DC является накопительным и продолжает расти со временем. Повлияет ли рост базы данных на Analytics DC на репликацию и снизит производительность Operations DC.

Цель здесь - узнать, можно ли использовать встроенную функцию Cassandra для поддержки вышеуказанных требований. Я знаю наиболее очевидное решение. Не иметь репликации между двумя DC. Выгрузите данные за последнюю неделю из Operations DC и переместите их в Analytics DC.

Предлагаемая схема архитектуры


person Jyotin Ranpura    schedule 05.06.2018    source источник
comment
Наем консультанта, который имеет некоторый опыт в хранении 10+ PB в Cassandra, может быть лучшим планом, чем обращение за случайной помощью на сайте вопросов и ответов в Интернете.   -  person Aaron    schedule 06.06.2018
comment
Я понимаю ваше предложение, Аарон. Уже передал это Руководству, и они будут над этим работать. На данный момент мы будем благодарны за любую помощь экспертов.   -  person Jyotin Ranpura    schedule 13.06.2018


Ответы (2)


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

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

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

person Alex Ott    schedule 05.06.2018
comment
Спасибо, Алекс. Прочтите о расширенной репликации DSE, и она кажется вам подходящей. Я хотел бы прояснить свое понимание: развертывание отдельных кластеров - один кластер (пограничный кластер), отвечающий за записи, и другой кластер, отвечающий за чтение (центральный концентратор). - Можем ли мы контролировать эту репликацию? Под контролем я имею в виду планирование этой репликации в указанное время. - Если мы очистим данные из пограничного кластера, будут ли они удалены из центрального концентратора? - Имеет ли пограничный кластер все возможности аналитики по всем данным из Central Hub? - person Jyotin Ranpura; 13.06.2018
comment
Это интересные вопросы, но для ответа на них требуется дополнительная информация и участие специалистов AdvRep. Было бы лучше, если бы вы связались с DataStax, чтобы организовать более подробное обсуждение этих требований ... - person Alex Ott; 15.06.2018

  1. No

  2. Да, репликация настраивается для каждого пространства ключей.

  3. Из коробки это не сработает, но можно заставить работать. Я могу придумать два относительно простых варианта. Самый простой - это пакетная запись в оба пространства ключей / контроллеры домена, одно с TTL и одно без. Вы также можете создать пространство ключей в месяц / год, начать с его репликации на несколько контроллеров домена и при необходимости удалить «нормальный» контроллер домена.

  4. Кластер Cassandra - данные плотность (размер данных на узел) - ищем отзывы и советы

  5. Cassandra может обрабатывать до 800-1000 экземпляров в кластере, но часто рекомендуется использовать сегмент меньшего размера для вашего удобства.

  6. DC могут быть асимметричными.

person Jeff Jirsa    schedule 26.06.2018