一.注册到ZK

二.springboot工程注册

<dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
        <version>1.1.3.RELEASE</version>
    </dependency>
    
    注解:@EnableDiscoveryClient

三.普通Java工程

1.这里我以springboot工程为例,但是不引入第二步中的依赖来实现注册和服务调用
pom依赖
    <dependency>
			<groupId>org.apache.zookeeper</groupId>
			<artifactId>zookeeper</artifactId>
			<version>3.4.11</version>
			<type>pom</type>
		</dependency>

		<!-- https://mvnrepository.com/artifact/com.101tec/zkclient -->
		<dependency>
			<groupId>com.101tec</groupId>
			<artifactId>zkclient</artifactId>
			<version>0.10</version>
	</dependency>
2.环境简介:
//使用Feign调用微服务
    @RequestMapping("/")
        public String test() {
	        //调用provider服务
            String str1 = providerClientI.callProviderTwo();
            //调用zkServices服务
            String str2 = zkClientI.callProviderOne();
            return str1 + "-------" + str;
    }
    
    //获取所有zk的微服务实例
    @GetMapping("/allServices")
    public List<List<ServiceInstance>> allServiceUrl() {
        List<String> list = discoveryClient.getServices();
        List<List<ServiceInstance>> serviceInstance = new ArrayList<>();
        if (list != null && list.size() > 0) {
            for (String serviceId : list) {
                serviceInstance.add(discoveryClient.getInstances(serviceId));
            }
        }
        return serviceInstance;
    }
3.ZK查看:

zookeeper怎么查看注册服务 zookeeper实现服务注册_数据

然后我们大概明白了,原来一个微服务实例注册到zk,就是在节点里面放了这些数据,下面开始我们通过API注册的工作
4.API注册:
@Override
    public void register(String serviceName, String serviceAddress) {
        String registryPath = REGISTRY_PATH;
        try {
            zk.create("/services/zkServices", null, ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
            String  uuid = "95b4f91c-96b9-4aa6-ab61-935a7f8be599";
            String data = "{\"name\":\"zkService\",\"id\":\"95b4f91c-96b9-4aa6-ab61-935a7f8be599\",\"address\":\"192.168.6.164\",\"port\":9505,\"sslPort\":null,\"payload\":{\"@class\":\"org.springframework.cloud.zookeeper.discovery.ZookeeperInstance\",\"id\":\"zkService:9505\",\"name\":\"zkService\",\"metadata\":{\"instance_status\":\"UP\"}},\"registrationTimeUTC\":1534763883884,\"serviceType\":\"DYNAMIC\",\"uriSpec\":{\"parts\":[{\"value\":\"scheme\",\"variable\":true},{\"value\":\"://\",\"variable\":false},{\"value\":\"address\",\"variable\":true},{\"value\":\":\",\"variable\":false},{\"value\":\"port\",\"variable\":true}]}}";
            zk.create("/services/zkServices/" + uuid, data.getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
        } catch (Exception e) {
            logger.error("create node failure", e);
        }
    }

四.普通Java工程