Spring Cloud config
Configuration Service在微服务架构中是一个非常重要的组件。如12要素应用理论所说, 微服务应用的配置应该存储在环境中,而不是本地项目中。
Configuration service(配置服务)是一个必不可少的基础组件的原因是因为它可以对所有通过点对点和检索的基础服务进行服务管理。
假设我们有多个部署环境。比如我们有一个临时环境和一个生产环境,针对每个环境的配置将会是不同的。每一个configuration service 将会由一个独立的Git仓库或者同一个Git仓库不同分支来存放环境配置(建议使用不同的独立Git仓库)。没有其它环境能够访问到这个配置仓库,它只是提供该环境中运行的配置服务罢了。
当Configuration service启动后,它将会指向那些根据配置文件配置的路径并启动对应服务。每一个微服务通过读取自己配置文件中的具体环境来运行。在这一过程中,配置是通过版本管理来进行的内部和集中化管理,更改配置不需要重启服务。(先只讲怎么搭建configuration service别的在后续章节同一讲解)下面介绍使用 Maven 作为构建工具创建的 Spring Cloud Config 应用。
Spring Boot 示例应用的 POM 文件
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.sixtykb.cloud</groupId> <artifactId>sixtykb-config-server</artifactId> <version>0.0.1</version> <packaging>jar</packaging> <name>configServer</name> <description>Config Server project for Spring Cloud</description> <parent> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-parent</artifactId> <version>Angel.SR6</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <start-class>com.sixtykb.cloud.ConfigApplication</start-class> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <!--skip deploy (this is just a test module) --> <artifactId>maven-deploy-plugin</artifactId> <configuration> <skip>true</skip> </configuration> </plugin> </plugins> </build> </project>
"spring-cloud-starter-parent"其实是继承于"spring-cloud-parent",而"spring-cloud-parent"是继承的"spring-boot-starter-parent",那么创建一个"spring-cloud-starter-parent"项目从根本来说就是创建一个spring boot项目,spring boot 请看上一章节《spring Cloud 微服务学习之Spring boot》,在上面的pom.xml中可以看见
<start-class>com.sixtykb.cloud.ConfigApplication</start-class>
这个其实表示当前项目的启动类叫ConfigApplication
@EnableConfigServer @SpringBootApplication public class ConfigApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(ConfigApplication.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(ConfigApplication.class); } }
这样就完成了一大半了,那这样是否可以启动呢?其实刚刚说过“每一个configuration service 将会由一个独立的Git仓库或者同一个Git仓库不同分支来存放环境配置。”,这样看来我们还需要配置Git仓库
application.properties
spring.application.name=config spring.cloud.config.server.git.uri=git://git.coding.net/meyer/sixtykb-config.git spring.cloud.config.server.git.search-paths=config-repo server.port=8080
当然我创建的git仓库(git://git.coding.net/meyer/sixtykb-config.git)是一个公共的,所以不需要配置用户名和密码,如果你是一个私有的仓库那么你的spring.cloud.config.server.git.uri可以这样写https://username:password@git.coding.net/meyer/sixtykb-config.git或者添加2行配置spring.cloud.config.server.git.username和spring.cloud.config.server.git.password更多配置可以参考官方.
这样我们一个简单的spring cloud config server 就配置完成了。
转载请注明:晓窗博客 » spring Cloud 微服务学习之ConfigServer