springcloud Eureka服务注册与发现

这篇具有很好参考价值的文章主要介绍了springcloud Eureka服务注册与发现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

代码地址

代码上传到: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的架构,请对比springcloud Eureka服务注册与发现,springcloud,spring cloud,eureka,spring

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

单机版eurekaServer

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

  1. 建Module cloud-eureka-server7001
  2. 改POM
  3. 写YML
  4. 主启动
  5. 测试 http://localhost:7001/
    springcloud Eureka服务注册与发现,springcloud,spring cloud,eureka,spring

具体看代码

EurekaClient端cloud-provider-payment8001

修改之前的cloud-provider-payment8001

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

具体看代码
4.测试 http://localhost:7001/
springcloud Eureka服务注册与发现,springcloud,spring cloud,eureka,spring

修改EurekaClient端cloud-consumer-order80

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

4.启动测试
springcloud Eureka服务注册与发现,springcloud,spring cloud,eureka,spring
springcloud Eureka服务注册与发现,springcloud,spring cloud,eureka,spring

集群Eureka构建步骤

springcloud Eureka服务注册与发现,springcloud,spring cloud,eureka,spring

新建cloud-eureka-server7002

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

C:\Windows\System32\drivers\etc
springcloud Eureka服务注册与发现,springcloud,spring cloud,eureka,spring
添加:

127.0.0.1  eureka7001.com
127.0.0.1  eureka7002.com

3.写YML

7001 改
7002 改
具体看代码

测试

springcloud Eureka服务注册与发现,springcloud,spring cloud,eureka,spring
springcloud Eureka服务注册与发现,springcloud,spring cloud,eureka,spring

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

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

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

springcloud Eureka服务注册与发现,springcloud,spring cloud,eureka,spring

测试

先要启动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
springcloud Eureka服务注册与发现,springcloud,spring cloud,eureka,spring

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

添加
springcloud Eureka服务注册与发现,springcloud,spring cloud,eureka,spring

测试:

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

springcloud Eureka服务注册与发现,springcloud,spring cloud,eureka,spring
springcloud Eureka服务注册与发现,springcloud,spring cloud,eureka,spring
springcloud Eureka服务注册与发现,springcloud,spring cloud,eureka,spring

actuator微服务信息完善

springcloud Eureka服务注册与发现,springcloud,spring cloud,eureka,spring
鼠标放上去没有显示ip地址
修改8001的yml 和8002的yml
添加

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

springcloud Eureka服务注册与发现,springcloud,spring cloud,eureka,spring

服务发现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
springcloud Eureka服务注册与发现,springcloud,spring cloud,eureka,spring

测试

http://localhost:8001/payment/discovery
springcloud Eureka服务注册与发现,springcloud,spring cloud,eureka,spring
springcloud Eureka服务注册与发现,springcloud,spring cloud,eureka,spring

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

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

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

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

怎么禁止自我保护?

注册中心eureakeServer端7001

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

eureka.server.enable-self-preservation=true

要把他关闭,使用eureka.server.enable-self-preservation = false 可以禁用自我保护模式(注册中心eureakeServer端7001 的yml 里面改)文章来源地址https://www.toymoban.com/news/detail-800749.html

修改生产者客户端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

到了这里,关于springcloud Eureka服务注册与发现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Spring Cloud】深入理解 Eureka 注册中心的原理、服务的注册与发现

    在微服务架构中,服务的注册与发现是至关重要的一环。为了实现这一目标,Eureka 注册中心应运而生。在本篇文章中,我们将深入理解 Eureka 注册中心的原理,以及探讨服务的注册与发现机制。 在微服务的协作中,服务之间的远程调用是常见的需求。然而,使用传统的 Rest

    2024年02月08日
    浏览(62)
  • Spring Cloud(Finchley版本)系列教程(一) 服务注册与发现(eureka)

    Spring Cloud(Finchley版本)系列教程(一) 服务注册与发现(eureka) 为了更好的浏览体验,欢迎光顾勤奋的凯尔森同学个人博客http://www.huerpu.cc:7000 如有错误恳请大家批评指正,与大家共同学习、一起成长,万分感谢。 一、构建环境 Spring Cloud 的构建工具可以使用 Maven 或 Gradle ,但 Ma

    2024年02月09日
    浏览(61)
  • 云原生微服务治理 第四章 Spring Cloud Netflix 服务注册/发现组件Eureka

    第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 今天我们讲解Spring Cloud微服务的第一代实现:Spring Cloud Netflix Eureka 是 Netflix 公司开发的一款开源的服务注册与发现组件。 Spring Cloud 使用 Spring Boot 思想为 Eur

    2024年02月08日
    浏览(64)
  • Spring Cloud Eureka 服务注册和服务发现超详细(附加--源码实现案例--及实现逻辑图)

    这篇文章先讲述一下Eureka的应用场景、代码实现案例,多个服务模块注册到Euraka中,服务之间的调用实现我会再下一篇文章中进行讲解! Eureka主要是做: 注册发现中心 服务注册与发现的组件 说到Eureka不得不提到了CAP,那么什么是CAP原则呢,下面一起来看下! CAP 原则: 又称

    2024年02月15日
    浏览(97)
  • 【SpringCloud】Eureka原理分析、搭建Eureka服务、服务注册、服务发现

    🐌个人主页: 🐌 叶落闲庭 💨我的专栏:💨 c语言 数据结构 javaEE 操作系统 Redis 石可破也,而不可夺坚;丹可磨也,而不可夺赤。 当有两个服务,第一个服务需要远程调用第二个服务,采用的方式是发起一次HTTP请求,在之前的代码中是将服务提供者的ip和端口号硬编码到

    2024年02月07日
    浏览(50)
  • springcloud Eureka服务注册与发现

    代码上传到 :https://github.com/13thm/study_springcloud/tree/main/days3 什么是服务治理 Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务治理 什么是服务注册与发现 Eureka采用了CS的设计架构,Eureka Server 作为服务注册功能的服务器,它是服务注册中心。而系统中的其他微服务,使

    2024年01月18日
    浏览(69)
  • Spring Cloud之一:注册与发现-Eureka工程的创建

      系列目录(持续更新。。。) Spring Cloud:什么是微服务 Spring Cloud之一:注册与发现-Eureka工程的创建 Spring Cloud之二:服务提供者注册到Eureka Server Spring Cloud之三:Eureka Server添加认证 Spring Cloud 之四:使用Feign实现微服务间的交互 Spring Cloud 之五:Feign使用Hystrix 目录 环境 E

    2023年04月09日
    浏览(54)
  • 什么是SpringCloud Eureka服务注册与发现

    😀前言 本篇博文是关于SpringCloud Eureka 介绍,希望你能够喜欢 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动力😉😉 💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家的观看🥰 如果文

    2024年02月09日
    浏览(49)
  • SpringCloud服务注册与发现组件Eureka(五)

    Eureka github 地址: https://github.com/Netflix/eureka Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功

    2024年02月09日
    浏览(64)
  • SpringCloud_Eureka服务的注册与发现

    分布式:分布式解决的是系统性能问题: 即 解决系统部署上单点的问题 ,尽量让组成系统的子系统分散在不同的机器上进而提高系统的吞吐能力。 即多个相同的子系统在不同的服务器上。 分布式系统架构存在问题通过服务治理解决。 微服务:将系统的业务功能划分为极小

    2023年04月22日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包