• 【SpringCloud】02-服务注册与发现-Zookeeper


    语雀源文链接:[pojo123的语雀知识笔记]

    在这里插入图片描述

    注册中心Zookeeper
    Zookeeper是一个分布式协调工具,可以实现注册中心功能

    服务提供者8004注册进Zookeeper

    和创建80001一样,创建8004的module,在module中仿照8001一样进行

    1. pom文件:取消Eureka依赖,加入zookeeper依赖包,如下:
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId
    <dependency>
    
    • 1
    • 2
    • 3
    • 4
    1. 主启动类:由于是Zookeeper注册,所以没有服务Server端,因此只需要加入@EnableDiscoveryClient注解;
    2. yml文件:与之前不同的是,此次是向Zookeeper注册,所以yml文件有稍微不同:
    #服务别名,注册zookeeper到注册中心名称
    spring:
    application:
    name: cloud-provider-payment
    cloud:
    zookeeper:
          connect-string: 服务地址:2181    #zookeeper服务的地址和端口
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    1. 编写一个Controller,当进行服务访问的时候,可以返回响应的端口以及UUID;
    2. 启动8004,将其注册进Zookeeper:

    这个时候会发现报以下错误,这是因为在引入Zookeeper整合依赖的时候会默认携带一个Zookeeper3.5.3Bate版本,与服务器上的Zookeeper版本不一致,所以这个时候就需要将其进行移除,同时将冲突的slf4j依赖进行清除;然后再引入对应版本的Zookeeper依赖;
    ![image.png](https://img-blog.csdnimg.cn/img_convert/6073cfe193339dc1bf19925810d60dd1.png#clientId=uff276f5c-aecd-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=117&id=u2f6f789c&margin=[object Object]&name=image.png&originHeight=117&originWidth=1252&originalType=binary&ratio=1&rotation=0&showTitle=false&size=30911&status=done&style=none&taskId=u2232fd91-0d72-4745-9338-11ccf36b837&title=&width=1252)
    所以更改后的pom文件如下;

    <!--spingcloud整合zookeeper客户端-->
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
      <!--            先排除自带的zookeeper3.5.3beta版本-->
      <exclusions>
        <exclusion>
          <groupId>org.apache.zookeeper</groupId>
          <artifactId>zookeeper</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-log4j12</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
    </dependency>
            
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    运行8004服务,可以将其注册到Zookeeper的服务中

    服务节点是临时节点还是持久节点:

    临时性,高可用,数据一致性

    订单服务注册进Zookeeper

    仿照8004进行新建

    1. 新建8080module;
    2. 修改pom文件
    3. 增加启动类
    4. 编写application.yml配置文件
    5. 增加RestTemplate配置类
    @Configuration
    public class ApplicationContextCOnfig {
        @Bean
        @LoadBalanced
        public RestTemplate getRestTemplate(){
            return new RestTemplate();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    1. 编写Controller,用于访问服务提供者
    @RestController
    @Slf4j
    public class ZKController {
        public static final String INVOKE_URL="http://cloud-provider-payment";
    
        @Resource
        private RestTemplate restTemplate;
        @GetMapping(value = "/consumer/payment/zk")
        public String paymentINfo(){
            String result=restTemplate.getForObject(INVOKE_URL+"/payment/zk",String.class);
            return result;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    1. 启动8080zk项目,将其注册进Zookeeper,然后通过8080订单消费者访问8004服务提供者;
  • 相关阅读:
    C语言循环队列
    2023年亚太杯数学建模思路 - 复盘:人力资源安排的最优化模型
    Git中的 fork, clone,branch
    frp 从0搭建内网穿透
    基于微信小程序的知识题库系统设计与实现-计算机毕业设计源码+LW文档
    Metasploit BlueKeep 漏洞利用教程以及在 VMWare 15 Workstation 里靶机出现蓝屏问题
    C语言c89(c90)的所有的32个关键字分类
    Crontab 定时任务
    【C语言】-字符串函数和内存函数(下)
    Compose中Canvas绘制
  • 原文地址:https://blog.csdn.net/weixin_47418550/article/details/125630456