Интеграция Spring Cloud с пятью Sentinel

Java

Микросервисы в настоящее время так популярны, если вы не можете изучить технологию фреймворка микросервисов. Как я могу получить повышение по службе и прибавку к зарплате, а также увеличить количество фишек в моем резюме? Весеннее облако и Даббо нужно изучать отдельно. Скажи, что у тебя нет времени? Нет энергии? Хотите изучить два фреймворка? А Spring Cloud alibaba требует, чтобы вы изучили только одну, чтобы иметь две технологии инфраструктуры управления микросервисами. Почему бы не сделать это? Ну давай же! Год Сан-Апе

Ограничение тока предохранителя Sentinel

Ранее метод доступа, используемый нашей службой шлюза zuul, основывался на методе доступа Sentinel. На самом деле, в системе Alibaba Spring Cloud есть очень полезная стартовая зависимость Sentinel. Только нужно полагаться на пакет jar. Затем настройте адрес сервера Sentinel.

Настройка и запуск службы Sentinel

Быстрая настройка Sentinel

В предыдущей главе было описано, как его построить. Пост один раз на этот раз. Непосредственно загрузите пакет jar, который был напечатан на официальном сайте.

адрес выпуска https://github.com/alibaba/Sentinel/releases

Компиляция исходного кода git clone https://github.com/alibaba/Sentinel.git

Затем войдите в каталог и выполните mvn clean package.

запуск команды

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

Если вам нужен докер, вы можете написать docker Dockerfile

# 基于哪个镜像
FROM java:8
# 拷贝文件到容器,也可以直接写成ADD microservice-discovery-eureka-0.0.1-SNAPSHOT.jar /app.jar
ADD ./*.jar app.jar
RUN mkdir -p /var/logs/Sentinel
RUN mkdir -p /var/logs/jvm
RUN mkdir -p /var/logs/dump
RUN bash -c 'touch /app.jar'
# 开放8080端口
EXPOSE 8080
# 配置容器启动后执行的命令
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Dsentinel.dashboard.auth.username=sentinel","-Dsentinel.dashboard.auth.password=123456","-Dserver.servlet.session.timeout=7200","-XX:-PrintGCDetails","-XX:-PrintGCTimeStamps","-XX:-HeapDumpOnOutOfMemoryError","-XX:HeapDumpPath=/var/logs/dump/oom_dump.dump","-Xloggc:/var/logs/jvm/app.log","-Dfile.encoding=UTF8","-Duser.timezone=GMT+08","-XX:CMSInitiatingOccupancyFraction=90","-XX:MaxGCPauseMillis=200","-XX:StringTableSize=20000","-XX:+UseG1GC","-Xss256k","-Xmx1024m","-Xms512m","-jar","/app.jar"]

Выполнить создание образа докера

docker  build --tag sentinel:1.0 .

--tag имя_проекта:версия обратите внимание на написание

file

fileЗатем docker run запускает образ. Используемый здесь метод образа докера запускает docker run -d -p8890:8080 -p8891:8080 304342c105e9

Затем войдите в консоль http://localhost:9088/ имя пользователя и пароль sentinel/123456

Конфигурация параметров входа:

Начиная с Sentinel 1.6.0, консоль Sentinel представляет базовые функции входа в систему, а имя пользователя и пароль по умолчанию — sentinel. Вы можете обратиться к документации модуля аутентификации, чтобы настроить имя пользователя и пароль.

  • Dsentinel.dashboard.auth.username=sentinel используется для указания имени пользователя для входа в консоль как sentinel;
  • Dsentinel.dashboard.auth.password=123456 используется для указания пароля входа в консоль как 123456. Если эти два параметра опущены, пользователь и пароль по умолчанию являются дозорными;
  • Dserver.servlet.session.timeout=7200 используется для указания времени истечения сеанса сервера Spring Boot, например, 7200 означает 7200 секунд, 60m означает 60 минут, по умолчанию 30 минут;

Введите пароль для входа

После завершения логина мы начинаем интегрировать интегрированную работу шлюза.

Внедрите pom в нашу службу шлюза

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-sentinel-gateway</artifactId>
        </dependency>
                <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        </dependency>

Создайте RulesController, чтобы открыть интерфейс

package com.xian.cloud.controller;

import com.alibaba.csp.sentinel.adapter.gateway.common.api.ApiDefinition;
import com.alibaba.csp.sentinel.adapter.gateway.common.api.GatewayApiDefinitionManager;
import com.alibaba.csp.sentinel.adapter.gateway.common.rule.GatewayFlowRule;
import com.alibaba.csp.sentinel.adapter.gateway.common.rule.GatewayRuleManager;
import com.alibaba.csp.sentinel.annotation.SentinelResource;
import com.alibaba.csp.sentinel.slots.block.flow.FlowRule;
import com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.Set;

/**
 * @author <a href="mailto:fangjian0423@gmail.com">Jim</a>
 */
