1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-Sentinel

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 14 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 28.11.2024 21:22 48b361c

Sentinel: Страж ваших микросервисов

Логотип Sentinel

Sentinel CI Codecov Maven Central License Gitter Leaderboard

Введение

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

Sentinel обладает следующими функциями:

  • Богатые применимые сценарии: Sentinel широко используется в Alibaba и охватывает почти все основные сценарии во время шопинга на Double-11 (11.11) за последние 10 лет, такие как «Second Kill», который требует ограничения всплеска потока трафика для соответствия пропускной способности системы, отсечения пиковых сообщений и заполнения долин, прерывания цепи для ненадёжных нижестоящих сервисов, управления потоками кластера и т. д.
  • Мониторинг в реальном времени: Sentinel также предоставляет возможность мониторинга в реальном времени. Вы можете видеть информацию о времени выполнения отдельной машины в режиме реального времени и агрегированную информацию о времени выполнения кластера с менее чем 500 узлами.
  • Широко распространённая экосистема с открытым исходным кодом: Sentinel обеспечивает встроенную интеграцию с часто используемыми фреймворками и библиотеками, такими как Spring Cloud, gRPC, Apache Dubbo и Quarkus. Вы можете легко использовать Sentinel, просто добавив зависимость адаптера к своим сервисам.
  • Поддержка различных языков программирования: Sentinel предоставляет встроенную поддержку Java, Go, C++ и Rust.
  • Различные расширения SPI: Sentinel предлагает простые в использовании интерфейсы расширения SPI, которые позволяют быстро настраивать логику, например, управление пользовательскими правилами, адаптацию источников данных и так далее.

Обзор функций:

features-of-sentinel

Сообщество также работает над спецификацией управления трафиком и отказоустойчивости. Пожалуйста, обратитесь к OpenSergo для получения дополнительной информации.

Документация

См. официальный веб-сайт Sentinel.

См. документ на китайском языке по адресу https://sentinelguard.io/zh-cn/docs/introduction.html.

См. полную документацию, примеры, сообщения в блогах, операционные детали и другую информацию в Wiki.

Sentinel предоставляет модули интеграции для различных фреймворков с открытым исходным кодом (например, Spring Cloud, Apache Dubbo, gRPC, Quarkus, Spring WebFlux, Reactor) и сервисной сетки. Вы можете обратиться к документу для получения дополнительной информации.

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

Экосистемный ландшафт Быстрый старт

Ниже приведён простой пример, который помогает новым пользователям использовать Sentinel всего за 3 шага. Также показано, как отслеживать этот пример с помощью панели инструментов.

  1. Добавьте зависимость.

Примечание: Sentinel требует JDK 1.8 или более поздней версии.

Если вы используете Maven, просто добавьте следующую зависимость в pom.xml.

<!-- replace here with the latest version -->
<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-core</artifactId>
    <version>1.8.8</version>
</dependency>

В противном случае вы можете загрузить JAR из Maven Center Repository.

  1. Определите ресурс.

Оберните фрагмент кода через API Sentinel: SphU.entry(resourceName). В приведённом ниже примере это System.out.println("hello world");:

try (Entry entry = SphU.entry("HelloWorld")) {
    // Your business logic here.
    System.out.println("hello world");
} catch (BlockException e) {
    // Handle rejected request.
    e.printStackTrace();
}
// try-with-resources auto exit

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

  1. Определите правила.

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

List<FlowRule> rules = new ArrayList<>();
FlowRule rule = new FlowRule();
rule.setResource("HelloWorld");
// set limit qps to 20
rule.setCount(20);
rule.setGrade(RuleConstant.FLOW_GRADE_QPS);
rules.add(rule);
FlowRuleManager.loadRules(rules);

Для получения дополнительной информации см. раздел «Как использовать».

  1. Проверьте результат.

После запуска примера в течение некоторого времени вы увидите следующие записи в ~/logs/csp/${appName}-metrics.log.{date} (при использовании стандартного обработчика файлов журнала DateFileLogHandler).

|--timestamp-|------date time----|-resource-|p |block|s |e|rt  |occupied
1529998904000|2018-06-26 15:41:44|HelloWorld|20|0    |20|0|0   |0
1529998905000|2018-06-26 15:41:45|HelloWorld|20|5579 |20|0|728 |0
1529998906000|2018-06-26 15:41:46|HelloWorld|20|15698|20|0|0   |0
1529998907000|2018-06-26 15:41:47|HelloWorld|20|19262|20|0|0   |0
1529998908000|2018-06-26 15:41:48|HelloWorld|20|19502|20|0|0   |0
1529998909000|2018-06-26 15:41:49|HelloWorld|20|18386|20|0|0   |0

p обозначает входящий запрос, block — заблокированный правилами, s — успешно обработанный Sentinel, e — количество исключений, rt — среднее время отклика (мс), occupied — занятыйPassQps начиная с версии 1.5.0, что позволяет нам бронировать больше одного выстрела при входе.

Это показывает, что пример может печатать «hello world» 20 раз в секунду.

Дополнительные примеры и информацию можно найти в разделе «Как использовать».

Принципы работы Sentinel описаны в разделе «Принцип работы».

Образцы можно найти в модуле sentinel-demo.

  1. Запустите панель инструментов.

Примечание: для сборки или запуска панели инструментов требуется Java 8.

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

dashboard

Подробнее см. в разделе «Панель инструментов».

Устранение неполадок и журналы

Sentinel генерирует журналы для устранения неполадок и мониторинга в реальном времени. Всю информацию можно найти в журналах.

Ошибки и обратная связь

Отчёт об ошибках, вопросы и обсуждения отправляйте через GitHub Issues.

Контакт Сотрудничество

Мы всегда рады сотрудничеству! Подробные инструкции вы можете найти в файле CONTRIBUTING.md.

Вы можете начать с задач, помеченных как «good first issue» (https://github.com/alibaba/Sentinel/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22).

Корпоративное обслуживание

Если вам нужна поддержка корпоративного обслуживания Sentinel (Sentinel 企业版) или вы хотите приобрести облачные сервисы, вы можете присоединиться к обсуждению в группе DingTalk (34754806). Также можно напрямую активировать и использовать микросервисный движок (MSE 微服务引擎), предоставленный Alibaba Cloud (https://cn.aliyun.com/product/aliware/mse?spm=sentinel-github.index.0.0.0).

Благодарности

Спасибо Guava (https://github.com/google/guava), которая вдохновила нас на ограничение скорости.

И спасибо всем участникам Sentinel!

Кто использует

Это лишь часть компаний, использующих Sentinel. Если вы используете Sentinel, пожалуйста, добавьте свою компанию здесь (https://github.com/alibaba/Sentinel/issues/18), чтобы рассказать нам о своём сценарии использования и помочь сделать Sentinel лучше :)

Аlibaba Group AntFin Taiping Renshou Pinduoduo IQIYI Shunfeng Technology Erwehuo Mandao Winxuan Online Keruyun Qinbao Bao Jinhui Finance Shandian Bang

Примечание: в ответе сохранены оригинальное форматирование текста и специальные символы.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mirrors-Sentinel.git
git@api.gitlife.ru:oschina-mirror/mirrors-Sentinel.git
oschina-mirror
mirrors-Sentinel
mirrors-Sentinel
1.8