【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul

第四章_Eureka服务注册与发现

1.Eureka基础知识

1.1Eureka工作流程-服务注册

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第1张图片

1.2Eureka两大组件

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第2张图片

2.单机Eureka构建步骤

  • IDEA生成EurekaServer端服务注册中心,类似于物业公司

  • EurekaClient端cloud-provider-payment8081将注册进EurekaServer成为服务提供者provider,类似尚硅谷对外提供授课服务

  • EurekaClient端cloud-consumer-order80将注册进EurekaServer成为服务消费者consumer,类似来上课的各位同学

2.1IDEA生成EurekaServer端服务注册中心

(1)pom文件引入

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第3张图片

(2)yml配置文件

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第4张图片

(3)主启动

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第5张图片

(4)测试

运行localhost:7001

2.2EurekaClient端cloud-provider-payment8081将注册进EurekaServer

(1)pom

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第6张图片

(2)改yml和主启动

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第7张图片

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第8张图片

(3)测试

运行localhost:7001,观察到支付模块已经注册到Eureka服务注册中心

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第9张图片

2.3EurekaClient端cloud-consumer-order80将注册进EurekaServer成为服务消费者consumer

(1)pom

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第10张图片

(2)改yml和主启动

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第11张图片

(3)测试

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第12张图片

2.4工作流程

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第13张图片

3.集群Eureka构建步骤

3.1Eureka集群原理说明

(1)问题引入

image-20230908224926945

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第14张图片

3.2EurekaServer集群环境构建步骤

(1)修改映射配置添加进hosts文件

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第15张图片

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第16张图片

(2)修改服务7001和7002的yml配置文件
  • 7001

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第17张图片

  • 7002

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第18张图片

(3)测试

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第19张图片

3.3将支付8081和订单80服务发布到2台Eureka集群配置中——改yml

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第20张图片

3.4测试01

启动顺序

  • 启动EurekaServer,7001/7002服务
  • 再启动服务提供者,8001
  • 再启动消费者,80

测试之前的网站

3.5支付8001集群环境构建

(1)思路

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第21张图片

(2)新建支付服务8002

并将支付服务8001代码复制粘贴到支付服务8002中,再修改相关yml中端口名称和主启动类名称即可

(3)修改支付服务8001/8002的Controller

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第22张图片

(4)bug
①修改订单80服务远程调用的地址

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第23张图片

②使用@LoadBalanced注解赋予RestTemplate负载均衡能力

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第24张图片

(5)测试
  • 先启动EurekaServer,即7001/7002服务

  • 再启动服务提供者,即支付8001/8002服务、最后启动订单80服务

  • 测试:localhost/consumer/payment/get/3

  • 结果:8001/8002端口交替出现、负载均衡效果达到

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第25张图片

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第26张图片

4.Actuator微服务信息完善

  • 涉及的jar包

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第27张图片

4.1主机名称:服务名称修改

  • 存在的问题:Eureka显示主机名称(不安全)

    image-20230909103905524

  • 修改:

    【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第28张图片

  • 效果:

    【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第29张图片

4.2访问信息需配置有IP显示

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第30张图片

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第31张图片

5.服务发现Discovery

服务发现:对于注册进eureka里面的微服务,可以通过服务发现来获得该服务的信息

5.1服务发现步骤

(1)修改支付服务8001的controller

引入discoverClient,即服务发现客户端

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第32张图片

(2)主启动添加注解@EnableDiscoveryClient

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第33张图片

  • 说明

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第34张图片

6.Eureka自我保护

6.1概述

image-20230909110753223

即:某时刻某一个微服务不可用了的时候,Eureka不会立刻清理,依旧会对微服务的信息进行保存

属于CAP里面的AP分支

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第35张图片

6.2怎么禁止自我保护

(1)注册中心EurekaServer70001

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第36张图片

  • 效果

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第37张图片

(2)生产者客户端EurekaClient端8001

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第38张图片

效果:

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第39张图片

  • 关闭8001服务后

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第40张图片

第五章_Zookeeper服务注册与发现

1.Zookeeper概述

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

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

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

2.Linux新增JDK1.8环境并安装Zookeeper服务

  • 首先,在主机下载JDK1.8和Zookeeper相关jar包的压缩包

  • 第二,通过Xftp5软件将jar包的压缩包传到Linux上(路径为/usr/local),再解压

    【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第41张图片

  • 第三,配置Java和zookeeper的环境变量(修改文件/etc/profile,新增以下内容)

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第42张图片

  • 第四,配置zookeeper服务注册中心的配置文件(进入zookeeper安装路径)

    image-20230918091617235

    该文件新增以下内容:

    【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第43张图片

  • 第五,启动zookeeper并查看状态

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第44张图片

4.主机连接zookeeper

(1)pom文件—注意删掉Eureka相关依赖,否则会报两个服务注册中心错误
	<dependencies>

        
        <dependency>
            <groupId>com.peng.springcloudgroupId>
            <artifactId>cloud-api-commonsartifactId>
            <version>1.0-SNAPSHOTversion>
        dependency>

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-actuatorartifactId>
        dependency>

        
        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-zookeeper-discoveryartifactId>
            
            <exclusions>
                <exclusion>
                    <groupId>org.apache.zookeepergroupId>
                    <artifactId>zookeeperartifactId>
                exclusion>
            exclusions>
        dependency>

        
        <dependency>
            <groupId>org.apache.zookeepergroupId>
            <artifactId>zookeeperartifactId>
            <version>3.8.2version>
        dependency>

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-devtoolsartifactId>
            <scope>runtimescope>
            <optional>trueoptional>
        dependency>

        <dependency>
            <groupId>org.projectlombokgroupId>
            <artifactId>lombokartifactId>
            <optional>trueoptional>
        dependency>

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-testartifactId>
            <scope>testscope>
        dependency>


    dependencies>
