B站尚硅谷最新版SpringCloud 学习笔记(3)-Zookeeper服务注册与发现

B站尚硅谷最新版SpringCloud 学习笔记(3)-Zookeeper服务注册与发现

B站视频:https://www.bilibili.com/video/BV18E411x7eT

上一篇:B站尚硅谷最新版SpringCloud 学习笔记(2)-Eureka服务注册与发现

一、安装virtual box虚拟机与下载Centos7镜像

1.下载

①virtual box虚拟机安装不做介绍

②下载Centos7的镜像

https://mirrors.aliyun.com/centos/?spm=a2c6h.13651104.0.0.499812b29Rz0bM

image-20210115114523347

image-20210115114535860

image-20210115114529045

image-20210115132026612

然后选择centos的版本,

【DVD】标准版本

【Everything】集成所有软件版本

【LiveGNOME】GNOME桌面版本

【LiveKDE】KDE桌面版本

【Minimal】最小安装版本

【NetInstall】网络安装镜像版本

2.virtual box导入Centos7镜像

注意点的都会框图出来

image-20210115133117495

无脑下一步

image-20210115133124905

image-20210115133204076

image-20210115133210082

image-20210115133215203

image-20210115133219559

选择虚拟盘

image-20210115133411432

选择下载好的镜像

image-20210115133514228

image-20210115133520943

image-20210115133529559

以上是虚拟机的常规操作

3.Centos7安装

image-20210115133640475

image-20210115133725525

image-20210115133800584

image-20210115133832512

配置网络

image-20210115134137089

image-20210115134232643

image-20210115134740591

image-20210115143259746

image-20210115134810306

设置密码

image-20210115134857194

image-20210115134909335

image-20210115140116105

image-20210115140122678

等待安装,后重启

image-20210115141254581

4.使用xshell7和xftp

亲测使用不了增强功能

选择xftp传输文件

两者安装包再官网即可下载,傻瓜式安装

①修改虚拟机网卡,改成桥接网卡

image-20210115150254779

②测试连通性

windows局域网络192.168.75.122

image-20210115150457843

虚拟机局域网络192.168.75.215

image-20210115150541589

ping测试,两者成功ping通

image-20210115150651655

image-20210115150741168

③配置xshell

image-20210115150852360

用户名和密码填虚拟机的用户名和密码

image-20210115150908696

接入成功

image-20210115150959459

5.centos7配置JDK8环境

①Centos7换源

备份

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

换阿里源

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

更新

yum clean all
yum makecache

②宿主机上下载jdk8,下载以tar.gz结尾的

https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

xshell

切换目录

cd /usr/local

创建java目录和修改权限

mkdir java

chmod 777 java

③xftp传输文件

image-20210115155316648

④解压压缩包

tar -zxvf jdk-8u212-linux-x64.tar.gz

解压后

image-20210115155602338

⑤修改环境变量

备份

cp /etc/profile /etc/profile.backup

进入/etc/profile

vim /etc/profile

修改

export JAVA_HOME=/usr/local/java/jdk1.8.0_212

export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:$JAVA_HOME/bin

image-20210115160726116

JAVA_HOME的路径是这个

image-20210115160830312

最后

重启环境 生效命令

source /etc/profile

完成JDK8的安装

image-20210115160936064

可以参考:https://blog.csdn.net/qq_38591756/article/details/82828907

6.安装Zookeeper

①下载安装包

http://mirror.bit.edu.cn/apache/zookeeper/

image-20210115161604668

注意是带bin的文件,之前下错,一直不成功

image-20210115170949182

②xftp传输zookeeper

进入/usr/local ,创建zookeeper,并修改权限

image-20210115161501455

image-20210115161818518

③解压压缩包

cd zookeeper

tar -zxvf apache-zookeeper-3.5.9-bin.tar.gz

image-20210115171228142

④启动服务

cd apache-zookeeper-3.5.9-bin/bin/

./zkServer.sh start

报错,没有那个文件

image-20210115172026335

创建此文件zoo.cfg

cd …/conf/

cp zoo_sample.cfg zoo.cfg

cd …/bin/

./zkServer.sh start

image-20210115172130458

成功

二、Zookeeper

1.注册中心Zookeeper

zookeeper是一个分布式协调工具,可以实现注册中心功能

zookeeper服务器取代Eureka服务器,zk作为服务注册中心

image-20210115173413553

①关闭Linux服务器防火墙后启动zookeeper服务器

systemctl stop firewalld

systemctl status firewalld

image-20210115173642379

②验证服务

启动服务

./zkServer.sh start

image-20210115173738133

启动客户端

./zkCli.sh

image-20210116144929607

ls /

image-20210116144957360

2.新建服务提供者

①cloud-provider-payment8004

image-20210116145314259

②修改pom,创建application.yml,创建启动类

pom

image-20210116145454246

<?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>mycloud2020</artifactId>
        <groupId>org.yezhinao</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

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

    <dependencies>

        <dependency>
            <groupId>org.yezhinao</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>${project.version}</version>
        </dependency>



        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-zookeeper-discovery -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-test -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>


    </dependencies>

