Демистификация общего процесса интеграции промежуточного программного обеспечения [Canal в качестве примера]

Java Архитектура

Фон синхронизации данных

Зачем синхронизировать данные? Поскольку данных много, ими необходимо делиться или использовать для других целей. Например, вы копируете небольшой фильм с мобильного жесткого диска на свой Macbook для оценки, также называемой数据同步. Но система не проще вашей, и использует всякие странные сценарии. Синхронизация данных, любите вы это или нет, но вы всегда будете ее встречать, она будет ждать вас в определенное время, и вы ее увидите.

Эй, разве это не от А до Б, труба может покрыть это.

Введение в канал

Чтобы закончить работу красиво в ограниченное время, иногда не обязательно концентрироваться на проблемном центре, копать глубоко и учитьсяbinlogсинхронизация никоим образом не улучшит ваш рабочий процесс. Добавьте его в список исследований, лучше заниматься в свободное время, не нужно держать голову в воде, чтобы ощутить вкус удушья. Что ж, централизованную синхронизацию данных о проблеме выполнили для вас инженеры Али, просто позвонитеCanal, решение является наиболее часто используемымMySQLПроблемы с синхронизацией базы данных в другом месте. Сегодня мы говорим об интеграции Canal, а не о реализации Canal в деталях. Другие в окружающей стройке не хотят говорить вам, что дама и сестра любят поболтать с вами.

Canalмаскироваться подMySQL从库От других真正的MySQL库Вытащите информацию, понял, что этоMySQLНабор протоколов, после того, как данные передаются, вы можете играть, как вы хотите. вещи хорошие вещи, ноgithubВверхwikiДокументация навевает сонливость, а раз уж мы заговорили об архитектуре, то давайте поговорим о том, как сделать так, чтобы инженеры чувствовали себя непринужденно.你的Canal.

Формат данных

просто скажиCanalформат данных, согласноgithubОфициальную документацию можно просто запустить.CanalВозможность синхронизации большинстваDCL,DML,DDL, мы обычно также заботимся оINSERT,UPDATE,DELETEвызвало изменения. ЭтоCanalИнтерпретация данных - это то, на что это похоже, мы можем использовать карту для иллюстрации.

можно увидетьUPDATEтакже включают变更前а также变更后значение, вся необходимая информация доступна. С этими данными небо и земля могут сделать что угодно.

Обычный архитектурный шаблон — рассматривать только входы и выходы. Большинству пользователей все равно, как реализована ваша система, все заняты и не обязательно заинтересованы. Ему просто нужно, чтобы вы сказали ему окончательное использование и выходной формат.

Общая высокая доступность

Итак, какие элементы необходимо задействовать в разработке и использовании? У нас тоже такая же картина (только рассмотрим режим master-slave кластера, одиночная машина иM/Mне о чем говорить).

Очень Легко, не так ли?ZKконтрольHA, заодно зафиксировать ход потребления, как ни посмотри на этоKafkaТрюк такой. Но вот несколько моментов, на которые стоит обратить внимание:

  1. чтобы убедиться, чтоbinlogНормальная тяга, одновременно работает только один сервер Canal, остальные теневые лол
  2. Для обеспечения нормального потребления одновременно может работать только один клиент, а остальные - тени лол
  3. binlogРекомендуемое использованиеROWрежим, но может бытьupdateЗаявления разрывают вашу память и разбивают ваши яйца
  4. Канал сам по себе не имеет возможности сохраняться и потребляет много памяти.

Далее мы моделируем их смерть по порядку. Рассмотрим следующую картинку.

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

