Em sistemas distribuídos, os arquivos de configuração são espalhados em cada projeto, dificultando o gerenciamento central ou se a configuração for modificada, ele precisará ser reiniciado antes que possa entrar em vigor. Em seguida, usamos a Spring Cloud Config para resolver esse ponto de dor.
Servidor de configuração
Usamos o Config-Server como o servidor de configuração e só precisamos adicionar dependências:
<Depencency> <PuerpId> org.springframework.cloud </frugiD> <TRATIFACTID> Spring-cloud-config-server </stutifactId> </dependency>
No application.yml, configure:
Spring: Aplicativo: Nome: Config-Server # Nome Cloud: Config: Servidor: Git: Uri: Arquivo: // Users/Yangdd/Documents/Code/Github/Config-Repo # Use Repositório Local (para Testes), Formato: FILE: // $ {User.home}/config-repo Se IS IS IS ISS, IS, IS FILE: IS: IS: IS: IS: $ {User.home}/config-repo se IS IS IS IS, https://github.com/yangdd1205/spring-cloud-master/ #username: username #senha: senha #default-label: config #pode ser com comprometer id, nomes de ramificação, nome de tag, o valor padrão: o portão: PORTO: PORTO: # #em outras palavras, além de pesquisar arquivos de configuração no root na raiz dos raiz, o que pode pesquisar, além de serem pesquisados para a pesquisa-os arquivos de root:Os projetos de primavera geralmente têm o princípio de "Convenção é maior que a configuração". Portanto, os arquivos de configuração em nosso git geralmente têm o nome de {Application}-{perfil} .yml ou {Application}-{perfil} .Properties.
Temos dois arquivos client-dev.yml na filial principal do Config-Repo:
Informações: Master-Dev
client-prod.yml:
Info: Master-Prod
Na filial da configuração, existem dois arquivos client-dev.yml:
Informações: config-dev
client-prod.yml:
Informações: Config-Prod
Inicie o Config-Server, podemos acessar os arquivos de configuração no Git através do relacionamento de mapeamento a seguir:
/{Applicatication }/ {Profile uma {labela {Applicationa {Profile {label {Application-)http: // localhost: 4001/client-dev.yml
Cliente de configuração
Usamos o Config-Client como o cliente de configuração e adicionamos dependências:
<Ependency> <PuerpId> org.springframework.boot </frugiD> <ArtifactId> Spring-boot-Starter-Web </ArtifactId> <pendence> <voundid> org.springframework.cloud </frupid> <stifactId> Spring-Cloud-Clout --Config </ArtiftId>
Configurar no bootstrap.yml (o bootstrap.yml será carregado antes do aplicativo.yml):
Spring: Aplicação: Nome: Cliente Cloud: Config: Uri: http: // localhost: 4001/## Representa o endereço do perfil do centro de configuração: dev # é equivalente ao spring.
Crie um testcontroller no config-client:
@RestControllerPublic Classe testController {@Value ("$ {info}") private String info; @RequestMapping (value = "/getinfo") public string getinfo () {return this.info; }}Visite http: // localhost: 4002/getinfo
Modifique o perfil no arquivo de configuração Config-Client para produzir e acessar para visualizar os resultados.
Agora, implementamos os arquivos de configuração para gerenciá -los de maneira unificada, mas depois de modificar os arquivos de configuração, como não podemos reiniciar e entrar em vigor?
Introduzimos dependências no config-client:
<Depencency> <PuerpId> org.springframework.boot </frugiD> <ArtifactId> Spring-boot-starter-actuator </stutifactId> </dependency>
Adicione a anotação @RefreshScope à classe que precisa de atualização dinâmica, aqui o adicionamos ao testcontroller. E desativar a autenticação de permissão do atuador no arquivo de configuração:
Gerenciamento: Segurança: Ativado: Falso
Reinicie o projeto, http: // localhost: 4002/getinfo O resultado é: config-dev e agora modifique o arquivo config-dev.yml:
Informações: config-dev-1.0
Chame o método do atuador e atualize manualmente. http: // localhost: 4002/atualização Nota: Deve ser o método de postagem. Você pode ver o que são mudanças:
["Info"]
Visite http: // localhost: 4002/getinfo novamente e o resultado é: config-dev-1.0.
Descobrimos que, embora a configuração possa ser atualizada dinamicamente, o método de atualização deve ser chamado manualmente sempre. Se eu tiver 1.000 serviços, tenho que chamá -lo de 1.000 vezes. Existe uma maneira melhor? Isso é para usá -lo em conjunto com o barramento da nuvem da primavera.
Altamente disponível
Agora, nosso servidor de configuração é um serviço de ponto único e, uma vez que o último cliente de configuração estiver pendurado, ele não será usado. Então, na geração, o servidor de configuração deve estar altamente disponível, então como fazê -lo? É muito simples. Assim como a alta disponibilidade de Eureka mencionada anteriormente, você só precisa implantar vários outros servidores de configuração.
Usamos o Projeto Eureka como o centro de registro com a porta: 7001.
Copie o Config-Server para Config-Server-1, com Port: 4003, e registre os dois servidores de configuração no Centro de Registro.
Registre o Config-Client no Registro e especifique para obter o servidor de configuração de Eureka:
Spring: Cloud: Config: #uri: http: // localhost: 4001/## Representa o endereço do centro de configuração, especifique diretamente o perfil de endereço do servidor de configuração: dev #label: config descoberta: habilitado: # ativação # para obter o servidor de config-it: config-server # Nome do servidor Servidor
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.