Double Eleven приближается, с 2009 года第一届В начале Double Eleven объем транзакций составлял всего 50 млн. К 2019 году прошлого года объем транзакций достиг 268,4 млрд. Этот год положил начало第十二届Double Eleven, я очень рад думать об этом.
Людям из Али нравится рассматривать Double Eleven как тимбилдинг, широко распространенное изречение:Драка — лучший тимбилдинг, тех, кто не участвовал в Double Eleven, называют коллегами, а тех, кто участвовал в Double Eleven, называют товарищами по оружию.
В прошлой статье я объяснил механизм сервисной лавины и автоматического выключателя через историю Троецарствия, и сам построил колесо:熔断器. И эта статья объяснит два компонента управления трафиком, используемые производителями первого уровня:Sentinelа такжеHystrixи их горизонтальное сравнение.
Основное содержание этой статьи следующее:
Эта статья была включена в мойGithub: GitHub.com/Jackson0714… Нажмите на мою ссылку Github
1. Предохранение и деградация, ограничение тока и изоляция
Перед лицом большого количества параллельного трафика мы обычно используем четыре метода (предохранитель и переход на более раннюю версию, ограничение тока и изоляцию), чтобы предотвратить влияние мгновенного большого трафика на систему. Два дорожных охранника, которые будут представлены сегодня, специально используются в этом отношении. Далее, позвольте мне сделать небольшое слепое сканирование для моих одноклассников.
- Что такое предохранитель?
Ключевые слова:断路保护. Например, когда служба A вызывает службу B из-за проблем с сетью, или служба B не работает, или время обработки службы B велико, время запроса слишком велико.Если это происходит несколько раз в течение определенного периода времени, B может быть напрямую отключенным (A больше не запрашивает B). Запрос на вызов службы B напрямую возвращает поврежденные данные, не дожидаясь выполнения службы B. Следовательно, проблема службы B не будет каскадироваться на службу A.
- Что такое даунгрейд?
Ключевые слова:返回降级数据. Веб-сайт находится в периоде пикового трафика, и нагрузка на сервер резко возрастает.В соответствии с текущей бизнес-ситуацией и трафиком некоторые службы и страницы стратегически понижены (остановите службу, и все вызовы будут напрямую возвращать данные с пониженной версией). Таким образом, снижается нагрузка на серверные ресурсы, обеспечивается нормальная работа основного бизнеса, а клиенты и большинство клиентов получают правильный ответ. Данные понижения могут быть просто поняты как быстро возвращающие ложь, а интерфейсная страница сообщает пользователю: «Сервер в настоящее время занят, повторите попытку позже».
-
Что такое дросселирование?
Контролируйте запрошенный трафик, только
放行部分请求, чтобы служба могла выдерживать нагрузку трафика, не превышающую ее пропускную способность. -
Та же самая точка предохранителя и понижения?
- И размыкание цепи, и ограничение тока должны обеспечивать доступность и надежность большинства сервисов в кластере. Предотвратите сбой основных служб.
- Ощущение у конечного пользователя такое, что какая-то функция недоступна.
-
В чем разница между предохранителем и понижением?
- Автоматический выключатель — это операция, которая активно срабатывает при возникновении неисправности в вызываемом расцепителе.
- Понижение основано на глобальных соображениях, останавливая некоторые обычные службы и освобождая ресурсы.
-
Что такое карантин?
- Каждая служба рассматривается как независимая операционная система, даже если в системе есть проблема, она не повлияет на другие службы.
2. Хайстрикс
Что такое Хайстрикс
Hystrix: платформа для обеспечения высокой доступности. Произведено Netflix (Netflix можно понимать как отечественные видеосайты, такие как iQiyi).
История Хайстрикс
-
В 2011 году команда API разработала структуру Hystrix, чтобы повысить удобство использования и стабильность системы.
-
В 2012 году регион Hystrix был относительно зрелым и стабильным. Другие команды также начали использовать Hystrix.
-
В ноябре 2018 года Hystrix объявила на своей домашней странице Github, что больше не будет открывать новые функции, рекомендуя разработчикам использовать другие проекты с открытым исходным кодом, которые все еще активны. Тем не менее, Hystrix по-прежнему очень ценен и мощен, и его используют многие интернет-компании первого уровня в Китае.
Философия дизайна Hystrix
- Лавинный эффект блокировки сервисов.
- Быстро терпите неудачу и быстро восстанавливаетесь.
- Изящная деградация.
- Используйте методы изоляции ресурсов, такие как переборка (метод изоляции переборки), зона плавания (техника плавательной дорожки), автоматический выключатель (метод автоматического выключателя).
- Мониторинг, оповещение, эксплуатация и техническое обслуживание в режиме, близком к реальному времени.
Технология изоляции пула потоков Hystrix
Используйте изоляцию пула потоков. Например, есть 3 службы A, B и C. В пуле потоков каждой службы выделяется 10, 20 и 30 потоков. Когда используется 10 потоков в пуле потоков службы A, если вызов По мере увеличения объема запросов службы А невозможно добавить больше потоков, потому что потоки, выделенные службой А, были израсходованы, а потоки других служб не будут заняты, так что другие службы не будут затронуты. Hystrix по умолчанию использует режим изоляции пула потоков.
Преимущества технологии изоляции пула потоков
- Зависимые службы имеют изолированные пулы потоков, и даже если их собственный пул заполнен, это не повлияет на вызовы других служб.
- Сообщается о состоянии работоспособности пула потоков, а конфигурация вызовов зависимых служб может быть изменена почти в реальном времени.
- Пул потоков имеет асинхронные характеристики и может создавать уровень асинхронных вызовов.
- Механизм обнаружения тайм-аута особенно полезен для межсервисных вызовов.
Недостатки технологии изоляции пула потоков
- Сам пул потоков принесет некоторые проблемы, такие как переключение потоков и управление потоками, что, несомненно, увеличивает нагрузку на ЦП.
- Если использование потоков в пуле потоков низкое, это определенно пустая трата времени.
Технология изоляции семафоров Hystrix
Как показано на следующем рисунке: Проще говоря, в пуле есть определенное количество семафоров. Прежде чем служба A вызовет службу B, она должна запросить семафор из пула. Только после получения заявки служба B может быть называется.
Сравнение сценариев между изоляцией пула потоков и семафором
- Технология изоляции пула потоков, подходит для большинства сценариев, но вам нужно установить время ожидания службы.
- Технология изоляции семафоров, подходит для более сложных внутренних дел, не вызывает проблем с сетевыми запросами.
3. Страж
3.1 Что такое Sentinel?
Sentinel: компонент управления трафиком для архитектуры распределенных сервисов. Он в основном использует трафик в качестве точки входа, чтобы помочь разработчикам обеспечить стабильность микросервисов по нескольким параметрам, таким как ограничение тока, формирование трафика, понижение уровня прерывателя цепи, защита системной нагрузки и защита от горячих точек.
3.2 История Sentinel
- В 2012 году родился Sentinel, и его основная функция — контроль входящего потока.
- С 2013 по 2017 год Sentinel быстро развивался в Alibaba Group и стал базовым технологическим модулем, охватывающим все основные сценарии. Sentinel также накопил большое количество сценариев консолидации трафика и производственных практик.
- В 2018 году исходный код Sentinel был открыт, и он продолжает развиваться.
- В 2019 году Sentinel продолжил изучение направления многоязычной экспансии и запустил нативную версию C++, а также запустил поддержку управления потоком кластера Envoy для сценариев Service Mesh, чтобы решить проблему многоязычного ограничения тока при Архитектура Service Mesh.
- В 2020 году будет запущена версия Sentinel Go, чтобы продолжить переход к облачным технологиям.
3.3 Особенности Sentinel
- Богатые сценарии приложений.Поддерживайте основные сценарии Double Eleven от Ali, такие как всплески, пики и спады сообщений, управление кластерным потоком и автоматические выключатели в реальном времени, которые недоступны в нисходящем направлении.
- Полный мониторинг в режиме реального времени.Вы можете увидеть данные второго уровня отдельной машины, подключенной к приложению, а также сводку по кластеру.
- Обширная экосистема с открытым исходным кодом.Spring Cloud, Dubbo и gRPC могут получить доступ к Sentinel.
- Полная точка расширения SPI.Реализуйте интерфейсы расширения для быстрой настройки логики.
Подведите итог картинке:
3.4 Состав Стража
- Базовая библиотека (Java-клиент) не зависит ни от какой платформы/библиотеки, может работать во всех средах выполнения Java и хорошо поддерживает Spring Cloud, Dubbo и другие платформы.
- Консоль (Dashboard) разработана на основе Spring Boot и может запускаться сразу после упаковки без дополнительных контейнеров приложений, таких как Tomcat.
3.5 Ресурсы Sentinel
Ресурс в Sentinel является основной концепцией и может быть чем угодно в приложении Java, предоставляемой службой или даже фрагментом кода.
Код, который можно определить с помощью Sentinel API, — это ресурс, который может быть защищен Sentinel. Ресурсы можно идентифицировать несколькими способами:
- подпись метода.
- URL.
- название службы и т. д.
3.6 Концепция дизайна Sentinel
Sentinel, как диспетчер трафика, может корректировать случайные запросы в соответствующие формы по мере необходимости, как показано на следующем рисунке:
4. Сравнение
4.1 Сравнение конструкции изоляции
- Hystrix
Hystrix предлагает две стратегии изоляции: изоляцию пула потоков и изоляцию семафоров.
Наиболее рекомендуемой и наиболее часто используемой в Hystrix является изоляция пула потоков. Преимущество изоляции пула потоков заключается в том, что он имеет высокую степень изоляции и не будет влиять на другие ресурсы, но у самого потока есть свои проблемы.Переключение контекста потока потребляет больше ресурсов ЦП.Если требования к низкой задержке относительно высоки, влияние по-прежнему довольно велико.Кроме того, создание потока требует выделения памяти.Чем больше потоков создается, тем больше памяти необходимо выделить. А если для каждого ресурса создается пул потоков, то переключение потоков принесет больше потерь.
Изоляция семафора Hystrix может ограничивать количество одновременных вызовов к ресурсу.Он легкий и не требует явного создания пула потоков, но недостатком является то, что он не может автоматически понижать рейтинг медленных вызовов и может только ждать, пока клиент не истечет время ожидания. ., еще есть возможность каскадной блокировки.
- Sentinel
Sentinel может обеспечить функцию изоляции семафора за счет управления потоком в режиме номера параллельного потока, а также имеет режим деградации плавкого предохранителя времени отклика, который предотвращает заполнение параллельного номера слишком большим количеством медленных вызовов и влияние на всю систему.
4.2. Сравнение понижения номинала предохранителя
И Sentinel, и Hystrix основаны на схеме автоматического выключателя. Оба поддерживают автоматический выключатель на основе коэффициента исключений, но Sentinel является более мощным и может выполнять переход на более раннюю версию автоматического выключателя в зависимости от времени отклика, коэффициента исключений и количества исключений.
4.3 Сравнение статистики в реальном времени
И Sentinel, и Hystrix основаны на скользящих окнах для статистики в реальном времени, но Hystrix основан наRxJavaМодель, управляемая событиями, которая публикует события ответа, когда вызов службы завершается успешно/сбой/тайм-аут, и, наконец, получает поток статистических данных индикатора в реальном времени посредством серии преобразований и агрегирования, которые могут использоваться автоматическими выключателями или информационными панелями. Сентинел основан наLeapArrayраздвижное окно.
Пять, выдающиеся особенности Sentinel
В дополнение к трем сравнениям, упомянутым выше, у Sentinel есть некоторые функции, которых нет у Hystrix.
5.1, управление потоком
управление потоком:Принцип заключается в отслеживании таких показателей, как количество запросов в секунду или количество одновременных потоков трафика приложения, и управлении трафиком при достижении указанного порога, чтобы избежать перегрузки мгновенным пиком трафика, тем самым обеспечивая высокую доступность приложения.
Sentinel может выполнять управление потоком на основе количества запросов в секунду/параллельности или управление потоком на основе взаимосвязи вызовов.
Существует несколько способов управления потоком на основе QPS:
- категорический отказ:Когда QPS превышает определенный порог, он напрямую отклоняется. Применяется к ситуациям, когда возможности обработки системы точно известны.
- Медленный старт, разминка:Когда система находится на низком уровне воды в течение длительного времени, когда поток внезапно увеличивается, прямое подтягивание системы к высокому уровню воды может мгновенно привести к перегрузке системы. Благодаря «холодному запуску» проходящий поток медленно увеличивается и постепенно увеличивается до верхнего предела порога в течение определенного периода времени, давая холодной системе время прогрева, чтобы избежать перегрузки холодной системы.
- Равномерная очередь:Запросы проходят с одинаковой скоростью, соответствующей алгоритму дырявого ведра.
Управление потоком на основе отношений вызовов:
- Ограничение тока в зависимости от вызывающего абонента.
- Ограничение тока согласно записи вызывающей ссылки: ограничение тока ссылки.
- Регулирование трафика на основе ресурсов с отношениями: Регулирование трафика ассоциации.
5.2 Система адаптивного ограничения тока
Адаптивное ограничение тока системы Sentinel контролирует входящий трафик приложения из общего измерения.TCP BBRИдея состоит в том, чтобы объединить индикаторы мониторинга нескольких измерений, таких как нагрузка приложений, использование ЦП, общее среднее время RT, количество запросов в секунду на входе и количество одновременных потоков.Благодаря стратегиям адаптивного управления потоком можно сбалансировать входящий трафик системы и системную нагрузку. Пусть система работает с максимальной пропускной способностью, насколько это возможно, обеспечивая при этом общую стабильность системы.
Представим себе процесс обработки запросов системой как водопровод.Входящий запрос - налить воду в этот водопровод.При бесперебойной обработке заявки запрос не нужно ставить в очередь,и проходит напрямую по водопроводу. ВР этого запроса наименьшее, иначе при накоплении запросов время обработки запросов становится: время ожидания + минимальное время обработки.
-
Вывод 1: Если мы сможем обеспечить количество воды в водопроводе и позволить воде течь бесперебойно, то увеличения количества запросов в очереди не будет, то есть нагрузка на систему в это время не ухудшится дальше.
-
Вывод 2: Когда скорость потока на входе поддерживается на уровне максимального значения скорости потока на выходе из водопровода, пропускная способность водопровода может быть использована максимально.
5.3 Панель мониторинга и управления в режиме реального времени
Sentinel предоставляет облегченную консоль с открытым исходным кодом, которая обеспечивает обнаружение компьютеров и управление их работоспособностью, мониторинг (отдельных компьютеров и кластеров), управление правилами и функции отправки.
5.4. Развитие и экология
Sentinel адаптирован для Spring Cloud, Dubbo и gRPC.Внедрив зависимости и простую настройку, можно быстро получить доступ к Sentinel.Считается, что Sentinel станет отличным инструментом для контроля трафика в будущем. Я предпочитаю Сентинел.
5.5, Краткий обзор сравнения Sentinel и Hystrix
напиши в конце
Некоторые читатели спрашивали меня, как спроектировать систему seckill. В предыдущей статье я раскрыл архитектурный проект системы seckill. Ниже я резюмирую восемь проблемных моментов системы seckill:
- Служба с единой ответственностью, независимое развертывание
- Разогрев инвентаря, быстрый вывод
- Шифрование ссылок Seckill
- Динамическое и статическое разделение
- Перехват злонамеренного запроса
- Движение в шахматном порядке
- Ограничение тока, предохранитель и переход на более раннюю версию
- бритье очереди
Я Гоку, усердно работаю, чтобы стать Супер Сайяном.
Увидимся в следующий раз!