簡単な紹介
スプリングクラウド構成は、分散型システムインフラストラクチャサービスとして使用され、マイクロアプリケーションは二つの部分CONFIGSERVER ConfigClientにサーバとクライアントとに分割された外部構成をサポートし、集中しました。サービスセンター側は、分散構成と呼ばれており、それは独立したマイクロサービスアプリケーション、倉庫および構成情報、暗号化/復号化情報アクセスインタフェース等へのアクセスを提供するためにクライアントを接続するように構成され、そしてクライアントは、マイクロサービスアーキテクチャであります個々のマイクロサービスアプリケーションやインフラストラクチャが、彼らは、ブート時にコンフィギュレーション・センターからアプリケーションのリソースと設定指定された設定の中心を通るビジネス関連コンテンツ、および取得とロードの設定情報を管理します。外部のSpringアプリケーションを構築するだけでなく、適用されますので、春の雲コンフィグは、サーバとクライアントの環境変数と構成プロパティの抽象マッピングを達成するため、また他の言語で実行する任意のアプリケーションで使用することができます。春クラウドコンフィグストアの構成情報にGitリポジトリを使用して、コンフィギュレーション・センターのデフォルトを達成するので、春クラウドコンフィグはマイクロサービスアプリケーションの構成情報のためのサポートバージョン管理に自然に構築構成サーバーを使用して、管理のGitのクライアントツールで簡単にできます設定およびアクセス内容。
サーバーの構成Configをサーバ(HA)
ファイルの依存関係にのpom.xmlを追加
<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.springcloud</groupId>
<artifactId>springcloud-root</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>springcloud-config-server</artifactId>
<name>springcloud-config-server</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<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.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Application.yml設定ファイル
- application.yml
spring:
application:
name: springcloud-config-server
freemarker:
prefer-file-system-access: false
security:
user:
name: admin
password: 123456
cloud:
config:
# 配置仓库的分支
label: master
server:
git:
# 配置git仓库地址
# uri: [email protected]/springcloud-config.git
uri: file:E:/SpringBoot/SpringCloud/springcloud-root/springcloud-config
# 配置仓库路径
search-paths: config-file
# 访问git仓库的用户名
username: zhaojq
# 访问git仓库的用户密码
password: 123456
server:
port: 8130
eureka:
instance:
hostname: eureka-config-server.com
instance-id: eureka-config-server
client:
service-url:
defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@eureka-peer1.com:8897/eureka/,http://${spring.security.user.name}:${spring.security.user.password}@eureka-peer2.com:8898/eureka/,http://${spring.security.user.name}:${spring.security.user.password}@eureka-peer3.com:8899/eureka/
変更C:\ WINDOWS \ System32に\ drivers \ etcに\ホスト
127.0.0.1 eureka-config-server.com
ローカルのGitリポジトリを設定します
gitのサービスをダウンロードしてインストール
https://git-scm.com/
gitのbashの構成:
git config --global user.name "zhaojq"
git config --global user.email "[email protected]"
git config --global user.password "123456"
ローカルのgitリポジトリを作成します。
-
application-test.properties
テスト環境設定ファイル
-
application-dev.properties
開発環境の設定ファイル
-
application-pro.properties
正式な環境設定ファイルを
コンフィグサーバの起動クラスを追加します。
- ConfigServerApplication.java
起動クラスプラス@EnableConfigServerコメントで
package org.springcloud.config.server;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
@EnableConfigServer
@SpringBootApplication
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}
テストコンフィグサーバ
スタート-CONFIG-Serverプロジェクトspringcloud
HTTPリクエストとアドレスリソースファイルマッピングは次のとおりです。
- / {アプリケーション} / {プロファイル} / {ラベル}]
- /{application}-{profile}.yml
- /{label}/{application}-{profile}.yml
- /{application}-{profile}.properties
- /{label}/{application}-{profile}.properties
アクセスアドレスhttp://eureka-config-server.com:8130/application/test/master
アクセスアドレスhttp://eureka-config-server.com:8130/application-test.yml
アクセスアドレスのhttp:// eureka- config-server.com:8130/master/application-test.yml
アクセスアドレスhttp://eureka-config-server.com:8130/application-test.properties
アクセスアドレスhttp://eureka-config-server.com: 8130 /マスター/ application-test.properties
アクセスアドレスhttp://eureka-config-server.com:8130/master/testは、
サービスセンターは、構成情報を取得することができます構成することを証明。
クライアントの構成Configをクライアント
ファイルの依存関係にのpom.xmlを追加
<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.springcloud</groupId>
<artifactId>springcloud-root</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>springcloud-config-client</artifactId>
<name>springcloud-config-client</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<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.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Bootstrap.yml設定ファイル
spring:
application:
name: springcloud-config-client
freemarker:
prefer-file-system-access: false
security:
user:
name: admin
password: 123456
profiles:
#读取测试环境配置文件
#active: test
#读取开发环境配置文件
#active: dev
#读取正式环境配置文件
active: pro
cloud:
config:
label: master
fail-fast: true
#指明配置服务中心的网址
uri: http://eureka-config-server.com:8130
server:
port: 8131
eureka:
instance:
hostname: eureka-config-client.com
instance-id: eureka-config-client
client:
service-url:
defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@eureka-peer1.com:8897/eureka/,http://${spring.security.user.name}:${spring.security.user.password}@eureka-peer2.com:8898/eureka/,http://${spring.security.user.name}:${spring.security.user.password}@eureka-peer3.com:8899/eureka/
テストコンフィグクライアント
スタート-設定-クライアントプロジェクトspringcloud
コンフィグクライアントが正常にコンフィグサーバへの公式の環境設定ファイルを読み込みます。
クライアントの構成Configをクライアント(HA)
参考https://blog.csdn.net/miaodichiyou/article/details/104160284
修正springcloud-ユーレカ・プロバイダー・プログラム
依存関係ファイルのpom.xml
<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.springcloud</groupId>
<artifactId>springcloud-root</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>springcloud-eureka-provider</artifactId>
<name>springcloud-eureka-provider</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-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>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
bootstrap.ymlファイルを増やします
spring:
application:
name: springcloud-eureka-provider
freemarker:
prefer-file-system-access: false
security:
user:
name: admin
password: 123456
cloud:
config:
#profile: dev
label: master
fail-fast: true
#指明配置服务中心的网址
uri: http://eureka-config-server.com:8130
#discovery:
#service-id: springcloud-config-server
#enabled: true
eureka:
client:
service-url:
defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@eureka-peer1.com:8897/eureka/,http://${spring.security.user.name}:${spring.security.user.password}@eureka-peer2.com:8898/eureka/,http://${spring.security.user.name}:${spring.security.user.password}@eureka-peer3.com:8899/eureka/
修正アプリケーションprovider.yml
- アプリケーションprovider1.yml
spring:
cloud:
config:
profile: dev
server:
port: 8001
eureka:
instance:
hostname: eureka-provider1.com
instance-id: eureka-provider1
- アプリケーションprovider2.yml
spring:
cloud:
config:
profile: pro
server:
port: 8002
eureka:
instance:
hostname: eureka-provider2.com
instance-id: eureka-provider2
- アプリケーションprovider3.yml増加
spring:
cloud:
config:
profile: test
server:
port: 8003
eureka:
instance:
hostname: eureka-provider3.com
instance-id: eureka-provider3
ファイルを追加します。
- ConfigProviderApplication.java
package org.springcloud.eureka.provider;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class ConfigProviderApplication {
@Value("${content}")
String content;
@Value("${server.port}")
String port;
@RequestMapping("/config")
public String Home(@RequestParam String name) {
return "Hello "+name+", This is from serverport:" + port+",content="+content;
}
public static void main(String[] args) {
SpringApplication.run(ConfigProviderApplication.class, args);
}
}
プロジェクトを開始するためには、
springcloud-ユーレカ・クラスタ・ピア1
springcloud-ユーレカ・クラスタ・ピア2
springcloud-ユーレカ・クラスタpeer3
springcloud-config設定サーバ
springcloud-ユーレカ-provider1
springcloud-ユーレカ-provider2
springcloud-ユーレカ-provider3
ブラウザアクセスhttp://eureka-provider1.com:8001/config?name=zhaojq
ブラウザアクセスhttp://eureka-provider2.com:8002/config?name=zhaojq
ブラウザアクセスhttp://eureka-provider3.com:8003/config?name=zhaojq
装うテスト
参考https://blog.csdn.net/miaodichiyou/article/details/104304853
以下のファイルを変更します。
- FeignConsumer.java
package org.springcloud.feign;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Component
/*指定这个接口所要调用的提供者服务名称 */
@FeignClient(value = "springcloud-eureka-provider",configuration = FeignConfig.class,fallback = FeignHystrix.class)
public interface FeignConsumer {
@GetMapping(value = "/hi")
String sayHiFromEurekaProvider(@RequestParam(value = "name")String name);
@GetMapping(value = "/config")
String getConfigFromConfigServer(@RequestParam(value = "name")String name);
}
- FeignController.java
package org.springcloud.feign;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/*调用提供者的home方法*/
@RestController
public class FeignController {
@Autowired
FeignService feignService;
@GetMapping("/hi")
public String hi(@RequestParam(defaultValue = "zhaojq",required = false)String name){
return feignService.hi(name);
}
@GetMapping("/config")
public String config(@RequestParam(defaultValue = "zhaojq",required = false)String name){
return feignService.config(name);
}
}
- FeignService.java
package org.springcloud.feign;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class FeignService {
@Autowired
FeignConsumer feignConsumer;
public String hi(String name){
return feignConsumer.sayHiFromEurekaProvider(name);
}
public String config(String name){
return feignConsumer.getConfigFromConfigServer(name);
}
}
- FeignConsumer.java
package org.springcloud.feign;
import org.springframework.stereotype.Component;
@Component
public class FeignHystrix implements FeignConsumer {
@Override
public String sayHiFromEurekaProvider(String name) {
return "hi,"+name+", use Feign + hystrix, eureka-provider is down!";
}
@Override
public String getConfigFromConfigServer(String name) {
return "hi,"+name+", use Feign + hystrix, eureka-provider is down!";
}
}
スタートspringcloud-装う
コマンドウィンドウカールhttp://eureka-feign.com:8101/configに、装うは、ロードバランシングを実現することが見出されています