一.注册到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查看:

然后我们大概明白了,原来一个微服务实例注册到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工程
















