快速入門
本快速入門將指導您如何使用 Spring Cloud Zookeeper 進行服務發現和分散式配置。
首先,在您的機器上執行 Zookeeper。然後,您可以訪問它,並將其用作 Spring Cloud Zookeeper 的服務註冊中心和配置源。
Discovery Client 用法
要在應用程式中使用這些功能,您可以將其構建為 Spring Boot 應用程式,並依賴於 spring-cloud-zookeeper-core 和 spring-cloud-zookeeper-discovery。新增依賴項最便捷的方式是使用 Spring Boot Starter:org.springframework.cloud:spring-cloud-starter-zookeeper-discovery。我們建議使用依賴管理和 spring-boot-starter-parent。以下示例展示了一個典型的 Maven 配置
<project>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>{spring-boot-version}</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
以下示例展示了一個典型的 Gradle 設定
plugins {
id 'org.springframework.boot' version ${spring-boot-version}
id 'io.spring.dependency-management' version ${spring-dependency-management-version}
id 'java'
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.cloud:spring-cloud-starter-zookeeper-discovery'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
| 根據您使用的版本,您可能需要調整專案中使用的 Apache Zookeeper 版本。您可以在安裝 Zookeeper 部分中閱讀更多相關資訊。 |
現在您可以建立一個標準的 Spring Boot 應用程式,例如以下 HTTP 伺服器
@SpringBootApplication
@RestController
public class Application {
@GetMapping("/")
public String home() {
return "Hello World!";
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
當此 HTTP 伺服器執行時,它會連線到 Zookeeper,Zookeeper 執行在預設的本地埠(2181)上。要修改啟動行為,您可以透過使用 application.properties 更改 Zookeeper 的位置,如下例所示
spring:
cloud:
zookeeper:
connect-string: localhost:2181
您現在可以使用 DiscoveryClient、@LoadBalanced RestTemplate 或 @LoadBalanced WebClient.Builder 從 Zookeeper 中檢索服務和例項資料,如下例所示
@Autowired
private DiscoveryClient discoveryClient;
public String serviceUrl() {
List<ServiceInstance> list = discoveryClient.getInstances("STORES");
if (list != null && list.size() > 0 ) {
return list.get(0).getUri().toString();
}
return null;
}
分散式配置用法
要在應用程式中使用這些功能,您可以將其構建為 Spring Boot 應用程式,並依賴於 spring-cloud-zookeeper-core 和 spring-cloud-zookeeper-config。新增依賴項最便捷的方式是使用 Spring Boot Starter:org.springframework.cloud:spring-cloud-starter-zookeeper-config。我們建議使用依賴管理和 spring-boot-starter-parent。以下示例展示了一個典型的 Maven 配置
<project>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>{spring-boot-version}</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zookeeper-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
以下示例展示了一個典型的 Gradle 設定
plugins {
id 'org.springframework.boot' version ${spring-boot-version}
id 'io.spring.dependency-management' version ${spring-dependency-management-version}
id 'java'
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.cloud:spring-cloud-starter-zookeeper-config'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
| 根據您使用的版本,您可能需要調整專案中使用的 Apache Zookeeper 版本。您可以在安裝 Zookeeper 部分中閱讀更多相關資訊。 |
現在您可以建立一個標準的 Spring Boot 應用程式,例如以下 HTTP 伺服器
@SpringBootApplication
@RestController
public class Application {
@GetMapping("/")
public String home() {
return "Hello World!";
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
應用程式從 Zookeeper 檢索配置資料。
如果您使用 Spring Cloud Zookeeper Config,您需要設定 spring.config.import 屬性以便繫結到 Zookeeper。您可以在Spring Boot 配置資料匯入部分閱讀更多相關資訊。 |