zookeeper实现微服务注册


zookeeper实现微服务注册

创建父工程

创建父工程,用于版本管理,修改pom文件:设置打包类型为pom、设置依赖管理(src文件可以删除)

pom


    UTF-8
    1.8
    1.8
    4.12
    1.2.17
    1.16.18
    5.1.47
    1.1.16
    1.3.0
  

  
  
    
      
      
        org.springframework.boot
        spring-boot-dependencies
        2.2.2.RELEASE
        pom
        import
      
      
      
        org.springframework.cloud
        spring-cloud-dependencies
        Hoxton.SR1
        pom
        import
      
      
      
        com.alibaba.cloud
        spring-cloud-alibaba-dependencies
        2.1.0.RELEASE
        pom
        import
      
      
        mysql
        mysql-connector-java
        ${mysql.version}
      
      
        com.alibaba
        druid
        ${druid.version}
      
      
        org.mybatis.spring.boot
        mybatis-spring-boot-starter
        ${mybatis.spring.boot.version}
      
      
        junit
        junit
        ${junit.version}
      
      
        log4j
        log4j
        ${log4j.version}
      
      
        org.projectlombok
        lombok
        ${lombok.version}
        true
      
    
  

  
    
      
        org.springframework.boot
        spring-boot-maven-plugin
        2.3.4.RELEASE
        
          true
          true
        
      
    
  

创建子项目

创建子项目依赖父工程,导入依赖

注意,这里有个坑:spring-cloud-starter-zookeeper-discovery依赖中自带了zookeeper依赖,如果该依赖版本和服务器安装的zookeeper版本不一致就会产生冲突

解决方法:在spring-cloud-starter-zookeeper-discovery中排除自带的zookeeper版本,然后再导入和服务器版本一致的zookeeper依赖,我的服务器安装的是3.5.7版本的zookeeper,所以导入的zookeeper依赖版本也是3.5.7


    
    
        org.springframework.boot
        spring-boot-starter-web
    
    
    
        org.springframework.cloud
        spring-cloud-starter-zookeeper-discovery
        2.2.1.RELEASE
        
        
            
                org.apache.zookeeper
                zookeeper
            
        
    
    
    
        org.apache.zookeeper
        zookeeper
        3.5.7
    
    
        org.springframework.boot
        spring-boot-devtools
        runtime
        true
    
    
        org.projectlombok
        lombok
        true
    
    
        org.springframework.boot
        spring-boot-starter-test
        test
    

修改配置文件

server:
  port: 8003

spring:
  application:
    name: payment
  cloud:
    zookeeper:
      # zookeeper服务URL
      connect-string: 192.168.84.136:2181

主启动类添加@EnableDiscoveryClient注解

package com.yl.payment;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
@EnableDiscoveryClient
public class Payment8003Application {

    public static void main(String[] args) {
        SpringApplication.run(Payment8003Application.class,args);
    }

}

项目配置完成,启动zookeeper(关闭服务器防火墙,使得本机能够ping通服务器),然后再启动项目

进入zookeeper客户端,查看节点,可以看到除了根节点还有一个services节点

[zk: localhost:2181(CONNECTED) 0] ls /
[services, zookeeper]

查看services节点,可以看到服务成功注册到zookeeper

[zk: localhost:2181(CONNECTED) 1] ls /services
[payment]

服务节点之下还有一个节点,该节点保存了服务相关信息,通过get命令可以查看该信息

[zk: localhost:2181(CONNECTED) 2] ls /services/payment
[06af6b61-9271-49d9-9274-71b36cd0925e]
[zk: localhost:2181(CONNECTED) 3] ls /services/payment/06af6b61-9271-49d9-9274-71b36cd0925e
[]
[zk: localhost:2181(CONNECTED) 4] get /services/payment/06af6b61-9271-49d9-9274-71b36cd0925e
{"name":"payment","id":"06af6b61-9271-49d9-9274-71b36cd0925e","address":"DESKTOP-GBI6726.mshome.net","port":8003,"sslPort":null,"payload":{"@class":"org.springframework.cloud.zookeeper.discovery.ZookeeperInstance","id":"application-1","name":"payment","metadata":{}},"registrationTimeUTC":1647145928099,"serviceType":"DYNAMIC","uriSpec":{"parts":[{"value":"scheme","variable":true},{"value":"://","variable":false},{"value":"address","variable":true},{"value":":","variable":false},{"value":"port","variable":true}]}}