【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.rhkb.cn/news/250433.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【QT】贪吃蛇小游戏 -- 童年回忆

成品展示 项目分析&#xff1a; &#x1f40d;基本元素如下 &#x1f40d;小蛇的设计&#xff0c;初始大小蛇头占一个方块&#xff0c;蛇身占两个方块。 &#x1f40d;关于小蛇的移动&#xff0c;采用蛇头前进方向增加一个方块&#xff0c;蛇尾减掉一个方块的实现方法。 &#…

yum命令下载出现Failed to synchronize cache for repo ‘AppStream‘, ignoring this repo.

修改下面的配置文件 问题&#xff1a; cd /etc/yum.repos.d 修改下面四个文件 vim CentOS-Base.repo vim CentOS-AppStream.repo vim CentOS-Extras.repo vim CentOS-PowerTools.repo测试yum是否正常 yum -y install wget

Linux 高并发服务器

多进程并发服务器 使用多进程并发服务器时要考虑以下几点&#xff1a; 父进程最大文件描述个数(父进程中需要close关闭accept返回的新文件描述符)系统内创建进程个数(与内存大小相关)进程创建过多是否降低整体服务性能(进程调度) server /* server.c */ #include <stdio…

8.DNS域名解析服务器

目录 1. 概述 1.1. 产生原因 1.2. 作用&#xff1a; 1.3. 连接方式 1.4. 因特网的域名结构 1.4.1. 拓扑&#xff1a; 1.4.2. 分类 1.4.3. 域名服务器类型划分 2. DNS域名解析过程 2.1. 分类&#xff1a; 2.2. 解析图&#xff1a; 2.2.1. 图&#xff1a; 2.2.2. 过…

Entity实体设计

Entity实体设计 &#x1f4a1;用来和数据库中的表对应&#xff0c;解决的是数据格式在Java和数据库间的转换。 &#xff08;一&#xff09;设计思想 数据库Java表类行对象字段&#xff08;列&#xff09;属性 &#xff08;二&#xff09;实体Entity编程 编码规范 &#x1f4a…

IDEA JDBC配置

一、在pom中添加依赖 <dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</version></dependency></dependencies> 然后同步一下 二、编写代码…

Ubuntu18.04安装Matlab流程笔记

提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 Ubuntu18.04 安装Matlab流程 下载安装包和破解文件安装Matlab注册并运行 下载安装包和破解文件 matlabR2019A源码 提取码:2ztb 下载的Linux matlab2018a文件夹内有三个文件&#xff1a; # 解压Matlab201…

vue-3d-model

vue-3d-model - npm GitHub - hujiulong/vue-3d-model: &#x1f4f7; vue.js 3D model viewer component 通过该插件降低Threejs的使用难度 vue项目加载三维模型&#xff0c;我把模型放在了服务器的tomcat里面&#xff0c;需要对tomcat的fbx项目文件夹设置跨域&#xff0c;如…

关于破解IDEA后启动闪退的问题

问题描述&#xff1a;2023.1启动不了&#xff0c;双击桌面图标&#xff0c;没有响应。 解决办法&#xff1a; 打开C:\Users\c\AppData\Roaming\JetBrains\IntelliJIdea2023.1\idea64.exe.vmoptions 这个文件。 内容如下所示&#xff1a; 删除红框的数据以后&#xff0c;再登录…

算法41:掉落的方块(力扣699题)----线段树

题目&#xff1a;https://leetcode.cn/problems/falling-squares/description/ 在二维平面上的 x 轴上&#xff0c;放置着一些方块。 给你一个二维整数数组 positions &#xff0c;其中 positions[i] [lefti, sideLengthi] 表示&#xff1a;第 i 个方块边长为 sideLengthi &…

Docker 阿里云镜像仓库CR使用实践

一、使用容器镜像&#xff0c;查看镜像&#xff0c;创建&#xff0c;推送&#xff0c;拉取阿里云镜像 CR镜像管理&#xff08;阿里云容器镜像服务&#xff08;Container Registry&#xff09;&#xff09; 登录实例 未创建的镜像名称也可以push、docker的私有仓库需要提起创建…

[.NET] 查询当前已安装所有 Win32 与 UWP 应用

为了获取当前设备用户已安装的所有应用程序, 一般来讲有两种方案. 一种是通过查询 “shell:AppsFolder” 目录下所有项, 一种是从开始菜单中获取所有快捷方式, 然后加上查询所有已安装的 UWP 应用, 最后得到总列表. 如需代码参考, 请看 github.com/SlimeNull/WindowsAppsQuery …

基于Web停车场管理系统

技术架构&#xff1a; Spring MVC JSP MySQL 有需要该项目的小伙伴可以私信我你的Q。 功能描述&#xff1a; 基于Web停车场管理系统主要用于实现停车场相关信息管理&#xff0c;基本功能包括&#xff1a;系统信息管理模块、车位信息管理模块、IC卡信息管理模块、固定车主…

【PaddleSpeech】语音合成-男声

环境安装 系统&#xff1a;Ubuntu > 16.04 源码下载 使用apt安装 build-essential sudo apt install build-essential 克隆 PaddleSpeech 仓库 # github下载 git clone https://github.com/PaddlePaddle/PaddleSpeech.git # 也可以从gitee下载 git clone https://gite…

后端软件三层架构

一、三层架构简介 三层架构是软件开发中广泛采用的一种经典架构模式&#xff0c;其核心价值在于通过清晰的任务划分来提高代码的可维护性和重用性。具体来说&#xff0c;三层架构主要包括以下三个层次&#xff1a; 持久层&#xff08;DAO层&#xff09;&#xff1a;这一层主要…

设备的层次结构 - 驱动程序的复杂层次结构

由于设备对象的水平结构和垂直结构&#xff0c;组成了Windows设备的树形结构图。在Windows中出事的时候会有一个根设备&#xff0c;为了理解简单&#xff0c;我们将PCI总线想象成根总线&#xff08;根总线其实不是PCI总线&#xff0c;只是为了理解方便&#xff09;。查到PCI总线…

京东物流基于 StarRocks 的数据分析平台建设

作者&#xff1a;京东物流 数据专家 刘敬斌 小编导读&#xff1a; 京东集团 2007 年开始自建物流&#xff0c;2017 年 4 月正式成立京东物流集团&#xff0c;截至目前&#xff0c;京东物流已经构建了一套全面的智能物流系统&#xff0c;实现服务自动化、运营数字化及决策智能化…

基于WordPress开发微信小程序1:搭建Wordpress

2年前&#xff0c;在知乎上提问&#xff1a;多数公司为什么宁愿自研也不用wordpress二次开发建站&#xff1f; - 知乎 (zhihu.com)&#xff0c;收到了&#xff0c;很多回答 自己打算做一下提升&#xff0c;便有了自己基于wordpress开发微信小程序的想法 项目定位 基于wordpre…

项目安全-----加密算法实现

目录 对称加密算法 AES &#xff08;ECB模式&#xff09; AES(CBC 模式)。 非对称加密 对称加密算法 对称加密算法&#xff0c;是使用相同的密钥进行加密和解密。使用对称加密算法来加密双方的通信的话&#xff0c;双方需要先约定一个密钥&#xff0c;加密方才能加密&#…

SpringBoot实战2

目录 1.如何返回两个类型的数据&#xff1f;User和Booth 2.如何使用MyBatis遍历一个数组进行查询&#xff1f; 3.前端要的数据太多太杂&#xff0c;我们拼接多个List&#xff0c;前端找数据困难&#xff0c;浪费时间。因此我们进行三表联表查询。 1.首先创建一个vo包&#x…