一、简介
在本文中,我们将了解 Zookeeper 以及它如何用于服务发现,它被用作云中服务的集中知识。
Spring Cloud Zookeeper 通过自动配置和绑定到 Spring 环境为 Spring Boot 应用程序提供Apache Zookeeper集成。
2.服务发现设置
我们将创建两个应用程序:
- 将提供服务的应用程序(在本文中称为Service Provider )
- 将使用此服务的应用程序(称为Service Consumer )
Apache Zookeeper 将在我们的服务发现设置中充当协调者。Apache Zookeeper 安装说明可在以下链接中找到。
3. 服务提供者注册
我们将通过添加 spring-cloud-starter-zookeeper-discovery_依赖项并在主应用程序中使用注解 @EnableDiscoveryClient来启用服务注册。_
下面,我们将逐步展示返回”Hello World!”的服务的这个过程。响应 GET 请求。
首先,让我们将所需的 spring-cloud-starter-zookeeper-discovery 、 spring-web 、 _spring-cloud-dependencies_和 _spring-boot-starter_依赖项添加到我们的 _pom.xml_文件中:
<dependencies>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starterartifactId>
<version>2.2.6.RELEASEversion>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-webartifactId>
<version>5.1.14.RELEASEversion>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-zookeeper-discoveryartifactId>
dependency>
dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-dependenciesartifactId>
<version>Hoxton.SR4version>
<type>pomtype>
<scope>importscope>
dependency>
dependencies>
dependencyManagement>
接下来,我们将使用 _@EnableDiscoveryClient_注释我们的主类。这将使 _HelloWorld_应用程序具有发现意识:
还有一个简单的控制器:
现在让我们创建一个 YAML _Application.yml_文件,该文件将用于配置应用程序日志级别并通知 Zookeeper 该应用程序已启用发现功能。
注册到 Zookeeper 的应用程序的名称是最重要的。稍后在服务消费者中, _feign_客户端将在服务发现期间使用此名称:
spring:
application:
name: HelloWorld
cloud:
zookeeper:
discovery:
enabled: true
logging:
level:
org.apache.zookeeper.ClientCnxn: WARN
spring boot应用在默认端口2181上寻找zookeeper,如果zookeeper位于其他地方,需要添加配置:
spring:
cloud:
zookeeper:
connect-string: localhost:2181
4.服务消费者
现在我们将创建一个 REST 服务消费者并使用 Spring Netflix Feign Client 注册它。
首先,让我们将所需的 _spring-cloud-starter-zookeeper-discovery 、spring-web 、spring-cloud-dependencies 、spring-boot-starter-actuator_和 _spring-cloud-starter-feign_依赖项添加到我们的 _pom.xml_文件中:
<dependencies>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-zookeeper-discoveryartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-actuatorartifactId>
<version>2.2.6.RELEASEversion>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-feignartifactId>
dependency>
dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-dependenciesartifactId>
<version>Hoxton.SR4version>
<type>pomtype>
<scope>importscope>
dependency>
dependencies>
dependencyManagement>
与服务提供者一样,我们将使用 _@EnableDiscoveryClient_注释主类以使其具有发现意识:
我们将使用 _Spring Cloud Feign Integration,_这是 Netflix 的一个项目,可让您定义一个声明式 REST 客户端。我们声明 URL 的样子,并 feign 负责连接到 REST 服务。
Feign 客户端_通过 _spring-cloud-starter-_feign包导入。我们将使用 @EnableFeignClients注释_ _@Configuration_以在应用程序中使用它。
最后,我们使用 _@FeignClient(“service-name”)_注释一个接口并将其自动连接到我们的应用程序中,以便我们以编程方式访问该服务。
这里在注解 @FeignClient(name = “HelloWorld”)_中,我们引用了我们之前创建的服务生产者的 _服务名称。
下面是一个简单的服务控制器类,它将调用我们的 feign 客户端类上的服务提供者函数,通过注入的接口 _helloWorldClient_对象来消费服务(其细节是通过服务发现抽象出来的)并在响应中显示出来:
接下来,我们创建一个与之前使用的非常相似的 YAML 文件 _Application.yml 。_这配置了应用程序的日志级别:
logging:
level:
org.apache.zookeeper.ClientCnxn: WARN
应用程序在默认端口 _2181_上查找 Zookeeper 。如果 Zookeeper 位于其他地方,则需要添加配置:
spring:
cloud:
zookeeper:
connect-string: localhost:2181
5. 测试设置
HelloWorld REST 服务在部署时向 Zookeeper 注册自身。然后作为服务消费者的 Greeting_服务使用 Feign 客户端调用 _HelloWorld服务。
现在我们可以构建和运行这两个服务。
最后,我们将浏览器指向 http://localhost:8083/get-greeting,它应该显示:
Hello World!
Original: https://www.cnblogs.com/BlogNetSpace/p/16252676.html
Author: JackYang
Title: Spring Cloud Zookeeper 简介
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/540669/
转载文章受原作者版权保护。转载请注明原作者出处!