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

OSCHINA-MIRROR/fhh-fans-sentinel-master

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

springcloud中配置参考

springcloud 中 sentinel 配置参考地址: https://gitee.com/fhh/fans-cloud-alibaba

用法

Первый шаг: скачать код, затем использовать maven для упаковки sentinel-dashboard-nacos проекта.

Второй шаг: после завершения упаковки будет создан jar-пакет sentinel-dashboard-nacos-1.7.2.jar.

Скачать sentinel-dashboard-nacos-1.7.2.jar можно по ссылке: https://gitee.com/fhh/fans-sentinel-master/blob/master/jar/sentinel-dashboard-nacos-1.7.2.jar

Третий шаг: затем используйте следующую команду для запуска в doc или командной строке Linux (или запустите непосредственно в инструменте):

java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar -Xms512m -Xmx512m sentinel-dashboard-nacos-1.7.2.jar 

sentinel-dashboard-nacos

Sentinel-dashboard-nacos — это Sentinel Dashboard, который был модифицирован и теперь может синхронизировать правила с Nacos.

Код реализации:

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

Первый шаг: измените зависимость sentinel-datasource-nacos в pom.xml, удалите комментарий test, чтобы его можно было использовать в основной программе.

<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-datasource-nacos</artifactId>
    <!--<scope>test</scope>-->
</dependency>

Второй шаг: найдите следующий код в resources/app/scripts/directives/sidebar/sidebar.html:

<li ui-sref-active="active">
    <a ui-sref="dashboard.flowV1({app: entry.app})">
        <i class="glyphicon glyphicon-filter"></i>&nbsp;&nbsp;流控规则
    </a>
</li>

Измените его на:

<li ui-srf-active="active">
    <a ui-sref="dashboard.flow({app: entry.app})">
        <i class="glyphicon glyphicon-filter"></i>&nbsp;&nbsp;流控规则
    </a>
</li>

Третий шаг: создайте новый пакет nacos под com.alibaba.csp.sentinel.dashboard.rule для написания расширений, специфичных для Nacos.

Четвёртый шаг: создайте класс конфигурации Nacos, код выглядит следующим образом:

@Configuration
public class NacosConfig {

    @Bean
    public Converter<List<FlowRuleEntity>, String> flowRuleEntityEncoder() {
        return JSON::toJSONString;
    }

    @Bean
    public Converter<String, List<FlowRuleEntity>> flowRuleEntityDecoder() {
        return s -> JSON.parseArray(s, FlowRuleEntity.class);
    }

    @Bean
    public ConfigService nacosConfigService() throws Exception {
        Properties properties = new Properties();
        properties.put(PropertyKeyConst.SERVER_ADDR, "localhost");
        //properties.put(PropertyKeyConst.NAMESPACE, "130e71fa-97fe-467d-ad77-967456f2c16d");
        return ConfigFactory.createConfigService(properties);
    }
}

Если вы используете изолированную среду namespace, вы можете добавить конфигурацию в метод nacosConfigService, например: properties.put(PropertyKeyConst.NAMESPACE, «130e71fa-97fe-467d-ad77-967456f2c16d»);

Пятый шаг: реализуйте извлечение конфигурации из Nacos.

@Component("flowRuleNacosProvider")
public class FlowRuleNacosProvider implements DynamicRuleProvider<List<FlowRuleEntity>> {

    @Autowired
    private ConfigService configService;
    @Autowired
    private Converter<String, List<FlowRuleEntity>> converter;

    public static final String FLOW_DATA_ID_POSTFIX = "-sentinel";
    public static final String GROUP_ID = "DEFAULT_GROUP";

    @Override
    public List<FlowRuleEntity> getRules(String appName) throws Exception {
        String rules = configService.getConfig(appName + FLOW_DATA_ID_POSTFIX, GROUP_ID, 3000);
        if (StringUtil.isEmpty(rules)) {
            return new ArrayList<>();
        }
        return converter.convert(rules);
    }
}

В методе getRules параметр appName — это имя службы в Sentinel. Метод configService.getConfig используется для получения информации о конфигурации из Nacos. DataId и GroupId соответствуют конфигурации при использовании клиентом. Например, в этом примере они соответствуют конфигурации, описанной в статье «Использование Nacos для хранения правил Sentinel», которая выглядит следующим образом:

spring.cloud.sentinel.datasource.ds.nacos.groupId=DEFAULT_GROUP
spring.cloud.sentinel.datasource.ds.nacos.dataId=${spring.application.name}-sentinel

Обратите внимание, что DataId и GroupId должны соответствовать друг другу.

Шестой шаг: реализуем отправку конфигурации в Nacos.

@Component("flowRuleNacosPublisher")
public class FlowRuleNacosPublisher implements DynamicRulePublisher<List<FlowRuleEntity>> {

    @Autowired
    private ConfigService configService;

    public static final String
``` **Здесь большая часть содержимого совпадает с реализацией предыдущего шага. Главное  не перепутать DataId и GroupId при хранении конфигурации в Nacos.**

**Седьмой шаг**: измените Bean, который внедряется в DynamicRuleProvider и DynamicRulePublisher в com.alibaba.csp.sentinel.dashboard.controller.v2.FlowControllerV2, на реализацию для Apollo, которую мы написали:

```java
@Autowired
@Qualifier("flowRuleNacosProvider")
private DynamicRuleProvider<List<FlowRuleEntity>> ruleProvider;
@Autowired
@Qualifier("flowRuleNacosPublisher")
private DynamicRulePublisher<List<FlowRuleEntity>> rulePublisher;

Sentinel: The Sentinel of Your Microservices

Travis Build Status Codecov Maven Central License Gitter

Введение

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

Sentinel имеет следующие особенности:

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

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

features-of-sentinel

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

Смотрите документацию на китайском языке для получения информации на китайском.

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

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

Быстрый старт

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

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

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

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

<!-- замените здесь на последнюю версию -->
<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-core</artifactId>
    <version>1.7.1</version>
</dependency>

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

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

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

try (Entry entry = SphU.entry("HelloWorld")) {
    // Ваша бизнес-логика здесь.
    System.out.println("hello world");
} catch (BlockException e) {
    // Обработка отклонённого запроса.
    e.printStackTrace();
}
// try-with-resources автоматически завершает работу

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

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

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

List<FlowRule> rules = new ArrayList<>();
FlowRule rule = new FlowRule();
rule.setResource("HelloWorld");
// устанавливаем лимит qps на 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 — заблокированный правилами, success — успешно обработанный Sentinel, e — количество исключений, rt — среднее время отклика (мс), occupied — указывает на занятые квоты с версии 1.5.0, которые позволяют нам бронировать больше, чем один выстрел при входе.

Это показывает, что демонстрация может печатать «hello world» 20 раз в секунду. Дополнительные примеры и информацию можно найти в разделе «Как использовать». Принципы работы Sentinel описаны в разделе «Как это работает». Образцы можно найти в модуле sentinel-demo.

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

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

dashboard

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

Комментарии ( 0 )

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

Введение

На основе Alibaba Sentinel-master добавить источник данных nacos, при этом данные, которые обновляются на панели управления sentinel, синхронизировать с nacos. Конфигурация sentinel в springcloud: https://gitee.com/fhh/fans-cloud-alibaba. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/fhh-fans-sentinel-master.git
git@api.gitlife.ru:oschina-mirror/fhh-fans-sentinel-master.git
oschina-mirror
fhh-fans-sentinel-master
fhh-fans-sentinel-master
master