服務註冊與發現---ZooKeeper
1. 引入zookeeper的依賴
這裏要注意自己在linux上安裝的ZooKeeper的版本,因爲我使用的是3.4.6,所以先排除spring-cloud-starter-zookeeper-discovery
的 zookeeper
在引入與註冊中心一樣的版本。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
<exclusions>
<exclusion>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.6</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
2. 修改application.yml
server:
port: 8004
# 服務別名,zookeeper配置
spring:
application:
name: cloud-payment-service
cloud:
zookeeper:
# zookeeper的地址
connect-string: 192.168.110.128:2181
3. 主類上加@EnableDiscoveryClient
@SpringBootApplication
@EnableDiscoveryClient
public class PaymentZKApplication {
public static void main(String[] args) {
SpringApplication.run(PaymentZKApplication.class, args);
}
}
4. 服務啓動
- 啓動zookeeper
[root@yp-centos bin]# ./zkServer.sh start
JMX enabled by default
Using config: /usr/local/zookeeper/zookeeper-3.4.6/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
- 啓動微服務
- 查看服務註冊
[root@yp-centos bin]# ./zkCli.sh
[zk: localhost:2181(CONNECTED) 3] ls /
[dubbo, services, zookeeper]
[zk: localhost:2181(CONNECTED) 4] ls /services
[cloud-payment-service]
[zk: localhost:2181(CONNECTED) 5] ls /services/cloud-payment-service
[dee02869-19b0-4d85-808d-fc274e1ecf2d]
[zk: localhost:2181(CONNECTED) 6] ls /services/cloud-payment-service/dee02869-19b0-4d85-808d-fc274e1ecf2d
[]
[zk: localhost:2181(CONNECTED) 7] get /services/cloud-payment-service/dee02869-19b0-4d85-808d-fc274e1ecf2d
{"name":"cloud-payment-service","id":"dee02869-19b0-4d85-808d-fc274e1ecf2d","address":"localhost","port":8004,"sslPort":null,"payload":{"@class":"org.springframework.cloud.zookeeper.discovery.ZookeeperInstance","id":"application-1","name":"cloud-payment-service","metadata":{}},"registrationTimeUTC":1588153010388,"serviceType":"DYNAMIC","uriSpec":{"parts":[{"value":"scheme","variable":true},{"value":"://","variable":false},{"value":"address","variable":true},{"value":":","variable":false},{"value":"port","variable":true}]}}
cZxid = 0x563
ctime = Mon Apr 13 14:17:09 CST 2020
mZxid = 0x563
mtime = Mon Apr 13 14:17:09 CST 2020
pZxid = 0x563
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x17171ee8c9c0001
dataLength = 528
numChildren = 0
- 在啓動一個服務查看服務註冊
[zk: localhost:2181(CONNECTED) 12] ls /services
[cloud-payment-service, cloud-order-service]
這樣cloud-order-service
就可以通過zookeeper調用cloud-payment-service