服務註冊與發現---ZooKeeper

1. 引入zookeeper的依賴

這裏要注意自己在linux上安裝的ZooKeeper的版本,因爲我使用的是3.4.6,所以先排除spring-cloud-starter-zookeeper-discoveryzookeeper 在引入與註冊中心一樣的版本。

        <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

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