springcloud Eureka服务注册与发现

文章目录

  • 代码地址
  • Eureka基础知识
      • 什么是服务治理
      • 什么是服务注册与发现
  • 单机版eurekaServer
    • IDEA生成eurekaServer端服务注册中心类似物业公司
    • EurekaClient端cloud-provider-payment8001
    • 修改EurekaClient端cloud-consumer-order80
  • 集群Eureka构建步骤
    • 新建cloud-eureka-server7002
      • 测试
    • 将之前写的微服务加入Eureka集群
      • 测试
    • 新建cloud-provider-payment8002 (提供集群服务者)
  • actuator微服务信息完善
  • 服务发现Discovery
      • 测试
  • Eureka自我保护(这章没有修改下载代码)
    • 怎么禁止自我保护?
      • 注册中心eureakeServer端7001
      • 修改生产者客户端eureakeClient端8001

代码地址

代码上传到:https://github.com/13thm/study_springcloud/tree/main/days3

Eureka基础知识

什么是服务治理

Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务治理

什么是服务注册与发现

Eureka采用了CS的设计架构,Eureka Server 作为服务注册功能的服务器,它是服务注册中心。而系统中的其他微服务,使用 Eureka的客户端连接到 Eureka Server并维持心跳连接。这样系统的维护人员就可以通过 Eureka Server 来监控系统中各个微服务是否正常运行。

在服务注册与发现中,有一个注册中心。当服务器启动的时候,会把当前自己服务器的信息 比如 服务地址通讯地址等以别名方式注册到注册中心上。另一方(消费者|服务提供者),以该别名的方式去注册中心上获取到实际的服务通讯地址,然后再实现本地RPC调用RPC远程调用框架核心设计思想:在于注册中心,因为使用注册中心管理每个服务与服务之间的一个依赖关系(服务治理概念)。在任何rpc远程框架中,都会有一个注册中心(存放服务地址相关信息(接口地址))

下左图是Eureka系统架构,右图是Dubbo的架构,请对比请添加图片描述

Eureka包含两个组件:Eureka Server和Eureka Client

单机版eurekaServer

IDEA生成eurekaServer端服务注册中心类似物业公司

  1. 建Module cloud-eureka-server7001
  2. 改POM
  3. 写YML
  4. 主启动
  5. 测试 http://localhost:7001/
    在这里插入图片描述

具体看代码

EurekaClient端cloud-provider-payment8001

修改之前的cloud-provider-payment8001

1.修改pom文件,添加配置
2.在主类添加注解
3.在yml修改配置

具体看代码
4.测试 http://localhost:7001/
在这里插入图片描述

修改EurekaClient端cloud-consumer-order80

1.pom
2.主启动类 ,加注解
3.写yml
具体请看代码

4.启动测试
在这里插入图片描述
在这里插入图片描述

集群Eureka构建步骤

在这里插入图片描述

新建cloud-eureka-server7002

1.改POM
2.修改映射配置

C:\Windows\System32\drivers\etc
在这里插入图片描述
添加:

127.0.0.1  eureka7001.com
127.0.0.1  eureka7002.com

3.写YML

7001 改
7002 改
具体看代码

测试

在这里插入图片描述
在这里插入图片描述

将之前写的微服务加入Eureka集群

将支付服务8001微服务发布到上面2台Eureka集群配置中 --改YML

将订单服务80微服务发布到上面2台Eureka集群配置中--改YML

在这里插入图片描述

测试

先要启动EurekaServer,7001/7002服务,再要启动服务提供者provider,8001,再要启动消费者,80
测试网址:

http://eureka7002.com:7002/
http://eureka7001.com:7001/
http://localhost/consumer/payment/get/1

新建cloud-provider-payment8002 (提供集群服务者)

1.新建cloud-provider-payment8002(跟8001 几乎一致)
2.改POM
3.写YML
4.主启动
5.业务类(粘贴过来)
6.修改8001/8002的Controller
主要还是看代码哪里变化了

添加:
@Value("${server.port}")
    private String serverPort;
