为什么我们需要Spring cloud Config Server?
在微服务时代之前,我们曾经创建属性文件,并在其中维护可配置参数,因此,如果我们更改参数值或添加或删除参数,则通常需要重新启动应用程序容器。
配置整体应用程序通常非常简单。 您可以在将要部署应用程序的服务器中设置环境变量,也可以在部署中嵌入一个或多个属性文件以及应用程序代码。
但是,将配置作为部署的一部分会带来一些挑战:
- 配置可能会更频繁地更改
- 在各种环境中,配置可能需要不同
- 配置中可能包含应用程序开发人员无法查看的信息(例如密码)
此外,在微服务架构中,嵌入式配置导致所有微服务之间的配置详细信息重复。 这使得管理和更改配置变得困难,因为这将需要重建和重新部署所有微服务。
为消除此问题,微服务体系结构中的配置详细信息应集中化,而不应在每个微服务的部署中携带. 集中化的优势在于它可以独立于依赖它的应用程序进行共享,演进和版本控制.
设置
Create a new project via https://start.spring.io/ , import it on your IDE and add dependencies in pom.下面提到的xml.
After adding all dependencies , go to project directory in terminal and run following command : mvn全新安装
加@EnableConfigServer在主文件中。 Spring Cloud Config Server为外部配置提供了一个基于HTTP资源的API。 通过使用@EnableConfigServer批注,该服务器可嵌入到Spring Boot应用程序中。
让我们拥有一个微服务:网关。 现在,我们将创建一个git存储库,集中所有微服务的配置。
我们将在此存储库下有一个配置文件夹用于演示:
现在在配置下,我们可以为不同的环境(例如gateway-dev.yml,gateway-qa.yml等)创建多个yaml配置文件。
现在,我们将在src / main / resource文件夹中创建两个配置文件,一个用于开发环境,一个用于qa环境。
我们正在使用引导程序前缀配置文件,因为它是在其他yml或属性文件之前加载的.
就是这样,我们已经设置了Spring Cloud配置服务器.
转到浏览器. To verify config server is working fine , hit url (http://本地主机:8888/{service-name}/{profile} )
http://localhost:8888/gateway/dev
{
"name":"gateway",
"profiles":["dev"],
"label":null,
"version":"ea7c7a8b36be3f483c25df24342e0db1ee1486e9",
"state":null,
"propertySources":[]
}
http://localhost:8888/gateway/qa
{
"name":"gateway",
"profiles":["qa"],
"label":null,
"version":"ea7c7a8b36be3f483c25df24342e0db1ee1486e9",
"state":null,
"propertySources":[]
}
现在,微服务必须在pom.xml中包含spring-cloud-starter-config依赖关系,并且我们必须在微服务配置文件中指向spring-cloud-server服务。
您可以随时更改微服务的环境,cloud-config-server将为您提供有关该环境的所有配置。
谢谢
如果您觉得本文有帮助,请告诉我,或者您可以对本文提出疑问。 🙂