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

news2024/9/26 5:24:40

第四章_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.coloradmin.cn/o/1429849.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

将结构体中的浮点数数据提取出来并发送至串口屏显示

1、由于项目中定义了一个结构体如下&#xff1a; typedef struct {uint16_t number;uint16_t LocationData;uint16_t PersonData; // _calendar_obj calendar; // uint16_t LiuLiang_Value;float LiuLiang_Value;_calendar_obj calendar_records; } Frame; 现需要将其中的flo…

新手从零开始学习数学建模论文写作(美赛论文临时抱佛脚篇)

本文记录于数学建模老哥视频的学习过程中。b站视频&#xff1a;http://【【零基础教程】老哥&#xff1a;数学建模算法、编程、写作和获奖指南全流程培训&#xff01;】https://www.bilibili.com/video/BV1kC4y1a7Ee?p50&vd_sourceff53a726c62f94eda5f615bd4a62c458 目录…

一分钟教你搭建steam幻兽帕鲁服务器,稳定不卡

如何自建幻兽帕鲁服务器&#xff1f;基于阿里云服务器搭建幻兽帕鲁palworld服务器教程来了&#xff0c;一看就懂系列。本文是利用OOS中幻兽帕鲁扩展程序来一键部署幻兽帕鲁服务器&#xff0c;阿里云百科aliyunbaike.com分享官方基于阿里云服务器快速创建幻兽帕鲁服务器教程&…

2024年适合进入股市吗?北京想开股票账户找哪家证券公司交易佣金费用最低?

股市规则是指股票市场中的一系列规则和制度&#xff0c;用于监管和管理股票交易。以下是一些常见的股市规则&#xff1a; 证券法律法规&#xff1a;股市规则的基础是国家的证券法律法规&#xff0c;包括证券法、公司法等&#xff0c;用于规范股票发行、交易和上市等方面的法律规…

【紧耦合新范式】Think-on-Graph:解决大模型在医疗、法律、金融等垂直领域的幻觉

Think-on-Graph&#xff1a;解决大模型在医疗、法律、金融等垂直领域的幻觉 Think-on-Graph 原理ToG 算法步骤&#xff1a;想想再查&#xff0c;查查再想实验结果 论文&#xff1a;https://arxiv.org/abs/2307.07697 代码&#xff1a;https://github.com/IDEA-FinAI/ToG Think…

AI专题:2023年AI创意营销趋势白皮书

今天分享的是AI系列深度研究报告&#xff1a;《AI专题&#xff1a;2023年AI创意营销趋势白皮书》。 &#xff08;报告出品方&#xff1a;蓝色光标集团销博特&#xff09; 报告共计&#xff1a;65页 2022年10月 Stabili ty AI获得1.01亿美元融资 开源人工智能公司 StabilityA…

STM32CAN2进入bus off 模式

工作遇到的问题记录 无人机CAN2整个进不了中断&#xff0c;通过查看寄存器判定出CAN节点进入了bus off mode 为何进入bus off &#xff0c;最后通过示波器看到整个CAN2总线波形就不对&#xff0c;总线出现了错误 Busoff的产生是一定是因为节点自身识别到自己发送错误&#xff…

Konva中滚动问题

现在有两个group,想要的效果时拖动绿的group时&#xff0c;红色group按照相同方向移动同样距离 可以在绿的group的拖动方法中 通过move方法 移动红色的group

零基础Vue框架上手;git,node,yarn安装

项目搭建环境&#xff1a; git安装&#xff1a;Git - 安装 Git (git-scm.com)&#xff08;官网&#xff09; 下载路径&#xff1a;Git - Downloading Package (git-scm.com)&#xff1b;根据自己电脑下载相对应的安装包 ​ 点next ​ 点next&#xff0c;点到最后安装就行。…

人工智能基础-matplotlib基础

绘制图形 import numpy as np x np.linspace(0, 10, 100) y np.sin(x) import matplotlib as mpl import matplotlib.pyplot as plt plt.plot(x, y) plt.show()绘制多条曲线 siny y.copy() cosy np.cos(x) plt.plot(x, siny) plt.plot(x, cosy) plt.show()设置线条颜色 …

