三、服務註冊與發現ZooKeeper

Zookeeper是一個分佈式協調工具,可以實現註冊中心功能。Zookeeper服務器取代Eureka,作爲服務註冊中心。

一、安裝zookeeper

解壓zookeeper-3.4.9.tar.gztar 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差不多。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章