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

第四章_Eureka服务注册与发现

1.Eureka基础知识

1.1Eureka工作流程-服务注册

image-20230907225740321

1.2Eureka两大组件

image-20230907230812361

2.单机Eureka构建步骤

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

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

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

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

(1)pom文件引入

image-20230908212248764

(2)yml配置文件

image-20230908212339646

(3)主启动

image-20230908212358935

(4)测试

运行localhost:7001

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

(1)pom

image-20230908213212902

(2)改yml和主启动

image-20230908213420503

image-20230908214435053

(3)测试

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

image-20230908214101436

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

(1)pom

image-20230908231331980

(2)改yml和主启动

image-20230908231356303

(3)测试

image-20230908224807687

2.4工作流程

image-20230908225038280

3.集群Eureka构建步骤

3.1Eureka集群原理说明

(1)问题引入

image-20230908224926945

image-20230908225107902

3.2EurekaServer集群环境构建步骤

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

image-20230908225413313

image-20230908225655965

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

image-20230908230111621

  • 7002

image-20230908231226006

(3)测试

image-20230908231151885

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

image-20230908232134560

3.4测试01

启动顺序

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

测试之前的网站

3.5支付8001集群环境构建

(1)思路

image-20230909102352656

(2)新建支付服务8002

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

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

image-20230909101800555

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

image-20230909102039146

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

image-20230909102327154

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

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

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

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

image-20230909100043584

image-20230909100001608

4.Actuator微服务信息完善

  • 涉及的jar包

image-20230909104731604

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

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

    image-20230909103905524

  • 修改:

    image-20230909104342019

  • 效果:

    image-20230909104235974

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

image-20230909104508410

image-20230909104617070

5.服务发现Discovery

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

5.1服务发现步骤

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

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

image-20230909110307597

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

image-20230909110349338

  • 说明

image-20230909110636308

6.Eureka自我保护

6.1概述

image-20230909110753223

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

属于CAP里面的AP分支

image-20230909111258872

6.2怎么禁止自我保护

(1)注册中心EurekaServer70001

image-20230909113107238

  • 效果

image-20230909112111458

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

image-20230909112612065

效果:

image-20230909112926832

  • 关闭8001服务后

image-20230909113018158

第五章_Zookeeper服务注册与发现

1.Zookeeper概述

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

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

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

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

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

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

    image-20230918091414367

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

image-20230910195530154

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

    image-20230918091617235

    该文件新增以下内容:

    image-20230918091739057

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

image-20230918091929726

4.主机连接zookeeper

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

        <!-- 引入自己定义的api通用包,可以使用payment对象-->
        <dependency>
            <groupId>com.peng.springcloud</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>1.0-SNAPSHOT</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>
            <!-- 先排除自带的zookeeper3.5.3 ,否则会和linux安装的3.8.2版本产生冲突-->
            <exclusions>
                <exclusion>
                    <groupId>org.apache.zookeeper</groupId>
                    <artifactId>zookeeper</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- linux安装的zookeeper3.8.2版本-->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.8.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>
(2)application.yml

image-20230918092243336

(3)主启动

image-20230918092307072

(4)测试

image-20230918092414362

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

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

image-20230918092638001

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

    image-20230918093948911

    image-20230918093850106

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

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

image-20230918094520609

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

(1)pom
	<dependencies>
        <!-- 引入自己定义的api通用包,可以使用payment对象-->
        <dependency>
            <groupId>com.peng.springcloud</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>1.0-SNAPSHOT</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>
            <!-- 先排除自带的zookeeper3.5.3 ,否则会和linux安装的3.8.2版本产生冲突-->
            <exclusions>
                <exclusion>
                    <groupId>org.apache.zookeeper</groupId>
                    <artifactId>zookeeper</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- linux安装的zookeeper3.8.2版本-->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.8.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>
(2)yml

image-20230918113648023

(3)配置类—引入restTemplate

image-20230918113659700

(4)主启动

image-20230918113800047

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

image-20230918113830626

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

    image-20230918113901513

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

    image-20230918114031309

第六章_Confsul

1.Consul简介

(1)Consul是什么

image-20230918101447982

(2)Consul能做什么

image-20230918101557151

(3)Consul中文文档

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

2.安装并运行Consul

(1)下载地址

Install | Consul | HashiCorp Developer

选中window的amd64版本进行安装

image-20230918193812756

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