</project>

application.yml

image-20210116145630969

image-20210116145756353

server:
  port: 8004

spring:
  application:
    name: cloud-provider-payment
  cloud:
    zookeeper:
      #zookpeer默认端口为2181
#      connect-string: 192.168.75.215:2181  #公司局域网
      connect-string: 192.168.88.77:2181  #家里局域网

启动类

image-20210116145831683

@SpringBootApplication
@EnableDiscoveryClient
public class PaymentMain8004 {
    public static void main(String[] args) {
        SpringApplication.run(PaymentMain8004.class,args);
    }
}

③创建接口

image-20210116145917228

@RestController
@Slf4j
@RequestMapping(value = "/payment")
public class PaymentController {

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

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

④启动遇到bug

image-20210116150113494

发现可能是zookeeper版本问题所导致的

image-20210116150136502

⑥修改zookeeper的依赖版本

image-20210116150540291

<?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>mycloud2020</artifactId>
        <groupId>org.yezhinao</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

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

    <dependencies>

        <dependency>
            <groupId>org.yezhinao</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>${project.version}</version>
        </dependency>



        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-zookeeper-discovery -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
            <!--排除zk3.5.3-->
            <exclusions>
                <exclusion>
                    <groupId>org.apache.zookeeper</groupId>
                    <artifactId>zookeeper</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!--添加zk 3.5.9版本-->
        <!-- https://mvnrepository.com/artifact/org.apache.zookeeper/zookeeper -->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.5.9</version>
        </dependency>


        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-test -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>


    </dependencies>

</project>

⑦再次启动

可能会出现错误,不能链接

image-20210116151431508

原因虚拟机上没有关闭防火墙

systemctl stop firewalld

关闭后,再次启动

再zookeeper的客户端下

ls /services

image-20210116151931139

成功注册服务

查看注册信息

image-20210116152440686

{
    "name":"cloud-provider-payment",
    "id":"fe58c748-3b08-4a62-abf5-96e3d45901aa",
    "address":"192.168.88.71",
    "port":8004,
    "sslPort":null,
    "payload":{
        "@class":"org.springframework.cloud.zookeeper.discovery.ZookeeperInstance",
        "id":"application-1",
        "name":"cloud-provider-payment",
        "metadata":{

        }
    },
    "registrationTimeUTC":1610781446166,
    "serviceType":"DYNAMIC",
    "uriSpec":{
        "parts":[
            {
                "value":"scheme",
                "variable":true
            },
            {
                "value":"://",
                "variable":false
            },
            {
                "value":"address",
                "variable":true
            },
            {
                "value":":",
                "variable":false
            },
            {
                "value":"port",
                "variable":true
            }
        ]
    }
}

3.服务节点是临时节点

关闭cloud-provider-payment8004,一定时间内zookeeper的注册节点消失

image-20210116153816288

再次启动cloud-provider-payment8004

image-20210116153917274

4.服务消费者

①新建cloud-consumerzk-order80

image-20210116154847321

②修改pom,创建application.yml,创建启动类

pom

<?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>mycloud2020</artifactId>
        <groupId>org.yezhinao</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>cloud-consumerzk-order80</artifactId>

    <dependencies>

        <dependency>
            <groupId>org.yezhinao</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>${project.version}</version>
        </dependency>



        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-zookeeper-discovery -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
            <!--排除zk3.5.3-->
            <exclusions>
                <exclusion>
                    <groupId>org.apache.zookeeper</groupId>
                    <artifactId>zookeeper</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!--添加zk 3.5.9版本-->
        <!-- https://mvnrepository.com/artifact/org.apache.zookeeper/zookeeper -->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.5.9</version>
        </dependency>


        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-test -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>


    </dependencies>



</project>

application.yml

server:
  port: 80

spring:
  application:
    name: cloud-consumer-order
  cloud:
    zookeeper:
      #      connect-string: 192.168.75.215:2181  #公司局域网
      connect-string: 192.168.88.77:2181  #家里局域网

启动类

@SpringBootApplication
@EnableDiscoveryClient
public class OrderZKMain80 {
    public static void main(String[] args) {
        SpringApplication.run(OrderZKMain80.class,args);
    }
}

③注入RestTemplate 和 创建接口

image-20210116160041635

@Configuration
public class ApplicationContextConfig {

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

image-20210116160106153

@RestController
@Slf4j
public class OrderZKController {

    public static final String INVOME_URL = "http://cloud-provider-payment";

    @Resource
    private RestTemplate restTemplate;

    @GetMapping("/consumer/payment/zk")
    public String payment() {
        return restTemplate.getForObject(INVOME_URL + "/payment/zk", String.class);
    }

}

④启动

两个服务注册成功

image-20210116160134067

http://localhost/consumer/payment/zk

image-20210116160255011

代码:https://gitee.com/yezhinao/SpringCloud-Learn/tree/master/mycloud2020(3)

下一篇:B站尚硅谷最新版SpringCloud 学习笔记(4)-Consul服务注册与发现

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值