修改了返回值:添加了服务端口
return new CommonResult(200,"插入成功,返回结果"+result+"\t 服务端口:"+serverPort,payment);

 return new CommonResult(200,"查询成功"+"\t 服务端口:"+serverPort,payment);

修改80 controller
在这里插入图片描述

public static final String PAYMENT_URL = "http://CLOUD-PAYMENT-SERVICE";

添加
在这里插入图片描述

测试:

http://localhost/consumer/payment/get/1
http://eureka7001.com:7001/eureka

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

actuator微服务信息完善

在这里插入图片描述
鼠标放上去没有显示ip地址
修改8001的yml 和8002的yml
添加

 instance:
    instance-id: payment8001
    prefer-ip-address: true     #访问路径可以显示IP地址
 instance:
    instance-id: payment8002
    prefer-ip-address: true     #访问路径可以显示IP地址

在这里插入图片描述

服务发现Discovery

对于注册进eureka里面的微服务,可以通过服务发现来获得该服务的信息
修改cloud-provider-payment8001的Controller 和 修改cloud-provider-payment8002的Controller

添加以下代码:(具体看下载代码)

@Resource
private DiscoveryClient discoveryClient;
@GetMapping(value = "/payment/discovery")
    public Object discovery()
    {
        List<String> services = discoveryClient.getServices();
        for (String element : services) {
            System.out.println(element);
        }

        List<ServiceInstance> instances = discoveryClient.getInstances("CLOUD-PAYMENT-SERVICE");
        for (ServiceInstance element : instances) {
            System.out.println(element.getServiceId() + "\t" + element.getHost() + "\t" + element.getPort() + "\t"
                    + element.getUri());
        }
        return this.discoveryClient;
    }

在8001 和8002主启动类添加注解@EnableDiscoveryClient
在这里插入图片描述

测试

http://localhost:8001/payment/discovery
在这里插入图片描述
在这里插入图片描述

Eureka自我保护(这章没有修改下载代码)

保护模式主要用于一组客户端和Eureka Server之间存在网络分区场景下的保护。一旦进入保护模式,

Eureka Server将会尝试保护其服务注册表中的信息,不再删除服务注册表中的数据,也就是不会注销任何微服务。

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

怎么禁止自我保护?

注册中心eureakeServer端7001

出厂默认,自我保护机制是开启的:

eureka.server.enable-self-preservation=true

要把他关闭,使用eureka.server.enable-self-preservation = false 可以禁用自我保护模式(注册中心eureakeServer端7001 的yml 里面改)

修改生产者客户端eureakeClient端8001

server:
  port: 8001

###服务名称(服务注册到eureka名称)
spring:
    application:
        name: cloud-provider-payment

eureka:
  client: #服务提供者provider注册进eureka服务列表内
    service-url:
      register-with-eureka: true
      fetch-registry: true
      # cluster version
      #defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka,http://eureka7003.com:7003/eureka
      # singleton version
      defaultZone: http://eureka7001.com:7001/eureka
#心跳检测与续约时间
#开发时设置小些,保证服务关闭后注册中心能即使剔除服务
  instance:
  #Eureka客户端向服务端发送心跳的时间间隔,单位为秒(默认是30秒)
    lease-renewal-interval-in-seconds: 1
  #Eureka服务端在收到最后一次心跳后等待时间上限,单位为秒(默认是90秒),超时将剔除服务
    lease-expiration-duration-in-seconds: 2

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

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

相关文章

告别混乱:文件重命名,删除下划线,让文件管理更高效

在数字时代&#xff0c;经常要处理大量的文件&#xff0c;无论是工作、学习还是生活。文件名中经常有下划线、特殊字符和数字&#xff0c;使得文件管理变得混乱不堪。下面来看云炫文件管理器如何通过文件重命名删除下划线&#xff0c;让文件管理更高效。 文件名下划线被删除前后…

服务器如何重置密码?

