springcloud之zookeeper

springcloud学习笔记,第二章,zookeeper,作为微服务注册中心。

  • 在前一章中,学习了eureka。由于eureka停止更新,使用zookeeper代替eureka。

zookeeper是一个分布式协调工具,可以实现注册中心功能。需要关闭linux服务器防火墙后启动zookeeper服务器。zookeeper取代eureka,作为服务注册中心。这一次,我在本地使用linux虚拟机来运行zookeeper,请提前安装好jdk和zookeeper。

准备:

  • 环境说明:
    • jdk:1.8.0_121
    • zookeeper:3.5.6
  • 请先保证在虚拟机上启动了zookeeper:

服务的提供者模块:

  1. 新建cloud-provider-payment8004

  2. POM

    1
    2
    3
    4
    <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
    </dependency>
  3. YML

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    server:
    port: 8004

    # 服务别名,注册zookeeper到注册中心的名称
    spring:
    application:
    name: cloud-provider-payment
    cloud:
    zookeeper:
    connect-string: 10.10.2.70:2181
  4. 主启动类

    1
    2
    3
    4
    5
    6
    7
    @SpringBootApplication
    @EnableDiscoveryClient
    public class PaymentMain8004 {
    public static void main(String[] args) {
    SpringApplication.run(PaymentMain8004.class,args);
    }
    }
  5. Controller

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    @RestController
    @Slf4j
    public class PaymentController {
    @Value("${server.port}")
    private String serverPort;

    @RequestMapping(value = "/payment/zk")
    public String paymentzk(){
    return "springcloud with zookeeper:"+serverPort+"\t"+UUID.randomUUID().toString();
    }
    }
  6. 启动8004注册进zookeeper

    查看zookeeper的状态:./zkServer.sh status

    启动zookeeper:./zkServer.sh start

    启动客户端:./zkCli.sh

    查看zookeeper的链接数:ls /

  7. 测试:

    1. 先启动zookeeper的客户端,此时微服务已经注册进去zookeeper了:

    2. 在测试访问:

  1. 如果你继续访问zookeeper客户端的话,你也可以得到一个json格式的字符串,这里面就是微服务的信息:

zookeeper实行临时节点策略:

  • 当你关闭该服务节点时,该节点在zookeeper中不会马上消失,需要等待一段时间,就是“心跳”:

  • 最后,zookeeper将该节点移除了。证明该节点是临时节点。

服务的消费者模块:

  1. 新建module:cloud-consumerzk-order80

  2. POM

  3. YML

  4. 主启动类:

  5. 业务类:

    1. cloud-consumerzk-order80去调用8004服务:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      @RestController
      @Slf4j
      public class OrderZKController {
      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;
      }
      }
  6. 测试,同时启动80与8004和zookeeper:

    1. 查看zookeeper,可以看到所有的微服务:

    1. 同时测试下服务调用:

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

请我喝杯咖啡吧~

支付宝
微信