Альтернатива Hystrix, Spring Cloud Быстрый старт Alibaba Sentinel

Java

Когда дело доходит до текущих ограничивающих и деградирующих компонентов Spring Cloud, первое, что обычно приходит на ум, — это Hystrix от Netflix.

Однако в конце 2018 года Netflix объявил, что больше не ведет активную разработку Hystrix, и проект будет находиться в режиме обслуживания. Чиновник сказал, что версия Hystrix 1.5.18 достаточно стабильна, чтобы удовлетворить потребности существующих приложений Netflix, поэтому она сосредоточит свое внимание на адаптивной реализации и уделит больше внимания реагированию на производительность приложения в реальном времени. Что касается требований к автоматическим выключателям новых приложений, для их реализации будут использоваться другие проекты.Netflix рекомендует Resilience4j.

Являясь важным пакетом Spring Cloud Netflix, Hystrix стал предпочтительным приложением для обеспечения стабильности микросервисов. На самом деле, в дополнение к Netflix и Resilience4j, есть новая опция для текущего ограничения и понижения версии, которая является компонентом Sentinel от Alibaba.

1. Введение в Sentinel с открытым исходным кодом Alibaba

В августе 2018 года Alibaba объявила, что исходный код Sentinel будет открытым, и в то же время она выпустила адаптер, объединяющий Dubbo, и передала его в дар сообществу Apache Dubbo.

1. История Сентинел

В 2012 году родился Sentinel, и его основная функция — контроль входящего потока. С 2013 по 2017 год Sentinel быстро развивался в Alibaba Group и стал базовым технологическим модулем, охватывающим все основные сценарии. Sentinel также накопил большое количество сценариев консолидации трафика и производственных практик. В 2018 году исходный код Sentinel был открыт, и он продолжает развиваться.

2. Адаптация Sentinel к основным платформам

Sentinel разделен на две части:

Базовая библиотека (Java-клиент) не зависит ни от какой платформы/библиотеки, может работать во всех средах выполнения Java, а также имеет хорошую поддержку таких платформ, как Dubbo/Spring Cloud. Консоль (Dashboard) разработана на основе Spring Boot и может запускаться сразу после упаковки без дополнительных контейнеров приложений, таких как Tomcat.

Sentinel адаптируется к различным основным платформам, включая Spring Cloud, Dubbo и т. д. Открытый исходный код Sentinel обогащает систему микросервисов с открытым исходным кодом Alibaba и предоставляет больше решений для компонентов стабильности.

2. Какую проблему решает Sentinal?

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

Ограничение

Как следует из названия, текущее ограничение заранее устанавливает наивысший порог QPS для каждого типа запроса, если он выше установленного порога, то запрос будет возвращен напрямую, а последующие ресурсы вызываться не будут. Sentinel предоставляет два метода статистики трафика: один – подсчет количества одновременных потоков, а другой – подсчет количества запросов в секунду. Когда количество одновременных потоков превышает определенный порог, новый запрос будет немедленно отклонен. Когда количество запросов в секунду превышает определенный порог, новый запрос будет немедленно отклонен.Установленное пороговое значение, система может ответить тремя способами: прямой отказ, холодный запуск и устройство с постоянной скоростью, таким образом, играя роль управления потоком.

Слияние понижения

Если вызов целевой службы происходит медленно или имеет большое количество тайм-аутов, вызов службы будет взорван в это время.При последующих запросах на вызов целевая служба не будет вызываться, а вернется непосредственно для быстрого освобождения ресурсов. . Для слияния обычно требуется установка различных стратегий восстановления, и если целевая служба улучшится, вызов будет возобновлен. Между службами будет существовать взаимозависимость. Например, служба A может выполнять десятки тысяч запросов в секунду в секунду, а служба B не может выполнять десятки тысяч запросов в секунду. Итак, как обеспечить, чтобы при частом вызове службы A службы B служба B все еще работает нормально? Более распространенная ситуация заключается в том, что когда служба A вызывает службу B, у службы B слишком большое время отклика, поскольку она не может отвечать на высокочастотные вызовы, что приводит к слишком долгому ответу службы A, что, в свою очередь, вызывает цепную реакцию, влияющую на вся цепочка зависимостей. В настоящее время для всех приложений в системе требуется метод слияния и понижения версии. Sentinel объединяет или понижает сервисы, ограничивая количество одновременных потоков и понижая ресурсы по времени отклика.

форма

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

Sentinel управляет трафиком по трем измерениям отношения вызова ресурса, индекса операции и эффекта управления, и его можно гибко комбинировать при использовании.

Защита от нагрузки на систему

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

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

3. Основные характеристики Sentinel

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

Sentinel в течение почти 10 лет реализовывал основные сценарии Double Eleven от Alibaba для продвижения трафика, такого как всплески (то есть всплески трафика контролируются в диапазоне, который может выдержать пропускная способность системы), сглаживание пиков сообщений и заполнение промежутков, управление кластерным трафиком, слияние в реальном времени вниз по течению с приложениями и т. д.

Поддержка мониторинга в реальном времени

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

Адаптация к различным компонентам с открытым исходным кодом

Sentinel предоставляет готовые модули интеграции с другими платформами/библиотеками с открытым исходным кодом, такие как интеграция с Spring Cloud, Dubbo, gRPC. Вам нужно только ввести соответствующие зависимости и выполнить простую настройку для быстрого доступа к Sentinel.

Поддержка SPI, легкость расширения

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

4. Экосистема Sentinel с открытым исходным кодом

Sentinel поддерживает текущие основные комплекты для разработки микросервисов, особенно Dubbo и Spring Cloud, и является важной реализацией комплекта Spring Cloud Alibaba.

5. Сентинел против Хайстрикс

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

Сентинел фокусируется на:

  • Диверсифицированный контроль потока
  • Слияние понижения
  • Защита от нагрузки на систему
  • Мониторинг в реальном времени и консоль

Лучше картинка, чем предисловие, составим таблицу для сравнения возможностей Sentinel и Hystrix.

Функция Sentinel Hystrix resilience4j
Карантинная политика Изоляция семафора (ограничение количества одновременных потоков) Изоляция пула потоков/изоляция семафора Изоляция семафора
стратегия понижения рейтинга автоматических выключателей На основе времени отклика, коэффициента исключений, количества исключений на основе коэффициентов аномалий На основе коэффициента исключений, времени отклика
Реализация статистики в реальном времени Скользящее окно (LeapArray) Скользящее окно (на основе RxJava) Ring Bit Buffer
Динамическая конфигурация правил Поддерживает несколько источников данных Поддерживает несколько источников данных Ограниченная поддержка
Расширяемость несколько точек расширения форма плагина форма интерфейса
Поддержка на основе аннотаций служба поддержки служба поддержки служба поддержки
Ограничение На основе количества запросов в секунду, поддержка текущего ограничения на основе отношения вызовов ограниченная поддержка Rate Limiter
формирование трафика Поддерживает режим предварительного нагрева, режим постоянной скорости и режим очереди предварительного нагрева (настраивается в правиле трафика) не поддерживается не поддерживается
Система адаптивной защиты служба поддержки не поддерживается не поддерживается
приставка Готовая консоль для настройки правил, просмотра мониторинга второго уровня и обнаружения машин Простой мониторинг и просмотр Консоль не предусмотрена, но может быть подключена к другим системам мониторинга

Ссылаться на

Официальная документация SENTINEL

Отсканируйте код, чтобы подписаться на официальный аккаунт: Architecture Evolution, получайте техническую информацию и оригинальные статьи из первых рук.