服务器重置密码 服务器存在多种操作系统&#xff0c;本篇文章仅以RedHat、银河麒麟、Win Server系统作为举例&#xff01; 如果想了解更多服务器操作系统相关知识&#xff0c;请参看历史文章《服务器操作系统介绍》 银河麒麟破解密码 银河麒麟为国产Linux系统&#xff0c;UOS为…

【iOS】UIColor、CGColor、CIColor的区别和联系

编者在实验室小组的指导下&#xff0c;仿写了许多App&#xff0c;其中UI的颜色模仿也是令人头痛的点。设计颜色一般使用UIColor类方法直接获取颜色&#xff1a; 有时会使用 (UIColor *)colorWithRed:(CGFloat)red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alph…

十大排序算法模板

☆* o(≧▽≦)o *☆嗨~我是小奥&#x1f379; &#x1f4c4;&#x1f4c4;&#x1f4c4;个人博客&#xff1a;小奥的博客 &#x1f4c4;&#x1f4c4;&#x1f4c4;CSDN&#xff1a;个人CSDN &#x1f4d9;&#x1f4d9;&#x1f4d9;Github&#xff1a;传送门 &#x1f4c5;&a…

近4w字吐血整理!只要你认真看完【C++编程核心知识】分分钟吊打面试官(包含:内存、函数、引用、类与对象、文件操作)

&#x1f308;个人主页&#xff1a;godspeed_lucip &#x1f525; 系列专栏&#xff1a;C从基础到进阶 &#x1f3c6;&#x1f3c6;关注博主&#xff0c;随时获取更多关于C的优质内容&#xff01;&#x1f3c6;&#x1f3c6; C核心编程&#x1f30f;1 内存分区模型&#x1f384…

在 Jenkins 中使用 SSH Servers 配置文件上传路径

引言 在使用 Jenkins 进行持续集成和持续部署&#xff08;CI/CD&#xff09;的过程中&#xff0c;有时我们需要将构建好的文件上传到远程服务器。本文将介绍如何在 Jenkins 的 SSH Servers 配置中设置文件的上传目录&#xff0c;以及这些设置是如何组合以形成最终的上传路径。…

LLVM的项目结构

所有LLVM项目都有统一的目录结构。让我们比较一下LLVM和GCC&#xff0c;即GNU编译器集合。几十年来&#xff0c;GCC几乎为您能想到的每一个系统都提供了成熟的编译器。但除了编译器&#xff0c;没有任何工具可以用这些代码&#xff0c;原因是它不为重用而设计&#xff0c;而LLV…

【问题记录】使用命令语句从kaggle中下载数据集

从Kaggle中下载Tusimple数据集 1.服务器环境中安装kaggle 使用命令&#xff1a;pip install kaggle 2.复制下载API 具体命令如下&#xff1a; kaggle datasets download -d manideep1108/tusimple3.配置kaggle.json文件 如果直接使用命令会报错&#xff1a; root:~# kagg…

FPGA——时序分析与约束(Quartus II)

FPGA时序分析与约束 FPGA结构基础数据传输模型Quartus II 时序报告Quartus II 中TimeQuest的操作实操 时序分析&#xff1a;通过分析FPGA内部各个存储器之间的数据和时钟传输路径&#xff0c;来分析数据延迟和时钟延迟的关系&#xff0c;保证所有寄存器都可以正确寄存数据。 数…

直流继电器 JT3-22/5 线圈电压DC220V电磁式 柜内固定安装 JOSEF约瑟

JT3系列直流继电器 系列型号 JT3-42/3电磁继电器;JT3A-40/3电磁继电器 JT3-11/3电磁继电器;JT3A-03/3电磁继电器 JT3-30/3电磁继电器;JT3A-20/3电磁继电器 JT3-02/3电磁继电器;JT3A-12/3电磁继电器 JT3-22/1电磁继电器;JT3A-24/1电磁继电器 JT3-42/1电磁继电器;JT3A-31/1电磁…

gin-vue-admin二开使用雪花算法生成唯一标识 id