@RestController
public class RulesController {

    @GetMapping("/api")
    @SentinelResource("api")
    public Set<ApiDefinition> apiRules() {
        return GatewayApiDefinitionManager.getApiDefinitions();
    }

    @GetMapping("/gateway")
    @SentinelResource("gateway")
    public Set<GatewayFlowRule> apiGateway() {
        return GatewayRuleManager.getRules();
    }

    @GetMapping("/flow")
    @SentinelResource("flow")
    public List<FlowRule> apiFlow() {
        return FlowRuleManager.getRules();
    }
}

Файл bootstrap.yml добавляет назначенный адрес дозорной службы.

spring:
    cloud:
    sentinel:
      transport:
        dashboard: localhost:8890
        port: 8890
      # 服务启动直接建立心跳连接
      eager: true

запустить службу

Несколько запросов на завивание http://localhost:9000/api

Данные мониторинга в реальном времени

file

ссылка на точку кластераfile

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

Настройки управления потокомfile

Соответствующие свойства параметра

  • ресурс: имя ресурса, то есть объект текущего ограничивающего правила
  • count: текущий предельный порог
  • класс: пороговый тип текущего ограничения (количество запросов в секунду или количество одновременных потоков).
  • limitApp: источник вызова для управления потоком, если он установлен по умолчанию, источник вызова не будет различим.
  • стратегия: Вызвать текущую стратегию ограничения отношений
  • controlBehavior: эффект управления потоком (прямой отказ, разминка, равномерная очередь)

Суммировать

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

Прошлая информация и ссылки

Адрес официального документа Sentinel

Взято из ссылкиофициальная документация весеннего облака

Адрес официального сайта Alibaba Spring Cloud

Образец кода адреса

Адрес сервера nacos http://47.99.209.72:8848/nacos

Прошлый адрес весеннее облако алибаба адрес

Знакомство с весенним облаком Alibaba

Spring Cloud Alibaba (построен реестром nacos)

Spring Cloud Alibaba использует реестр nacos

Использование центра конфигурации Spring Cloud Alibaba nacos

служба весеннего облачного шлюза

Служба шлюза Spring Cloud zuul 1

Spring Cloud Gateway Service zuul II

Служба шлюза Spring Cloud для трех динамических маршрутов

Spring Cloud Alibaba gateway sentinel zuul четыре токоограничивающих предохранителя

Служба шлюза шлюза Spring Cloud 1

Утверждение службы шлюза Spring Cloud 2, фильтр

Шлюз Spring Cloud с тремя пользовательскими фильтрами GatewayFilter

Шлюз шлюза Spring Cloud, четыре динамической маршрутизации

Если вам это нравится, вы можете подписаться и поделиться этой общедоступной учетной записью.file

Заявление об авторских правах: эта статья является оригинальной статьей блоггера и соответствует соглашению об авторских правах CC 4.0 BY-SA. Пожалуйста, приложите ссылку на оригинальный источник и это заявление для перепечатки. Пожалуйста, прикрепите QR-код официального аккаунта для перепечатки