(2)application.yml

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第45张图片

(3)主启动

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第46张图片

(4)测试

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第47张图片

  • zookeeper发现注册到服务中心的服务

使用命令:./zkCli.sh 进入zookeeper客户端

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第48张图片

  • 通过service的id流水号查看注册进zookeeper的服务详细信息

    【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第49张图片

    【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第50张图片

5.注册进Zookeeper的节点为临时节点

主动停掉主机的java程序后,过段时间注册进zookeeper的服务消失

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第51张图片

6.新建消费者模块—cloud-consumerzk-order-80

(1)pom
	<dependencies>
        
        <dependency>
            <groupId>com.peng.springcloudgroupId>
            <artifactId>cloud-api-commonsartifactId>
            <version>1.0-SNAPSHOTversion>
        dependency>

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-actuatorartifactId>
        dependency>

        
        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-zookeeper-discoveryartifactId>
            
            <exclusions>
                <exclusion>
                    <groupId>org.apache.zookeepergroupId>
                    <artifactId>zookeeperartifactId>
                exclusion>
            exclusions>
        dependency>

        
        <dependency>
            <groupId>org.apache.zookeepergroupId>
            <artifactId>zookeeperartifactId>
            <version>3.8.2version>
        dependency>

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-devtoolsartifactId>
            <scope>runtimescope>
            <optional>trueoptional>
        dependency>

        <dependency>
            <groupId>org.projectlombokgroupId>
            <artifactId>lombokartifactId>
            <optional>trueoptional>
        dependency>

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-testartifactId>
            <scope>testscope>
        dependency>


    dependencies>
(2)yml

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第52张图片

(3)配置类—引入restTemplate

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第53张图片

(4)主启动

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第54张图片

(5)业务类(通过80端口调用8004端口服务)

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第55张图片

(6)测试
  • 测试一:cloud-consumer-order服务注册进zookeeper服务注册中心(成功)

    【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第56张图片

  • 测试二:通过80端口调用8004端口(失败)

    【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第57张图片

第六章_Confsul

1.Consul简介

(1)Consul是什么

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第58张图片

(2)Consul能做什么

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第59张图片

(3)Consul中文文档

Spring Cloud Consul 中文文档 参考手册 中文版

2.安装并运行Consul

(1)下载地址

Install | Consul | HashiCorp Developer

选中window的amd64版本进行安装

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第60张图片

(2)解压缩包,并打开cmd

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第61张图片

  • 验证consul是否安装成功

    【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第62张图片

  • 启动consul

    【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第63张图片

  • 输入localhost:8500,即可看到consul注册中心页面

3.服务提供者

新建module工程:cloud-providerconsul-payment8006

(1)pom文件
	<dependencies>
        
        
        <dependency>
            <groupId>com.peng.springcloudgroupId>
            <artifactId>cloud-api-commonsartifactId>
            <version>1.0-SNAPSHOTversion>
        dependency>

        
        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-consul-discoveryartifactId>
        dependency>

        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-actuatorartifactId>
        dependency>
        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-devtoolsartifactId>
            <scope>runtimescope>
            <optional>trueoptional>
        dependency>
        <dependency>
            <groupId>org.projectlombokgroupId>
            <artifactId>lombokartifactId>
            <optional>trueoptional>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-testartifactId>
            <scope>testscope>
        dependency>

    dependencies>

(2)yml文件

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第64张图片

(3)主启动

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第65张图片

(4)业务类

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第66张图片

(5)测试一

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第67张图片

(6)测试二

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第68张图片

4.服务消费者

(1)pom文件
	<dependencies>

        
        <dependency>
            <groupId>com.peng.springcloudgroupId>
            <artifactId>cloud-api-commonsartifactId>
            <version>1.0-SNAPSHOTversion>
        dependency>

        
        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-consul-discoveryartifactId>
        dependency>

        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-actuatorartifactId>
        dependency>
        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-devtoolsartifactId>
            <scope>runtimescope>
            <optional>trueoptional>
        dependency>
        <dependency>
            <groupId>org.projectlombokgroupId>
            <artifactId>lombokartifactId>
            <optional>trueoptional>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-testartifactId>
            <scope>testscope>
        dependency>

    dependencies>
(2)yml文件

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第69张图片

(3)主启动
(4)业务类

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第70张图片

(5)测试一:成功

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第71张图片

(6)测试二:失败

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第72张图片

5.三个注册中心异同点

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第73张图片

(1)CAP
  • C:Consistency(强一致性)
  • A:Availability(可用性)
  • P:Partition(分区容错性)

CAP理论关注粒度是数据,而不是

(2)经典CAP图
  • AP(Eureka)
  • CP(Zookeeper/Consul)
(3)AP

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第74张图片

(4)CP

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul_第75张图片

你可能感兴趣的:(Springcloud,spring,cloud,学习,笔记)