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}]}}