Проанализируйте, что представляет собой инструмент хаос-инженерии с открытым исходным кодом ChaosBlade от Alibaba?

Java

Публичный аккаунт WeChat: Kernel Little Prince Следуйте, чтобы узнать больше о базе данных, знаниях, связанных с ядром JVM; Если у вас есть какие-либо вопросы, вы также можете добавить меня pigpdong[1]

Архитектура высокой доступности является основой обеспечения стабильности обслуживания.

Хаос Инженерия

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

Хаос-инжиниринг — это дисциплина проведения экспериментов на распределенных системах с целью повышения уверенности в способности системы выдерживать неконтролируемые условия в производственной среде. Впервые она была предложена Netflix и связанными с ней командами.

monkey.png

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

hundun.png

Отличие от внедрения ошибок и тестирования ошибок

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

Пример ввода для эксперимента wonton:

  • Моделирование полного простоя всего IDC
  • Возврат с задержкой 5 секунд для вызова интерфейса
  • Поставьте процессор под полную нагрузку
  • Сделать так, чтобы функция выдавала исключение или возвращала фиксированное значение
  • Принудительно синхронизировать время NTP
  • Ошибки производственного ввода-вывода

Принципы инженерии хаоса

cs.png

На следующем рисунке показана возможная классификация ошибок Мы можем моделировать внутрипроцессные и внепроцессные сбои с помощью технологии байт-кода Java и инструментов уровня операционной системы. С появлением новых архитектур и технологий, таких как Serverless и Docker, произойдут некоторые новые изменения в механизме реализации отказов и носителе.

env.png

Сценарии применения Chaos Engineering

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

Краткое введение в ChaosBlade

ChaosBlade — это инструмент хаос-инжиниринга, который следует экспериментальным принципам хаос-инженерии, предоставляет разнообразные сценарии отказов, помогает распределенным системам повышать отказоустойчивость и восстанавливаемость, а также может внедрять базовые сбои. Адрес Github (GitHub.com/ultrasonic-spicy-…В отличие от других инструментов с открытым исходным кодом Alibaba, он находится не в разделе /alibaba, а в хаосблейде-io.

хаос [ˈkeɪɒs] означает равиоли, хаотическое лезвие [bleɪd] означает лезвие, лезвие, лезвие, читается вместе как косплей

logo.png

На следующем рисунке показан процесс разработки ChaosBlade, в котором ahas — это продукт, основанный на анализе отказов ChaosBlade в облаке.

blade.png

Компоненты ChaosBlade и экология

c1.png

ChaosBlade предоставляет способ командной строки для управления экспериментами, например создание для создания эксперимента, уничтожение для уничтожения эксперимента и запрос. В настоящее время для внутрипроцессных экспериментов для среды JAVA в основном осуществляется через внедрение байт-кода javaagent (это то же самое, что и другой инструмент устранения неполадок Arthas), а для машинного уровня — в основном через шелл (включая docket и к8с)

c2.png

Возможности ChaosBlade

  • Богатая сцена
  • Простой в использовании и понятный
  • Динамическая загрузка, без вмешательства
  • Легко расширить сцену
  • Поддержка настройки времени выполнения

Эксперименты, поддерживаемые ChaosBlade

  • ЦП полностью загружен
  • маска задержки потери сетевых пакетов
  • Блокировка домена
  • Заполнение диска, чтение и запись дискового ввода-вывода
  • убить процесс
  • удалить контейнер, POD
  • Задержка вызова RPC
  • Метод JAVA вводит указанное исключение и устанавливает возвращаемое значение

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

docker pull registry.cn-hangzhou.aliyuncs.com/chaosblade/chaosblade-demo:latest
docker run -it registry.cn-hangzhou.aliyuncs.com/chaosblade/chaosblade-demo:latest

1.gif