目录
1 描述
1.1 疑问
1.2准备
2.zk代码
2.1zookeeper下载
2.2父项目依赖
2.3 pom.xml
2.4 application.yml
2.5 controller
2.6 启动类
2.7效果
为什么要采用zookeeper作为注册中心?
那是因为eurake2.0开始,就闭源勒,当然,注册中心闭源,对我们开发来说,影响不大
zk是什么节点类型?临时或者持久?
临时节点。服务一关闭,过一段时间就会自己删除。
下载:https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip
方便查看zk的内容
zookeeper官网下载地址
pom.xml
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.0.4.RELEASE
com.fqyd
springcloud
1.0-SNAPSHOT
UTF-8
UTF-8
1.8
Finchley.RELEASE
springcloud_eureka
springcloud_eureka_ha
springcloud_product
springcloud_product_member
springcloud_consumer
springcloud_zk_member
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
org.springframework.cloud
spring-cloud-dependencies
${spring-cloud.version}
pom
import
org.springframework.boot
spring-boot-maven-plugin
4.0.0
com.fqyd
springcloud
1.0-SNAPSHOT
../pom.xml
com.fqyd
springcloud_zk_member
0.0.1-SNAPSHOT
springcloud_zk_member
Demo project for Spring Boot
UTF-8
UTF-8
1.8
org.springframework.cloud
spring-cloud-starter-zookeeper-discovery
org.apache.zookeeper
zookeeper
3.4.13
org.slf4j
slf4j-log4j12
log4j
log4j
注意这里导入的zk的版本,应该与zk服务的版本一样,我之前只导入了spring-cloud-starter-zookeeper-discovery依赖,实际上他对应的版本是4.0以上的,为了跟服务器的zk保持一致,我们应该明确版本
###会员服务的端口号
server:
port: 8002
###服务别名----服务注册到注册中心名称
spring:
application:
name: zk-member
cloud:
zookeeper:
#注册到zk的地址
connect-string: 127.0.0.1:2181
package com.fqyd.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* Description:
* Author: wude
* Date: 2019/7/10 16:44
* Modified By:
*/
@RestController
public class MeberApiController {
@Value("${server.port}")
private String port;
@RequestMapping("getMember")
public String getMember(){
return "this is member!端口号为:"+port;
}
}
package com.fqyd;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient //如果服务注册是consul或者zk,可以使用该注解
public class SpringcloudZkMemberApplication {
public static void main(String[] args) {
SpringApplication.run(SpringcloudZkMemberApplication.class, args);
}
}
这里的zk-member就是我服务器指定的服务名
如果我强制关闭zk-member服务,会出现什么问题?
强制关闭zk-member服务后,该页面还是可以查看到该服务器的一些信息,需要等待一段时间左右,才会清理该服务的信息,这是因为zk,需要间隔一段时间,给zk-member包,也就是我们所说的心跳,这也是我博客开头所说的zk是临时节点,而不是永久节点,服务一关闭,他对应的信息也会消失。
{
"name": "zk-member",
"id": "506b477c-99ef-47b2-9ff8-cbf02e20bcfd",
"address": "DESKTOP-8S3CENH",
"port": 8002,
"sslPort": null,
"payload": {
"@class": "org.springframework.cloud.zookeeper.discovery.ZookeeperInstance",
"id": "application-1",
"name": "zk-member",
"metadata": {}
},
"registrationTimeUTC": 1563779355524,
"serviceType": "DYNAMIC",
"uriSpec": {
"parts": [{
"value": "scheme",
"variable": true
}, {
"value": "://",
"variable": false
}, {
"value": "address",
"variable": true
}, {
"value": ":",
"variable": false
}, {
"value": "port",
"variable": true
}]
}
}