나코스 구성 관리 서비스

통합 구성 관리

기능: 동일한 구성 파일로 마이크로서비스 구성 파일을 통합 관리합니다.

통합 구성 관리는 시나리오에 대한 솔루션입니다. 일반적인 상황에서 동일한 기능을 가진 여러 개의 마이크로서비스 인스턴스가 있는 경우 구성이 변경되면 하나씩 변경한 후 다시 시작해야 합니다.

핵심 구성은 구성 관리 서비스 에 배치되며 , 시작 시 마이크로 서비스는 구성 관리 서비스 의 핵심 구성을 읽고 이를 자체 구성과 결합하여 시작합니다.

구성 관리 서비스 에서 구성이 변경된 후 필요한 마이크로서비스에 자동으로 통보되고, 마이크로서비스가 이를 읽은 후 핫 업데이트가 자동으로 완료됩니다 .

구성 관리->구성 목록에 추가:

코드 구성 프로세스

프로젝트 시작->bootstrap.yml->nacos 구성 파일 읽기->로컬 application.yml 읽기->스프링 컨테이너 생성->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()));
    }
}

다중 환경 구성 공유

일부 값은 개발, 테스트, 생산 과정에서 변경되지 않으므로 다중 환경 구성 공유에 적합합니다.

다중 구성 우선순위: service name-profile.yaml > service name.yaml > localconfiguration .

추천

출처blog.csdn.net/LYXlyxll/article/details/132456177