前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >03Zookeeper服务注册与发现

03Zookeeper服务注册与发现

作者头像
Remember_Ray
发布2020-10-29 11:08:32
3530
发布2020-10-29 11:08:32
举报
文章被收录于专栏:Ray学习笔记

Ubuntu 操作

注册中心 Zookeeper

以 Ubuntu 为例,安装 ZooKeeper

代码语言:javascript
复制

您将需要将Zookeeper的最新版本下载到/ opt目录。您可以使用以下命令下载它:

cd /opt

wget https://mirrors.estointernet.in/apache/zookeeper/zookeeper-3.6.2/apache-zookeeper-3.6.2-bin.tar.gz ​```

下载完成后,使用以下命令解压缩下载的文件:

tar -xvzf apache-zookeeper-3.6.2-bin.tar.gz ​

接下来,使用以下命令将提取的目录重命名为zookeeper:

mv apache-zookeeper-3.6.2-bin zookeeper ​

接下来,使用以下命令更改zookeeper目录的所有权:

chown -R zookeeper:zookeeper /opt/zookeeper ​

在独立模式下配置ZooKeeper,您将需要创建ZooKeeper配置文件以独立模式设置ZooKeeper。您可以使用以下命令创建它: ​``` nano /opt/zookeeper/conf/zoo.cfg

添加以下行: tickTime=2500 dataDir=/zookeeper clientPort=2181 maxClientCnxns=80 ​```

启动ZooKeeper服务

​``` cd /opt/zookeeper

bin/zkServer.sh start ​```

监听ZooKeeper端口2181

ss -ntpl | grep 2181 ​

代码语言:javascript
复制

![](https://gitee.com/qq343509740/BlogPic/raw/master/image/20201015161857.png)

##查看ip ifconfig

代码语言:javascript
复制

![](https://gitee.com/qq343509740/BlogPic/raw/master/image/20201015162150.png)





## 服务提供者 

> 7-cloud-provider-zk-payment8004

### pom

```xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>SpringCloud_H_2020</artifactId>
        <groupId>com.ray</groupId>
        <version>1.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>7-cloud-provider-payment8004</artifactId>

    <dependencies>
        <dependency><!-- 引用自己定义的api通用包,可以使用Payment支付Entity -->
            <groupId>com.ray</groupId>
            <artifactId>1-cloud-api-commons</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--监控-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!--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.6.2版本-->
        <!-- https://mvnrepository.com/artifact/org.apache.zookeeper/zookeeper -->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.6.2</version>
        </dependency>
        <!--热部署-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>


</project>

yml

代码语言:javascript
复制
# 8004 表示注册到 zookeeper 服务器的支持服务提供者端口
server:
  port: 8004

# 服务别名 -- 在注册中心显示的名字(重要)
spring:
  application:
    name: cloud-provider-payment
  cloud:
    zookeeper:
      # zookeeper 服务器 ip + port
      connect-string: 192.168.116.128:2181

main

代码语言:javascript
复制
package com.ray.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/**
 * @Description:
 * @Author Administrator
 * @Date 2020/10/11 9:19
 * @Version 1.0
 */
@SpringBootApplication
@EnableDiscoveryClient  // 该注解用于向使用 consul 或者 zookeeper 作为注册中心时注册服务
public class PaymentZkMain8004 {

    public static void main(String[] args) {
        SpringApplication.run(PaymentZkMain8004.class, args);
    }
}

controller

代码语言:javascript
复制
package com.ray.springcloud.controller;

import cn.hutool.core.lang.UUID;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @Description:
 * @Author Administrator
 * @Date 2020/10/11 9:20
 * @Version 1.0
 */
@Slf4j
@RestController
@RequestMapping(value = "/payment")
public class PaymentZkController {

    @Value("${server.port}")
    private String serverPort;

    @RequestMapping(value = "zk")
    public String zk() {
        return "springCloud with zookeeper: " + serverPort + "\t" + UUID.randomUUID().toString();
    }
}

测试

一、启动项目,查看zookeeper是否注册成功

二、测试接口是否可用

http://localhost:8004/payment/zk

三、关闭8004,观察 zookeeper 服务器

结论:zookeeper 服务节点是临时节点

服务消费者

8-cloud-consumer-zk-order80

pom

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>SpringCloud_H_2020</artifactId>
        <groupId>com.ray</groupId>
        <version>1.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>8-cloud-consumer-zk-order80</artifactId>


    <dependencies>
        <dependency><!-- 引用自己定义的api通用包,可以使用Payment支付Entity -->
            <groupId>com.ray</groupId>
            <artifactId>1-cloud-api-commons</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--监控-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!--SpringBoot整合Zookeeper客户端-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
            <exclusions>
                <!--先排除自带的zookeeper-->
                <exclusion>
                    <groupId>org.apache.zookeeper</groupId>
                    <artifactId>zookeeper</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!--添加zookeeper3.6.2版本-->
        <!-- https://mvnrepository.com/artifact/org.apache.zookeeper/zookeeper -->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.6.2</version>
        </dependency>
        <!--热部署-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

</project>

yml

代码语言:javascript
复制
# 8004 表示注册到 zookeeper 服务器的支持服务消费者端口
server:
  port: 80

# 服务别名 -- 在注册中心显示的名字(重要)
spring:
  application:
    name: colud-consumer-zk-order
  cloud:
    zookeeper:
      # zookeeper 服务器 ip + port
      connect-string: 192.168.116.128:2181

main

代码语言:javascript
复制
package com.ray.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/**
 * @Description:
 * @Author Administrator
 * @Date 2020/10/11 9:59
 * @Version 1.0
 */
@SpringBootApplication
@EnableDiscoveryClient // 该注解用于向使用 consul 或者 zookeeper 作为注册中心时注册服务
public class OrderZkMain80 {

    public static void main(String[] args) {
        SpringApplication.run(OrderZkMain80.class, args);
    }
}

config

代码语言:javascript
复制
package com.ray.springcloud.config;

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

/**
 * @Description: 相当于封装了 HttpClient
 * @Author Ray
 * @Date 2020/10/07 11:40
 * @Version 1.0
 */
@Configuration
public class RestTemplateConfig {

    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate() {
        return new RestTemplate();
    }
}

controller

代码语言:javascript
复制
package com.ray.springcloud.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import javax.annotation.Resource;

/**
 * @Description:
 * @Author Administrator
 * @Date 2020/10/11 10:01
 * @Version 1.0
 */
@RequestMapping(value = "/consumer")
@RestController
@Slf4j
public class OrderZkController {

    // 与 zookeeper 服务器上面的提供者名称一致
    public static final String INVOKE_URL = "http://cloud-provider-payment";

    @Resource
    private RestTemplate restTemplate;

    @GetMapping("/payment/zk")
    public String paymentInfo() {
        String result = restTemplate.getForObject(INVOKE_URL + "/payment/zk", String.class);
        return result;
    }
}

测试

一、启动项目,查看zookeeper是否注册成功

二、测试接口是否可用

http://localhost/consumer/payment/zk

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-10-15|,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Ubuntu 操作
  • 注册中心 Zookeeper
    • 启动ZooKeeper服务
      • 监听ZooKeeper端口2181
        • yml
          • main
            • controller
              • 测试
              • 服务消费者
                • pom
                  • yml
                    • main
                      • config
                        • controller
                          • 测试
                          相关产品与服务
                          微服务引擎 TSE
                          微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档