スプリングクラウドの構成センターとは何ですかスプリングクラウド構成は、マイクロサービスアーキテクチャのマイクロサービスに一元化された外部構成サポートを提供し、構成サーバーは、さまざまなマイクロサービスアプリケーションのすべての環境に一元化された外部構成を提供します。
スプリングクラウド構成で何ができますか?
- 一元管理プロファイル
- さまざまな環境でのさまざまな構成、動的な構成の更新、
- 運用中に構成を動的に調整し、サービスによって展開された各マシンに構成ファイルを書き込む必要がなくなり、サービスは構成センターから独自の情報を均一にプルして構成します。
- 構成が変更された場合、構成を認識して最新の構成を適用するためにサービスを再起動する必要はありません。
- RESTインターフェーススタイルで構成情報を公開する
githubを介して構成センターを構成する
- githubにspring-cloud-configの新しいリポジトリを作成します
- ローカルクローンの後で変更し、さまざまな環境の構成ファイルを追加します
- 新しいモジュールモジュールを作成して、構成センターを設定します
application.yml
server:
port: 3344
spring:
application:
name: cloud-config-center # 注册进eureka服务器的微服务名字
cloud:
config:
server:
git:
uri: https://github.com/sofencyXiao/spring-cloud-config.git
search-paths:
- spring-cloud-config #搜索目录
label: master #读取分支
eureka:
client:
service-url:
defaultZone: http://localhost:7001/eureka
クラスを開始
@SpringBootApplication
@EnableDiscoveryClient
@EnableConfigServer // 启动配置服务器
public class ConfigCenterApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigCenterApplication.class,args);
}
}
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">
<parent>
<artifactId>Spring Cloud学习</artifactId>
<groupId>org.example</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ConfigCenter</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--监控-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--eureka client-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
</project>
サーバーの構成情報にアクセスするようにクライアントを構成
する新しいモジュールを作成して
、構成センターのクライアント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">
<parent>
<artifactId>Spring Cloud学习</artifactId>
<groupId>org.example</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ConfigClient</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--监控-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--eureka client-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
</project>
bootsrtap.ymlは、application.yml
構成の前のシステムレベルの構成ファイルのロード順序です。
server:
port: 3355
spring:
application:
name: config-client
cloud:
#客户端配置
config:
label: master #分支名称 github配置中心的分支
name: config #配置文件的名字 对应github上面的文件就是{name}-{profile}.yml
profile: dev #读取的后缀名称
uri: http://localhost:3344 #配置中心的地址
#服务注册到eureka
eureka:
client:
service-url:
defaultZone: http://localhost:7001/eureka
クライアントスタートアップクラス
@SpringBootApplication
@EnableDiscoveryClient
public class ConfigClientApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigClientApplication.class,args);
}
}
コントローラがgithubの構成ファイルにアクセスできるかどうかをテストします
@RestController
public class ConfigClientController {
@Value("${config.info}") //github配置中心上面config-dev.yml下的内容config.info的信息
private String configInfo;
@GetMapping("/configInfo")
public String getConfigInfo(){
return configInfo;//
}
}
上記の構成の問題は、githubの構成を変更した後、3344のアプリケーションでアクセスすることによりhttp://localhost:3344/master/config-dev.yml
、githubの最新情報にアクセスできることですが、3355のインターフェイスを介して構成ファイルにアクセスすると、元の情報が表示され、時間内に実行されません。操作を更新します。
再起動しない限り。
ただし、サービスの数が増えると、ビジネスモジュールを変更するたびに再起動するのに非常に時間がかかるため、注釈を導入してアクチュエータの監視を追加する必要があります。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
@RefreshScope、およびポストリクエストを再度使用する必要があります curl -X POST "http://localhost:3355/actuator/refresh"
@RestController
@RefreshScope
public class ConfigClientController {
@Value("${config.info}") //github配置中心上面config-dev.yml下的内容config.info的信息
private String configInfo;
@GetMapping("/configInfo")
public String getConfigInfo(){
return configInfo;//
}
}
しかし、マイクロサービスが増えると、毎回クライアントをアクティブ化するためにポストリクエストを実行する必要がありますか?そこで、バスバスの概念が導入されました