Nacos 構成管理サービス

統合構成管理

機能:同じ設定ファイルを持つマイクロサービスの設定ファイルを一元管理。

統合構成管理は、このシナリオに対する解決策です。通常の状況では、同じ機能を持つ複数のマイクロサービス インスタンスがあり、構成が変更された場合、それらを 1 つずつ変更してから再起動する必要があります。

コア構成は構成管理サービスに配置されており、マイクロサービスは起動時に構成管理サービス内のコア構成を読み込み、自身の構成と組み合わせて起動します。

構成管理サービスで構成が変更されると、必要なマイクロサービスに自動的に通知され、マイクロサービスがそれを読み取った後、ホット アップデートが自動的に完了します

「構成管理」->「構成リスト」に追加します。

コード構成プロセス

プロジェクトの起動→bootstrap.yml→nacos設定ファイルの読み込み→ローカルのapplication.ymlの読み込み→Springコンテナの作成→Beanのロード。

1. Maven 依存関係を導入する

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

2. bootstrap.ymlを作成する

データ ID から構成されるサービス名 + 開発環境 + ファイルサフィックス名、つまり ${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  #文件后缀名

使用する場合:

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

ホットアップデートを構成する

アップデートは約 5 秒以内に有効になります。

方法 1: @RefreshScope を使用する

ホット アップデートは、@Value を使用するクラスで @RefreshScope アノテーションを使用することで実現できます。

@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));
    }
}

 方法 2: @ConfigurationProperties を使用する (推奨)

<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()));
    }
}

複数環境の構成共有

一部の値は開発、テスト、運用中に変更されないため、複数環境の構成共有に適しています。

複数の構成の優先順位:サービス名-プロファイル.yaml > サービス名.yaml > ローカル構成

おすすめ

転載: blog.csdn.net/LYXlyxll/article/details/132456177