场景介绍 需求场景&#xff1a; 总部采集分支的数据&#xff0c;由于分支的 id 是子增的主键 id&#xff0c;所以会出现重复的 id&#xff0c;但是这个 id 需要作为标识&#xff0c;没有实际作用&#xff0c;这里选择的是分布式 id 雪花算法生成 id 存储用来标识&#xff0c;这…

NAS入门(学习笔记)

文章目录 AutoMLNAS初期NAS当前NAS框架One-Shot NAS权重共享策略 Zero-Shot NASZen-NASNASWOTEPENAS 参考资料 AutoML 深度学习使特征学习自动化 AutoML 使深度学习自动化 自动化机器学习 (automated machine learning) 是一种自动化的数据驱动方法, 并做出一系列决策。 按…

数据分析-Pandas如何整合多张数据表

数据分析-Pandas如何整合多张数据表 数据表&#xff0c;时间序列数据在数据分析建模中很常见&#xff0c;例如天气预报&#xff0c;空气状态监测&#xff0c;股票交易等金融场景。数据分析过程中重新调整&#xff0c;重塑数据表是很重要的技巧&#xff0c;此处选择Titanic数据…

vue-cli解决跨域

在vue.config.js中 找到devServer 在devServer中创建proxy代理 proxy:{ path&#xff08;路径中包含这个path就会导航到target的目标接口&#xff09;&#xff1a;{ target:"目标接口" } } 例&#xff1a; 1 同源策略只针对于浏览器&#xff0c;代理服务器到后端接…

Linux中的定时任务(案例:定时备份和清空)

前言 Linux中的定时任务&#xff08;案例&#xff1a;定时备份和清空&#xff09; crontab 命令 Linux crontab 是用来定期执行程序的命令, 当安装完成操作系统之后&#xff0c;默认便会启动此任务调度命令。crond 命令每分钟会定期检查是否有要执行的工作&#xff0c;如果有…

CentOS Linux操作系统源码安装最新Redis版本,使用JSON数据类型踩入新坑

最近有空查阅了redis官网&#xff0c;发现redis数据类型不止Strings、Lists、Sets、Hashes、Sorted sets&#xff0c;还多了几种&#xff0c;决定先试用下JSON数据类型 1、安装Redis软件 JSON数据类型&#xff0c;对Redis版本有要求&#xff0c;需要大于4.0版本。下图是华为云…

基础+常用的数据结构

基础 java基础 JDK 和 JRE JDK&#xff0c;它是功能齐全的 Java SDK&#xff0c;是提供给开发者使用&#xff0c;能够创建和编译 Java 程序的开发套件。它包含了 JRE,同时还包含了编译 java 源码的编译器 javac 以及一些其他工具比如 javadoc&#xff08;文档注释工具&#…

前端下载文件流,设置返回值类型responseType:‘blob‘无效的问题

前言&#xff1a; 本是一个非常简单的请求&#xff0c;即是下载文件。通常的做法如下&#xff1a; 1.前端通过Vue Axios向后端请求&#xff0c;同时在请求中设置响应体为Blob格式。 2.后端相应前端的请求&#xff0c;同时返回Blob格式的文件给到前端&#xff08;如果没有步骤…

java农业信息化技术一体化服务农产品商城平台springboot+vue

农业信息化服务平台,能够推进农村农业信息化的发展,提升农业和农村信息化水平,促进先进农业技术在农业生产中的推广应用,推动农业向现代化、集约化发展。同时,进一步探索农村信息化建设的新模式,以技术规划来支撑农业未来信息化管理的发展。 开发软件有很多种可以用&#xff0c…

【深度学习】RTX2060 2080如何安装CUDA,如何使用onnx runtime

文章目录 如何在Python环境下配置RTX 2060与CUDA 101. 安装最新的NVIDIA显卡驱动2. 使用conda安装CUDA Toolkit3. 验证onnxruntime与CUDA版本4. 验证ONNX需求版本5. 安装ONNX与onnxruntime6. 编写ONNX推理代码 如何在Python环境下配置RTX 2060与CUDA 10 RTX 2060虽然是一款较早…