image-20230918193901744

  • 验证consul是否安装成功

    image-20230918193938987

  • 启动consul

    image-20230918194044100

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

3.服务提供者

新建module工程:cloud-providerconsul-payment8006

(1)pom文件
	<dependencies>
        
        <!-- 引入自己定义的api通用包,可以使用payment对象-->
        <dependency>
            <groupId>com.peng.springcloud</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

        <!--springcloud consul server-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-consul-discovery</artifactId>
        </dependency>

        <!-- springboot整合Web组件 -->
        <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>
        <!-- 日常通用jar包 -->
        <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>

(2)yml文件

image-20230918200903058

(3)主启动

image-20230918200917415

(4)业务类

image-20230918200926412

(5)测试一

image-20230918200957813

(6)测试二

image-20230918195727306

4.服务消费者

(1)pom文件
	<dependencies>

        <!-- 引入自己定义的api通用包,可以使用payment对象-->
        <dependency>
            <groupId>com.peng.springcloud</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

        <!--springcloud consul server-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-consul-discovery</artifactId>
        </dependency>

        <!-- springboot整合Web组件 -->
        <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>
        <!-- 日常通用jar包 -->
        <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>
(2)yml文件

image-20230918202850509

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

image-20230918202949006

(5)测试一:成功

image-20230918202215114

(6)测试二:失败

image-20230918203031857

5.三个注册中心异同点

image-20230918211433116

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

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

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

image-20230918211526686

(4)CP

image-20230918211230699

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/367560.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【学员分享-考试心得】国产数据库潜力无限,云贝教育OBCP认证培训帮您解难题

近年来&#xff0c;随着国产化转型的推进&#xff0c;国外数据库的岗位需求逐渐减少&#xff0c;让许多IT从业者倍感压力。在这种情况下&#xff0c;了解国产数据库成为了求职市场上的竞争力。云贝老师们将聚焦于OceanBase、PostgreSQL、TDSQL等IT培训&#xff0c;探讨其对国产…

如何计算模型的复杂度(参数量,FLOPs)

参考 如何计算神经网络模型的复杂度 深度学习卷积、全连接层、深度可分离层参数量和FLOPs计算公式 概念 Params&#xff1a;模型的参数量。&#xff08;空间复杂度&#xff09;FLOPs&#xff1a;FLoating point Operations&#xff0c;前向推理的计算量。&#xff08;时间复…

Loadbalancer如何优雅分担服务负荷

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 Loadbalancer如何优雅分担服务负荷 前言Loadbalancer基础&#xff1a;数字世界的分配大师1. 分发请求&#xff1a;2. 健康检查&#xff1a;3. 会话保持&#xff1a;4. 可伸缩性&#xff1a;5. 负载均衡…

hivesql的基础知识点

目录 一、各数据类型的基础知识点 1.1 数值类型 整数 小数 float double(常用) decimal(针对高精度) 1.2 日期类型 date datetime timestamp time year 1.3 字符串类型 char varchar / varchar2 blob /text tinyblob / tinytext mediumblob / mediumtext lon…

2024年美国大学生数学建模竞赛(F题)减少非法野生动物贸易|ABM/神经网络建模解析,小鹿学长带队指引全代码文章与思路

我是鹿鹿学长&#xff0c;就读于上海交通大学&#xff0c;截至目前已经帮200人完成了建模与思路的构建的处理了&#xff5e; 本篇文章是鹿鹿学长经过深度思考&#xff0c;独辟蹊径&#xff0c;通过Agent-Based Modeling解决非法野生动植物贸易问题。结合神经网络、集成学习、贝…

前端工程化之:webpack1-13(内置插件)

目录 一、内置插件 1.DefinePlugin 2.BannerPlugin 3.ProvidePlugin 一、内置插件 所有的 webpack 内置插件都作为 webpack 的静态属性存在的&#xff0c;使用下面的方式即可创建一个插件对象&#xff1a; const webpack require("webpack")new webpack.插件…

影院购票|电影院订票选座小程序|基于微信小程序的电影院购票系统设计与实现(源码+数据库+文档)

电影院订票选座小程序目录 目录 基于微信小程序的电影院购票系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户功能实现 2、管理员功能实现 &#xff08;1&#xff09;影院信息管理 &#xff08;2&#xff09;电影信息管理 &#xff08;3&#xff09;已…

电源芯片并联使用-AMS1117

