Публичный аккаунт WeChat: Kernel Little Prince Следуйте, чтобы узнать больше о базе данных, знаниях, связанных с ядром JVM; Если у вас есть какие-либо вопросы, вы также можете добавить меня pigpdong[1]
Архитектура высокой доступности является основой обеспечения стабильности обслуживания.
Хаос Инженерия
Мы можем думать о хаос-инжиниринге как об эксперименте, который выявляет неизвестные слабости в распределенных системах. Хаос-инженеры учатся наблюдать за реакцией системы, применяя некоторые принципы эмпирического исследования. Точно так же, как ученые проводят эксперименты, чтобы изучить законы физики, инженеры хаоса проводят эксперименты, чтобы понять системы.
Хаос-инжиниринг — это дисциплина проведения экспериментов на распределенных системах с целью повышения уверенности в способности системы выдерживать неконтролируемые условия в производственной среде. Впервые она была предложена Netflix и связанными с ней командами.
Сейчас большинство проектов хаос-инженерии называются Monkey, то есть эта противная обезьяна, прыгающая вверх-вниз по вашей системе, создающая проблемы, пока не повесит вашу систему. Путем хаотических экспериментов мы можем понять хрупкую сторону системы.Прежде чем причинять вред пользователям, мы можем активно выявлять эти проблемы и повышать эластичность всей системы.
Отличие от внедрения ошибок и тестирования ошибок
Инжиниринг хаоса, внедрение ошибок и тестирование ошибок имеют много общего в задачах и инструментах. Но первое в основном сосредоточено на получении непредсказуемой информации на практике, помогая нам лучше понять систему, и здесь больше неопределенностей, в то время как второе больше сосредоточено на том, оправдываются ли ожидания, точно так же, как утверждение Assert в программе, если это так. не оправдать ожидания Выброшено исключение. Тест на отказ разрушает систему определенным образом, но не исследует более причудливые сценарии, которые могут произойти. По сути, это разница между экспериментированием и тестированием, последнее в основном используется для проверки, а первое используется для открытия новых знаний.
Пример ввода для эксперимента wonton:
- Моделирование полного простоя всего IDC
- Возврат с задержкой 5 секунд для вызова интерфейса
- Поставьте процессор под полную нагрузку
- Сделать так, чтобы функция выдавала исключение или возвращала фиксированное значение
- Принудительно синхронизировать время NTP
- Ошибки производственного ввода-вывода
Принципы инженерии хаоса
На следующем рисунке показана возможная классификация ошибок Мы можем моделировать внутрипроцессные и внепроцессные сбои с помощью технологии байт-кода Java и инструментов уровня операционной системы. С появлением новых архитектур и технологий, таких как Serverless и Docker, произойдут некоторые новые изменения в механизме реализации отказов и носителе.
Сценарии применения Chaos Engineering
- Повышение отказоустойчивости и стабильности системы
- Красная линия системы оценки катастроф и стихийных бедствий
- Проверка динамической масштабируемости облачных сервисов
- Убедитесь в эффективности мониторинга и предупреждений, а также в том, что метрики являются исчерпывающими.
- Налет на неисправности, улучшение способности соответствующего персонала обнаруживать и устранять проблемы
Краткое введение в ChaosBlade
ChaosBlade — это инструмент хаос-инжиниринга, который следует экспериментальным принципам хаос-инженерии, предоставляет разнообразные сценарии отказов, помогает распределенным системам повышать отказоустойчивость и восстанавливаемость, а также может внедрять базовые сбои. Адрес Github (GitHub.com/ultrasonic-spicy-…В отличие от других инструментов с открытым исходным кодом Alibaba, он находится не в разделе /alibaba, а в хаосблейде-io.
хаос [ˈkeɪɒs] означает равиоли, хаотическое лезвие [bleɪd] означает лезвие, лезвие, лезвие, читается вместе как косплей
На следующем рисунке показан процесс разработки ChaosBlade, в котором ahas — это продукт, основанный на анализе отказов ChaosBlade в облаке.
Компоненты ChaosBlade и экология
ChaosBlade предоставляет способ командной строки для управления экспериментами, например создание для создания эксперимента, уничтожение для уничтожения эксперимента и запрос. В настоящее время для внутрипроцессных экспериментов для среды JAVA в основном осуществляется через внедрение байт-кода javaagent (это то же самое, что и другой инструмент устранения неполадок Arthas), а для машинного уровня — в основном через шелл (включая docket и к8с)
Возможности 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