config
分佈式配置中心
在大量的集羣中,各種工程都需要屬性的配置properties文件
一旦出現屬性的共享,例如redis配置,es配置,數據庫配置;各自工程維護起來比較麻煩,而且更新不及時;
微服務框架提供一個共享的分佈式配置中心,所有的服務註冊者都可以是分佈式配置中心的客戶端,通過中心管理的github上的配
置文件,實現共享配置;
github: 開源的資源,代碼,框架,技術分享的網站和git有個相同的特點,就是資源可以實現回滾和版本控制;
每個不同的用戶可以擁有免費的和付費的github資源,使用線下的git向github傳遞數據;
git:軟件版本管理器,資源管理器
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
服務端
@SpringBootApplication
@EnableConfigServer 標識
這裏很好奇,爲什麼config的配置文件命名是bootstrap
這是由spring boot的加載屬性文件的優先級決定的,你想要在加載屬性之前去spring cloud config server上取配置文件,
那spring cloud config相關配置就是需要最先加載的,而bootstrap.properties的加載是先於application.properties的,
所以config client要配置config的相關配置就只能寫到bootstrap.properties裏了
bootstrap.properties
spring.application.name=config-server
server.port=8098
spring.cloud.config.server.git.uri=https://github.com/duzhenguo/springcloud 你github/碼雲的地址
spring.cloud.config.server.git.searchPaths=/config
searchPaths定義了配置文件搜索的位置,可以配置多個,多個之間用逗號分隔,這樣多個微服務就可以在配置中心有自己的配置文件
spring.cloud.config.label=master
spring.cloud.config.server.git.username=你github/碼雲的登陸用戶名
spring.cloud.config.server.git.password=對應的密碼
客戶端
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
@SpringBootApplication
@RestController
public class HiController {
@Value("${name}")
private String name;
@Value("${age}")
private String age;
@RequestMapping("/")
public String printPro(){
return name+"/"+age;
}
}
bootstrap.properties
server.port=8101
spring.application.name=對應的文件的名字
spring.cloud.config.profile=test 這個不清楚 網上找了有人用的prod 解釋說對應上面的profile 不理解
spring.cloud.config.label=master
spring.cloud.config.uri=http://localhost:8100