自记&#xff1a; 电源芯片可不可以并联使用&#xff1a; 1.按照正规大厂Rohm的技术文档介绍&#xff0c;直接并联的两个LDO&#xff0c;只要其输出电压有很小的差异&#xff0c;就会造成电流分配的很大差异。 至于你长期使用没有发现问题&#xff0c;那可能是总电流的余量留…

蓝桥杯---煤球数目

有一堆煤球,堆成三角棱锥形。具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形), 如果一共有100层,共有多少个煤球? 请填表示煤球总数目的数字. 注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字. 代码 pu…

Ingress

文章目录 环境准备什么是 Ingress认识 Ingress 资源Ingress 控制器(controller)Ingress 规则pathType 路径类型多重匹配Ingress 类TLS生成证书创建密钥 环境准备 下面的 yaml 文件内容&#xff0c;是使用 sts 创建两个 web 服务&#xff0c;并配置对应的 servcie。web 服务的首…

【JavaScript】前端攻击

前端攻击 1. CSRF的基本概念、缩写、全称 CSRF&#xff08;Cross-site request forgery&#xff09;&#xff1a;跨站请求伪造。 从上图可以看出&#xff0c;要完成一次CSRF攻击&#xff0c;受害者必须满足两个必要的条件&#xff1a; 登录受信任网站A&#xff0c;并在本地生…

【疑问】为什么声明和定义要分离

前言 我们在学习的时候接触过一个话&#xff1a;编写自定义函数的时候 要做到声明和定义分离 那么为什么呢 今天就来简单的了解一下 疑问&#xff1a;错误的发生 下面给出两个源文件和一个头文件以及报错信息 text.cc文件 #include"head.h"int main() {int a 1…

深入理解指针(3)

⽬录 1. 字符指针变量 2. 数组指针变量 3. ⼆维数组传参的本质 4. 函数指针变量 5. 函数指针数组 6. 转移表 1. 字符指针变量 在指针的类型中我们知道有⼀种指针类型为字符指针 char* ; ⼀般使⽤: int main() {char ch w;char *pc &ch;*pc w;return 0; } 还有…

C++类和对象入门(二)

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 一、类的作用域 类定义了一个新的作用域&#xff0c;类的所有成员都在类的作用域中。在类体外定义成员时&#xff0c;需要…

云服务器安全组、防火墙、端口问题,结合telnet解决项目部署无法访问

无论是运维还是后台亲自操刀在云服务器上部署项目&#xff0c;往往会遇到项目部署上去了&#xff0c;也确定项目正常运行&#xff0c;但还是没法访问的问题。 如果没有经验的小伙伴&#xff0c;很容易陷入疑惑的状态&#xff0c;无从下手解决。 其实这涉及到云平台安全组、服…

idea创建sping项目

一、环境 window10 IDEA 2022.2.3 maven-3.8.6 二、创建sping项目 1、新建Maven项目 File -> New -> Project 然后如下图选中Maven Archetype&#xff0c;在Archetype&#xff0c;选中maven-archetype-webapp&#xff0c;点击Create 2、配置maven 默认是使用IDEA内置…

《Pandas 简易速速上手小册》第9章:Pandas 数据可视化(2024 最新版)

文章目录 9.1 Pandas 内置可视化工具9.1.1 基础知识9.1.2 重点案例&#xff1a;销售数据分析9.1.3 拓展案例一&#xff1a;产品评价统计9.1.4 拓展案例二&#xff1a;员工满意度分布 9.2 与 Matplotlib 和 Seaborn 集成9.2.1 基础知识9.2.2 重点案例&#xff1a;销售趋势分析9.…

性能测试常用术语

之前在性能测试过程中&#xff0c;对于某些其中的术语一知半解&#xff0c;导致踩了很多坑。这篇博客&#xff0c;就常见的一些性能测试术语进行一次浅析。。。 负载 对被测系统不断施加压力&#xff0c;直到性能指标超过预期或某项资源使用达到饱和&#xff0c;以验证系统的处…

Linux Zip解压缩命令

Zip 用法 $ zip [-选项] [-b 路径] [-t 日期] [-n 后缀名] [压缩文件列表] [-xi 列表] 默认操作是添加或替换压缩文件列表中的压缩文件条目&#xff0c;压缩文件列表可以包括特殊名称 -&#xff0c;压缩标准输入数据 Zip 是一个创建和管理 zip 文件的压缩工具 Unzip 是一个用…
最新文章