微服务的痛点:
- 微服务本身是个分布式系统, 是复杂的
- 分布式事务问题
- 测试
- 部署
升级部署问题的解决方案:配置中心【框架SpringCloudConfig】
SpringCloud自带的配置中心SCC工作原理:
SpringCloud Config包含2个模块:服务端、客户端。
其中的服务端是中心地址,管理外部的属性,这些属性是来自其他的应用的。客户端只有从server获取这些配置文件字段的。
案例小实操:
然后建立2个子工程:
第2 个也是相同操作。
创建完成后应该是:
父工程的pom.xml:
<?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.yinlei</groupId>
<artifactId>sccdemo</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>scc-server</module>
<module>scc-client</module>
</modules>
<!-- springboot版本-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<!-- 配置阿里云地址,提升访问速度-->
<repositories>
<repository>
<id>maven-ali</id>
<url>http://maven.aliyun.com/nexus/content/groups/public//</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
<checksumPolicy>fail</checksumPolicy>
</snapshots>
</repository>
</repositories>
</project>
编写server端代码:
server端应该保留整个微服务架构里面所有的子系统的配置项。
先给server端的pom.xml
这里是从本地文件读取配置的。
spring cloud config可以从很多数据源读取配置信息的:数据库、git、文件等
然后运行服务端:
说明配置中心服务端这个节点已经正常的运行了!
编写客户端:
客户端的作用:去配置中心拉取配置
上面的profile:dev是指的:
然后运行服务端和客户端:
注意有个坑:
客户端的
不要写成application.yml,涉及到加载流程,否则获取不到url
启动时要观察日志输出。