Nacos-Konfigurationsverwaltungsdienst

Einheitliches Konfigurationsmanagement

Funktion: Einheitliche Verwaltung von Konfigurationsdateien für Microservices mit denselben Konfigurationsdateien.

Eine einheitliche Konfigurationsverwaltung ist eine Lösung für das Szenario: Wenn unter normalen Umständen mehrere Microservice-Instanzen mit derselben Funktion vorhanden sind und die Konfiguration geändert wird, müssen diese einzeln geändert und dann neu gestartet werden.

Die Kernkonfiguration wird im Konfigurationsverwaltungsdienst abgelegt . Beim Start liest der Mikrodienst die Kernkonfiguration im Konfigurationsverwaltungsdienst und kombiniert sie zum Starten mit seiner eigenen Konfiguration.

Nach den Konfigurationsänderungen im Konfigurationsverwaltungsdienst werden die erforderlichen Mikrodienste automatisch benachrichtigt und das Hot-Update wird automatisch abgeschlossen, nachdem die Mikrodienste es gelesen haben .

In Konfigurationsverwaltung -> Konfigurationsliste hinzufügen:

Code-Konfigurationsprozess

Projektstart -> Bootstrap.yml -> Nacos-Konfigurationsdatei lesen -> Lokale Anwendung.yml lesen -> Federcontainer erstellen -> Beans laden.

1. Führen Sie Maven-Abhängigkeiten ein

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

2. Erstellen Sie bootstrap.yml

Dienstname + Entwicklungsumgebung + Dateisuffixname bilden die Daten-ID, das heißt: ${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

spring:
  application:
    name: userservice #eureka的服务名称
  profiles:
    active: dev  #开发环境
  cloud:
    nacos:
      server-addr: localhost:8848  # nocos服务器地址
      config:
        file-extension: yaml  #文件后缀名

Beim Benutzen:

@Value("${pattern.dateformat}")
private String dateFormat;

Hot-Update konfigurieren

Das Update wird in etwa fünf Sekunden wirksam.

Methode 1: Verwenden Sie @RefreshScope

Hot-Updates können durch die Verwendung der @RefreshScope-Annotation für Klassen erreicht werden, die @Value verwenden.

@Slf4j
@RestController
@RequestMapping("/user")
@RefreshScope
public class UserController {

    @Value("${pattern.dateformat}")
    private String dateFormat;

    @GetMapping("date")
    public String now() {
        return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateFormat));
    }
}

 Methode 2: Verwenden Sie @ConfigurationProperties (empfohlen)

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>
@Data
@Component
@ConfigurationProperties(prefix = "pattern")
public class PatternProperties {
    private String dateformat;
}
@Slf4j
@RestController
@RequestMapping("/user")
@RefreshScope
public class UserController {

    @Autowired
    private PatternProperties properties;
    
    @GetMapping("date")
    public String now() {
        return LocalDateTime.now().format(DateTimeFormatter.ofPattern(properties.getDateformat()));
    }
}

Konfigurationsfreigabe für mehrere Umgebungen

Einige Werte bleiben während der Entwicklung, des Testens und der Produktion unverändert, sodass sie für die gemeinsame Nutzung von Konfigurationen in mehreren Umgebungen geeignet sind.

Mehrere Konfigurationsprioritäten: Dienstname-Profil.yaml > Dienstname.yaml > lokale Konfiguration .

Acho que você gosta

Origin blog.csdn.net/LYXlyxll/article/details/132456177
Recomendado
Clasificación