zoukankan      html  css  js  c++  java
  • 第九节--Zookeeper服务注册与发现

    1 .Eureka停止更新之后你怎么办?
        从2.0版本之后如何还继续用, 官方文档说明:后果自负
     
       SpringCloud整合Zookeeper替代Eureka
     
    第一步:新建工程cloud-provider-payment8004,新加依赖,添加之后要排除自带的zookeeper,重新引入对应自己安装的zookeeper版本,引入的zookeeper要排除自身带的log日志包
    <!--整合zookeeper整合zookeeper客户端-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
        <!--排除自带的的版本zookeeper,否则启动报错版本冲突-->
        <exclusions>
            <exclusion>
                <groupId>org.apache.zookeeper</groupId>
                <artifactId>zookeeper</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <!--引入本地zookeeper一样的版本包:我这里本地的是3.4.13-->
    <dependency>
        <groupId>org.apache.zookeeper</groupId>
        <artifactId>zookeeper</artifactId>
        <version>3.4.13</version>
        <exclusions>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
            </exclusion>
            <exclusion>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    第二步:yml文件配置

    server:
      port: 8004
    spring:
      application:
        name: cloud-provider-payment
      cloud:
        zookeeper:
          connect-string: 192.168.1.104:2181

    第三步:主配置类

    @EnableDiscoveryClient //向使用consol或zookeeper作为注册中心时注册服务
    @SpringBootApplication
    public class PaymentApplication8004 {
    public static void main(String[] args) {
    SpringApplication.run(PaymentApplication8004.class,args);
      }
    }
     

    zookeeper每注册一个服务,就会创建一个节点,创建的节点是临时节点还是持久节点?
      创建的肯定是临时节点: 它不会像eureka一样提供者或消费者服务关闭了还会保存服务基本信息
      如果服务关闭,直接剔除在zookeeper上的基本信息
     

     
    客户端搭建
     
    第一步:新建工程cloud-consumer-zkorder80,pom.xml文件
    <dependencies>
        <!--整合zookeeper整合zookeeper客户端-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
            <!--排除自带的的版本zookeeper:3.5.3,否则启动报错版本冲突-->
            <exclusions>
                <exclusion>
                    <groupId>org.apache.zookeeper</groupId>
                    <artifactId>zookeeper</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!--引入本地zookeeper一样的版本包:我这里本地的是3.6.0-->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.13</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    
    
    
    
        <dependency>
            <groupId>com.hx.springcloud</groupId>
            <artifactId>cloud-api-commos</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    
    
    
    
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    
    
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--热部署  -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
    </dependencies>

    第二步:yml文件

    server:
      port: 80
    
    
    spring:
      application:
        name: cloud-consumer-order #zookeeper对外暴露的微服务名字
      cloud:
        zookeeper:
          connect-string: 192.168.1.104:2181

    第三步:config提供的RestTemplate配置类

    @Configuration
    public class ApplicationConfig {
    
    @Bean
    @LoadBalanced //这个注解必须标上,否则无法访问zookeeper上的微服务
    public RestTemplate getTemplate(){
    return new RestTemplate();
    }
    }

    第四步:controller类

    @RestController
    @Slf4j
    public class OrderController {
    
    
    public static final String PAYMENT_URL="http://cloud-payment-service";
    
    @Resource private RestTemplate restTemplate;
    @PostMapping("/consumer/addPayment")
    public CommonResult addPayment(Payment payment){
      System.out.println(payment.getSerial());
      return restTemplate.postForObject(PAYMENT_URL+"/admin/addPayment",payment,CommonResult.class);
    }
    
    @GetMapping("/consumer/findPaymentById/{id}")
    public CommonResult findPaymentById(@PathVariable("id")Long id){
        log.info("消费端查找数据");
        return restTemplate.getForObject(PAYMENT_URL+"/admin/findPaymentById/"+id,CommonResult.class);
      }
    }
     

    最后启动服务测试即可;先启动zookeeper 进入zookeeper目录/bin zkServer.cmd
  • 相关阅读:
    UNIX:处理SIGCHLD信号
    多维数组,指针数组使用,指向指针的指针
    bit field
    链表操作,获得泛型效果
    简明 Vim 练级攻略
    指针3,指向链表对象指针的指针
    大端模式,指针数组
    C宏设置掩码
    springboot 启动报错: Multiple Dockets with the same group name are not supported. The following duplicat
    HTML5学习笔记三
  • 原文地址:https://www.cnblogs.com/hexublog/p/13681803.html
Copyright © 2011-2022 走看看