Дамы и господа, напоминаем, что архитектура должна учитывать каждый сценарий взаимодействия и экстремальную ситуацию. Чем больше вы готовитесь, тем лучше вы спите. Кроме скучных людей, бросающих вам вызов (да, тех, кто高可用Это также может сэкономить больше времени для изучения более важных вещей.

ЗК вылетает

ZooKeeperТакой надежный, зачем имитировать его крах? потому что не исключено机房断电возможно. Почему мы говорим о ЗК в первую очередь? Из рисунка видно, что влияние смерти Zk на систему огромно. Конечно, это всего лишь вероятность, в конечном итоге она будет выведена.SLA服务质量, для удовлетворения потребностей.

Конечно, не исключено, что существуют какие-то внешние факторы обсессивно-компульсивного расстройства, влияющие на вашу высокую доступность. В дополнение к номеру расширения вы можете интегрировать в код, например,ZKсмерть, пойдем прямоCanal. Вы должны рассмотреть, являются ли затраты на разработку и достигнутые выгоды адекватными.

Некоторые компании уделяют особое внимание маловероятным событиям еще до того, как они пукнут, а сама проблема становится второстепенной. У такой компании есть проблемы, попробуйте убедить ее.

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

Канал рушится

Canal集群模式已经通过ZK做了HA,你要做的,就是模拟一遍。 включать:

  1. Когда происходит сбой одного, появляются ли другие экземпляры?
  2. Все вылетело, можно ли нормально запустить после выхода в интернет?
  3. После длительного отсутствия в сети есть ли какие-либо другие проблемы, когда вы внезапно подключаетесь к сети?
  4. проблема с памятью. Канал очень требователен к памяти, и параметры можно настроить так, чтобы он не переполнялся, а блокировался.

Сбой клиента

Падение Клиента на самом деле не имеет значения. Но из-за странных способов реализации тоже будут происходить странные вещи. Эта часть в основном посвящена методу использования, который можно отметить в мерах предосторожности. Проиллюстрируем кодом:

  1. Код имеет два слояwhileПетли, если будет только один слой, будут проблематичны (думаю, что просить)
  2. код имеетACKМеханизм подтверждения, код показывает подтверждение и откат. Но если ваша обработка выполняется в несколько потоков, можно пропустить сообщения.
  3. сообщение имеетbatch, поэтому неизбежно будет повторное потребление.Поддерживает ли ваш бизнес идемпотентность?

MySQL аварийно завершает работу

  1. Может ли Canal нормально вытащить binlog после того, как MySQL вернется в сеть?
  2. После переключения master-slave нужно ли модифицировать Canal?Как дополнить данные?

Периферийное расширение

Если вы хотите использовать Canal, его можно рассматривать только как半成品. Только добавив к нему крылья, он сможет свободно летать.

MQ

Учитывая, что емкость стека Canal невелика. складывать данные в10W+, скорость замедлится, и появится явление анабиоза. Другой сценарий - канал внезапно переходит в онлайн.В это время бинлог сильно задержался.После переподключения все данные будут получены за один раз,и застрянет до смерти.

Для первого сценария необходимо вмешательство MQ. Возможность стекирования очередей сообщений, таких как Kafka, хорошо известна, и все, что нам нужно сделать, это один раз переслать данные Canal. В дальнейшем клиент будет иметь дело только с MQ. После вмешательства MQ возможны следующие преимущества:

  1. Получите очень хорошую способность штабелирования, может задержать потребление
  2. Он может легко получать данные о невыполненных работах, а также отслеживать и предупреждать
  3. По сравнению с введением клиента Canal, разработка клиента может иметь дело только с MQ.
  4. MQ поддерживает последовательные сообщения.Для непоследовательных данных непоследовательные сообщения могут увеличить производительность обработки.

Мониторинг тревоги

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

Мониторинг процесса

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

Кстати: если вы не можете найти причину смерти процесса, выполнитеdmesgКомандование, есть большая вероятность, что причина смерти будет установлена.

мониторинг бизнеса

  1. Мониторинг местоположения бинарного журнала MySQL (show master status;).
  2. Мониторинг мест потребления стоков от Canal до MQ.
  3. Мониторинг задержки потребления (задержки) MQ бизнес-потребителем.

Автоматическое развертывание

Хороший инструмент непрерывной интеграции может значительно сократить время выхода на рынок и время реагирования на сбои. Этот раздел связан с набором инструментов каждой компании. Например, вы можете использовать инструменты командной строки, такие как ansible или jenkins и т. д.

Эта часть рабочей нагрузки по-прежнему относительно велика, особенно когда количество компонентов увеличивается. Есть несколько моментов, которые легко упустить из виду:

  1. Когда MySQL переключается master-slave, нужно ли менять конфигурацию Canal
  2. Когда в базе данных одного экземпляра MySQL слишком много таблиц, нужно ли развертывать Canal отдельно для поддержания своей топологии.
  3. Последовательность запуска каждого компонента, совместим ли код и может ли он поддерживаться
  4. Растут ли требования к синхронизации данных линейно, в соответствии с поддержкой детализации темы

Итеративные идеи

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

Базовая конструкция и использование

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

Упаковка API проста в использовании

Удалите или добавьте некоторые функции в соответствии с вашими собственными сценариями использования и напишите настраиваемые и простые в использовании API-интерфейсы в соответствии с кодированием и стилем кодирования вашей компании. Это может быть переходник, может быть пружинный стартер и т.д. Есть еще некоторые ямки, которые нужно экранировать, например, версия Canal с открытым исходным кодом не имеет GTID и т. д., ага. В это время очень важно правильно прочитать исходный код.

Общая высокая доступность и аварийный план

Для тяжеловесного промежуточного продукта важность этой части очевидна. Узлы взаимодействия с данными, каждый из которых не должен быть доверенным. Внимательно ПРОВЕРЬТЕ каждый узел взаимодействия данных, чтобы узнать планы действий в чрезвычайных ситуациях. Если позволяют условия, требуются повторные онлайн-учения, чтобы убедиться, что система в целом достигает высокой доступности.

Механизм работы и обслуживания сигнализации

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

Внутренняя документация и системная интеграция

Чтобы достичь цели быстрого реагирования и в то же время сделать продукт более плавно добавленным в стек технологий компании, его необходимо интегрировать во внутреннюю систему компании. Например, настраиваемая система мониторинга, система непрерывной интеграции и т. д. В то же время, чтобы снизить затраты на обучение и использование других партнеров, также необходим простой для понимания документ (не doc). Для точек, склонных к сбоям в использовании, также следует указать, что не все такие умные и способные, как вы.

Этап проверки рекламной заявки

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

Суммировать

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

Эта статья немного отстает, последняя версия канала уже поддерживает mq.