Spring Cloud Zookeeper 简介

一、简介

在本文中,我们将了解 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/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 第十六届全国大学生智能汽车竞赛电磁越野组参赛技术总结

    第十六届全国大学生智能汽车竞赛电磁越野组参赛技术总结 写在前面 前期准备 * 熟悉开发库 机械结构 技术报告 中期搭建 * 滤波归一 – 中值滤波 均值滤波 归一化 传…

    Java 2023年6月9日
    0102
  • 一文带你搞懂 JWT 常见概念 & 优缺点

    在 JWT 基本概念详解这篇文章中,我介绍了: 什么是 JWT? JWT 由哪些部分组成? 如何基于 JWT 进行身份验证? JWT 如何防止 Token 被篡改? 如何加强 JW…

    Java 2023年6月9日
    083
  • 米哈游2023秋季招聘正式开始~提前批有机会免笔试!

    米哈游2023秋季招聘正式开始~ [灯泡]简历投递:7.4-10.31提前批: 7.22号之前投递部分岗位有机会免笔试笔试:7月-10月面试:7月中旬开始 [灯泡] 成功密码内推码…

    Java 2023年6月8日
    071
  • 不落人后!简单好用的低代码开发,快速搭建智慧管理信息系统

    引言 伴随着社会的发展与时代的进步,管理与我们的生活密不可分,管理信息系统应用的范围十分广泛,体现在生活里的点点滴滴。管理信息系统不仅可以快速处理大量信息,还可以提高人们的工作效率…

    Java 2023年6月5日
    0127
  • Java动态脚本Groovy获取Bean(奇淫技巧操作)

    前言:请各大网友尊重本人原创知识分享,谨记本人博客: 南国以南i 背景: 在Java代码中当我们需要一个Bean对象,通常会使用spring中@Autowired注解,用来自动装配…

    Java 2023年6月5日
    079
  • java 缩略图

    http://chenhua-1984.iteye.com/blog/1870812 Original: https://www.cnblogs.com/jenson138/p/4…

    Java 2023年5月29日
    087
  • 安卓之布局总结

    Adroid 布局 有人形象地比喻,Android开发中的布局就相当于一栋建筑的外观架构。布局用得好,这栋建筑的外观才美观高大上。 Android 布局管理器 Android布局管…

    Java 2023年6月14日
    062
  • java class 文件格式解析

    前言 大约5年前,想研究javaassistant,cglib等字节码操作的相关类库,来对class进行增强,当要到要操作字节码的时候,发现无法继续下去了,看不懂,只能放弃。学习j…

    Java 2023年6月5日
    089
  • 客观的聊一聊,裁员这件糟心事

    时间在走,环境在变,互联网有点卷不动了; 捋一捋最近互联网上关于职场的热点:裁员,优化,毕业,向社会输送人才,求职;你方唱罢他方登场,持续横跳热搜; 年初到现在五月底,身边已经有好…

    Java 2023年6月15日
    082
  • 数智转型,管理先行|JNPF全力打造“全生命周期管理”平台

    过去,企业认为只要购买一套系统,就可以实现数字化转型。但是转型需要考虑大量因素,比如从需求、规划、设计、生产、经销、运行、使用、维修保养等环节打通,还要管理上下游业务,全局规划设计…

    Java 2023年6月5日
    092
  • Golang中变量与常量的声明

    一、局部变量的声明(4种方法) 1.声明一个变量,但不初始化值,使用默认值:var a int。 2.声明一个变量,初始化值:var a int = 100。 3.声明一个变量,初…

    Java 2023年6月13日
    071
  • Springboot整合Redis简单应用

    依赖: application配置文件: 新建RedisConfig配置文件进行redis序列化配置: 对比较常用的数据查询操作增加redis缓存: 在进行更新或者删除操作时加上对…

    Java 2023年6月7日
    066
  • SpringBoot之SpringSecurity权限注解在方法上进行权限认证多种方式

    Spring Security支持方法级别的权限控制。在此机制上,我们可以在任意层的任意方法上加入权限注解,加入注解的方法将自动被 Spring Security保护起来,仅仅允许…

    Java 2023年6月13日
    072
  • Java动态代理

    动态代理 代理:辅助对象处理一些操作,为对象的 行为做代理(明星的经纪人)。 动态代理调用方法的流程 走向代理 代理为方法额外做一些辅助工作 触发真正的对象方法执行 回到代理中,由…

    Java 2023年6月9日
    080
  • springboot之jackson的两种配置方式

    springboot 针对jackson是自动化配置的,如果需要修改,有两种方式: 方式一:通过application.yml 配置属性说明: spring.jackson.dat…

    Java 2023年5月30日
    064
  • JAVA入门基础_从零开始的培训_JAVA常用的引用类型及其API(三)

    JAVA常用的引用类型及其API(三) 数组 数组的定义及使用场景 数组的几个知识点(内存、增删改查、长度、数据类型) 数组的创建方式 静态创建(创建时就已经将数据写死,2种方式)…

    Java 2023年6月9日
    079
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球