Dans les systèmes distribués, les fichiers de configuration sont dispersés dans chaque projet, ce qui rend difficile la gestion de manière centralisée, ou si la configuration est modifiée, elle doit être redémarrée avant de pouvoir prendre effet. Ensuite, nous utilisons la configuration de Spring Cloud pour résoudre ce point de douleur.
Serveur de configuration
Nous utilisons Config-Server comme serveur de configuration et nous devons seulement ajouter des dépendances:
<dependency> <proupId> org.springframework.cloud </proupId> <ArtifactId> Spring-Cloud-Config-Server </retifactid> </Dependency>
Dans Application.yml, Configurer:
Spring: Application: Name: config-server # Nom Cloud: config: Server: git: uri: fichier: // utilisateurs / yangdd / documents / code / github / config-repo # le référentiel local (pour les tests), format: fichier: // $ {user.home} / config-repo Si c'est window https://github.com/yangdd1205/spring-cloud-master/ #Username: nom d'utilisateur # mot de passe: mot de passe # default-label: config # peut être adopté ID, nom de la branche, nom de balise, la valeur par défaut est Master # Rechercher-Paths: # En d'autres mots, en plus de recherche pour la recherche de fichiers de configuration: Port: Port Root, vous pouvez également rechercher dans le Port Suivant # OrdureLes projets de printemps ont généralement le principe de "la convention est supérieure à la configuration". Par conséquent, les fichiers de configuration de notre git sont généralement nommés d'après {application} - {profil} .yml ou {application} - {profil} .properties.
Nous avons deux fichiers Client-Dev.yml dans la branche maître de config-repo:
Info: Master-DEV
client-prod.yml:
Info: Master-Prod
Dans la branche de configuration, il y a deux fichiers client-dev.yml:
Info: config-DEV
client-prod.yml:
Info: config-prod
Démarrer Config-Server Nous pouvons accéder aux fichiers de configuration dans GIT via la relation de mappage suivante:
/Application }/{profile }@/{Label}http: // localhost: 4001 / client-dev.yml
Client de configuration
Nous utilisons Config-Client comme client de configuration et ajoutez des dépendances:
<dependency> <proupId> org.springframework.boot </proupId> <Artifactid> printemp-boot-starter-web </ artifactid> <dependency> <proupId> org.springframework.cloud </prouprid> <ptefactid> printemps-cloud-starter-config </letifactisid> </sendency>
Configurer dans bootstrap.yml (bootstrap.yml se chargera avant application.yml):
spring: application: name: client cloud: config: uri: http://localhost:4001/ ## represents the address of the configuration center profile: dev # is equivalent to the spring.profiles.active attribute, but the priority is higher than spring.profiles.active #label: config # If you do not specify the use of label in the server, if specified, the client server: port: 4002 # port
Créer un test Controller dans Config-Client:
@RestControllerPublic Class TestController {@Value ("$ {info}") Info de chaîne privée; @RequestMapping (value = "/ getInfo") String public getInfo () {return this.info; }}Visitez http: // localhost: 4002 / getinfo
Modifiez le profil dans le fichier de configuration de configuration-client pour y promener et accéder pour afficher les résultats.
Nous avons maintenant implémenté les fichiers de configuration pour les gérer de manière unifiée, mais après avoir modifié les fichiers de configuration, comment ne pas redémarrer et prendre effet?
Nous introduisons les dépendances dans la configuration-Client:
<dependency> <proupId> org.springframework.boot </rombasid> <ArtefactId> printemp-boot-starter-actuator </retifactid> </pedidency>
Ajoutez l'annotation @RefreshScope à la classe qui nécessite un rafraîchissement dynamique, nous l'ajoutons ici au testController. Et désactiver l'authentification d'autorisation de l'actionneur dans le fichier de configuration:
Gestion: Sécurité: activé: faux
Redémarrez le projet, http: // localhost: 4002 / getInfo Le résultat est: config-dev, et modifiez maintenant le fichier config-dev.yml:
Info: config-dev-1.0
Appelez la méthode de l'actionneur et actualisez manuellement. http: // localhost: 4002 / rafraîchissement Remarque: il doit être la méthode post. Vous pouvez voir quels sont les changements:
["info"]
Visitez http: // localhost: 4002 / getInfo à nouveau et le résultat est: config-dev-1.0.
Nous avons constaté que bien que la configuration puisse être actualisée dynamiquement, la méthode de rafraîchissement doit être appelée manuellement à chaque fois. Si j'ai 1 000 services, je dois l'appeler 1 000 fois. Y a-t-il une meilleure façon? C'est-à-dire l'utiliser en conjonction avec le bus Cloud Spring.
Très disponible
Maintenant, notre serveur de configuration est un service à point unique, et une fois que ce dernier client de configuration sera raccroché, il ne sera pas utilisé. Donc, dans la génération, le serveur de configuration doit être très disponible, alors comment le faire? C'est très simple. Tout comme la haute disponibilité d'Eureka mentionnée précédemment, il vous suffit de déployer plusieurs autres serveur de configuration.
Nous utilisons le projet Eureka comme centre d'inscription avec le port: 7001.
Copiez Config-Server sur config-Server-1, avec Port: 4003, et enregistrez les deux serveurs de configuration au centre de registre.
Enregistrez la configuration-client dans le registre et spécifiez pour obtenir le serveur de configuration à partir d'Eureka:
Spring: cloud: config: #uri: http: // localhost: 4001 / ## représente l'adresse du centre de configuration, spécifiez directement le profil d'adresse du serveur de configuration: dev #Label: Config Discovery: Activé: true # # Activer pour obtenir le service de configuration-id: config-Server # Config Server Service Name Service Name
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.