Sentinel: Страж ваших микросервисов
По мере того как распределённые системы становятся всё более популярными, надёжность взаимодействия между сервисами становится как никогда важной. Sentinel использует «поток» в качестве точки прорыва и работает в нескольких областях, включая управление потоком, формирование трафика, ограничение параллелизма, прерывание цепи и адаптивную защиту от перегрузки системы, чтобы гарантировать надёжность и отказоустойчивость микросервисов.
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 шага. Также показано, как отслеживать этот пример с помощью панели инструментов.
Примечание: 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.
Оберните фрагмент кода через 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
На этом этапе модификация кода завершена. Мы также предоставили модуль поддержки аннотаций для более простого определения ресурса.
Если мы хотим ограничить доступ к ресурсу по времени, мы можем установить правила для этого ресурса. Следующий код определяет правило, которое ограничивает доступ к ресурсу до 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);
Для получения дополнительной информации см. раздел «Как использовать».
После запуска примера в течение некоторого времени вы увидите следующие записи в ~/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.
Примечание: для сборки или запуска панели инструментов требуется Java 8.
Sentinel также предоставляет простую панель инструментов приложения, на которой вы можете отслеживать клиентов и настраивать правила в режиме реального времени.
Подробнее см. в разделе «Панель инструментов».
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 )