Zookeeper
是一個分佈式協調工具,可以實現註冊中心功能。Zookeeper
服務器取代Eureka
,作爲服務註冊中心。
一、安裝zookeeper
①解壓zookeeper-3.4.9.tar.gz
:tar zxvf zookeeper-3.4.6.tar.gz
②複製zoo_sample.cfg配置文件:cp ./zoo_sample.cfg ./zoo.cfg
③新建目錄:/opt/zookeeper-3.4.6/data
④vim /opt/zookeeper-3.4.9/conf/zoo.cfg
修改:dataDir=/opt/zookeeper-3.4.9/data
⑤啓動ZooKeeper
:
[root@right bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.9/bin/../conf/zoo.cfg
查看ZooKeeper
的狀態:
[root@right bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.9/bin/../conf/zoo.cfg
Mode: standalone
進入到ZooKeeper
客戶端:./zkCli.sh
二、ZooKeeper作爲註冊中心的使用
添加依賴:
<!--SpringBoot整合Zookeeper客戶端-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
<exclusions>
<!--先排除自帶的zookeeper3.5.3-->
<exclusion>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--添加zookeeper3.4.6版本-->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.6</version>
</dependency>
使用ZooKeeper
作爲註冊中心時的配置:
#註冊zookeeper到註冊中心名稱
spring:
application:
name: cloud-consumer-order
cloud:
zookeeper:
connect-string: 192.168.182.200:2181
主啓動類添加註解:@EnableDiscoveryClient
啓動項目,進入到zookeeper
客戶端:
查看服務節點:
[zk: localhost:2181(CONNECTED) 4] ls /services
[cloud-provider-payment, cloud-consumer-order]
查看具體的節點:
ls /services/cloud-provider-payment
[b2dc680d-e783-4a59-a462-a6d67c3772bb]
[zk: localhost:2181(CONNECTED) 5] get /services/cloud-provider-payment/b2dc680d-e783-4a59-a462-a6d67c3772bb
{"name":"cloud-provider-payment","id":"b2dc680d-e783-4a59-a462-a6d67c3772bb","address":"LAPTOP-O6D4GJPM","port":8004,"sslPort":null,"payload":{"@class":"org.springframework.cloud.zookeeper.discovery.ZookeeperInstance","id":"application-1","name":"cloud-provider-payment","metadata":{}},"registrationTimeUTC":1586969705981,"serviceType":"DYNAMIC","uriSpec":{"parts":[{"value":"scheme","variable":true},{"value":"://","variable":false},{"value":"address","variable":true},{"value":":","variable":false},{"value":"port","variable":true}]}}
cZxid = 0x20
ctime = Thu Apr 16 00:55:33 CST 2020
mZxid = 0x20
mtime = Thu Apr 16 00:55:33 CST 2020
pZxid = 0x20
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x1717ca3134d0009
dataLength = 536
numChildren = 0
對json
格式化
{
"name": "cloud-provider-payment",
"id": "b2dc680d-e783-4a59-a462-a6d67c3772bb",
"address": "LAPTOP-O6D4GJPM",
"port": 8004,
"sslPort": null,
"payload": {
"@class": "org.springframework.cloud.zookeeper.discovery.ZookeeperInstance",
"id": "application-1",
"name": "cloud-provider-payment",
"metadata": {}
},
"registrationTimeUTC": 1586969705981,
"serviceType": "DYNAMIC",
"uriSpec": {
"parts": [{
"value": "scheme",
"variable": true
}, {
"value": "://",
"variable": false
}, {
"value": "address",
"variable": true
}, {
"value": ":",
"variable": false
}, {
"value": "port",
"variable": true
}]
}
}
可以看到節點的具體信息。
其他的操作同Eureka
差不多。