2024年第四届能源与环境工程国际会议(CoEEE 2024) | Ei Scopus检索

会议简介 Brief Introduction 2024年第四届能源与环境工程国际会议(CoEEE 2024) 会议时间&#xff1a;2024年5月22日-24日 召开地点&#xff1a;意大利米兰 大会官网&#xff1a;www.coeee.org CoEEE 2024将围绕“能源与环境工程”的最新研究领域而展开&#xff0c;为研究人员、…

ES6-数组的解构赋值

一、数组的解构赋值的规律 - 只要等号两边的模式相同&#xff0c;左边的变量就会被赋予对应的值二、数组的解构赋值的例子讲解 1&#xff09;简单的示例&#xff08;完整的解构赋值&#xff09; 示例 //基本的模式匹配 // a&#xff0c;b,c依次和1&#xff0c;2&#xff0c…

CSS 外边距合并、塌陷和BFC

外边距合并 CSS中的外边距合并指的是当两个相邻元素都设置了上下外边距时&#xff0c;它们之间会发生重叠。这种现象被称为"margin collapsing"&#xff08;外边距合并&#xff09;或者"margin collapse"&#xff08;外边距塌陷&#xff09;。 可以看出上…

【PTA浙大版《C语言程序设计(第4版)》编程题】练习7-4 找出不是两个数组共有的元素(附测试点)

目录 输入格式: 输出格式: 输入样例: 输出样例: 代码呈现 测试点 给定两个整型数组&#xff0c;本题要求找出不是两者共有的元素。 输入格式: 输入分别在两行中给出两个整型数组&#xff0c;每行先给出正整数N&#xff08;≤20&#xff09;&#xff0c;随后是N个整数&a…

【DDD】学习笔记-代码模型的架构决策

代码模型属于软件架构的一部分&#xff0c;它是设计模型的进化与实现&#xff0c;体现出了代码模块&#xff08;包&#xff09;的结构层次。在架构视图中&#xff0c;代码模型甚至会作为其中的一个视图&#xff0c;通过它来展现模块的划分&#xff0c;并定义运行时实体与执行视…

Leetcode—203. 移除链表元素【简单】

2024每日刷题&#xff08;一零九&#xff09; Leetcode—203. 移除链表元素 实现代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(n…

ffmpeg 时间裁剪之-ss -t与滤镜中trim=start=*:duration=*的区别和联系

背景 工作中遇到的呗。记下来贡着。 滤镜重置时间戳&#xff1a;setptsPTS-STARTPTS 在FFmpeg中&#xff0c;setptsPTS-STARTPTS是一种用于调整视频时间戳&#xff08;PTS&#xff09;的滤镜表达式。这个表达式通常用于视频编辑和处理过程中&#xff0c;用于修改视频的时间轴…

H5 加密(MD5 Base64 sha1)

1. 说明 很多的时候是避免不了注册登录这一关的&#xff0c;但是一般的注册是没有任何的难度的&#xff0c;无非就是一些简单的获取用户输入的数据&#xff0c;然后进行简单的校验以后调用接口&#xff0c;将数据发送到后端&#xff0c;完成一个简单的注册的流程&#xff0c;那…

代码随想录 Leetcode93. 复原 IP 地址

题目&#xff1a; 代码(首刷看解析 2024年2月3日&#xff09;&#xff1a; class Solution { public:vector<string> res;bool Enligible(string& s, int left, int right) {if (left > right) return false;if (s[left] 0 && left ! right) return fal…

类银河恶魔城学习记录1-1 Player状态机的搭建 P28

对状态机的介绍 什么是状态机&#xff1f;一篇文章就够了 - 知乎 说实话&#xff0c;目前并不能深入理解状态机的奇妙之处&#xff08;当然&#xff0c;我觉得状态机作为教程的重要组成部分是不得不理解的&#xff0c;所以以下我会对游戏教程内的状态机做一些我认为的解释&am…