滚雪球学SpringCloud[2.1]:服务注册中心Eureka

news/2024/9/18 21:43:55/ 标签: spring cloud, eureka, spring

全文目录:

    • 前言
    • 2.1 服务注册中心Eureka
      • Eureka简介与工作原理
        • Eureka的工作原理
      • 配置Eureka Server
      • 配置Eureka Client
      • Eureka的自我保护机制
        • 自我保护机制的工作原理
        • 配置自我保护机制
    • 预告

前言

在上一篇文章中,我们对SpringCloud的概念和微服务架构的基础进行了详细的介绍。我们讨论了SpringCloud的背景与起源,了解了微服务架构的优势和挑战,并初步了解了SpringCloud在微服务中的关键角色。我们还通过一个简单的案例,展示了如何快速搭建一个微服务系统,为大家理解SpringCloud的应用提供了一个基础。

随着微服务系统的规模不断扩大,服务数量的增加,服务间的通信和管理变得愈加复杂。这时候,一个有效的服务注册和发现机制显得尤为重要。Eureka作为SpringCloud生态系统中的重要组成部分,承担着服务注册中心的角色,确保微服务之间能够高效、可靠地相互发现和通信。

本篇文章将深入探讨Eureka服务注册中心的工作原理与配置,帮助大家理解如何在SpringCloud微服务架构中使用Eureka实现服务注册与发现。

2.1 服务注册中心Eureka

Eureka简介与工作原理

Eureka是Netflix开发的一个服务注册和发现组件,作为SpringCloud中的核心组件之一,广泛应用于微服务架构中。Eureka允许各个微服务在启动时将自己的信息注册到Eureka Server中,其他微服务可以通过Eureka Server来查找和调用已经注册的服务。这种机制使得服务可以动态扩展,系统具有很强的容错能力。

Eureka的工作原理

Eureka的工作流程主要包括以下几个步骤:

  1. 服务注册:服务在启动时,将自己的网络位置信息(如IP地址、端口号等)注册到Eureka Server中。Eureka Server将这些信息存储在注册表中。
  2. 服务发现:当一个服务需要调用另一个服务时,它首先向Eureka Server发送请求,查询目标服务的地址。Eureka Server根据注册表返回相应的服务实例信息。
  3. 心跳机制:服务在运行过程中,会定期向Eureka Server发送心跳请求,以表明自己仍然正常运行。如果Eureka Server长时间未收到某个服务的心跳请求,将认为该服务已经不可用,并将其从注册表中移除。
  4. 服务摘除:当一个服务实例停止或崩溃时,它将从Eureka Server的注册表中被移除,防止其他服务继续向不可用的服务实例发送请求。

Eureka的这种动态注册与发现机制,使得微服务系统具备了很高的灵活性和可扩展性。

配置Eureka Server

要在SpringCloud项目中配置Eureka Server,我们可以按照以下步骤进行操作:

  1. 创建Eureka Server项目:首先,使用Spring Initializr创建一个新的Spring Boot项目,选择Eureka Server依赖。

  2. 配置application.yml:在项目的src/main/resources/application.yml文件中,配置Eureka Server的相关信息:

    server:port: 8761eureka:client:register-with-eureka: falsefetch-registry: falseserver:enable-self-preservation: true
    
    • server.port:指定Eureka Server的端口号。
    • eureka.client.register-with-eureka:设置为false,因为Eureka Server本身不需要注册到其他Eureka Server。
    • eureka.client.fetch-registry:设置为false,因为Eureka Server本身不需要从其他Eureka Server获取注册表。
  3. 启动Eureka Server:在主类上添加@EnableEurekaServer注解,然后运行该类以启动Eureka Server。

    @SpringBootApplication
    @EnableEurekaServer
    public class EurekaServerApplication {public static void main(String[] args) {SpringApplication.run(EurekaServerApplication.class, args);}
    }
    

    启动后,你可以在浏览器中访问http://localhost:8761,查看Eureka Server的控制台界面。

配置Eureka Client

Eureka Client是指那些向Eureka Server注册的微服务。要配置Eureka Client,可以按照以下步骤进行:

  1. 创建微服务项目:使用Spring Initializr创建一个新的Spring Boot项目,选择Eureka Discovery Client依赖。

  2. 配置application.yml:在项目的src/main/resources/application.yml文件中,配置Eureka Client的相关信息:

    spring:application:name: demo-serviceeureka:client:service-url:defaultZone: http://localhost:8761/eureka/
    
    • spring.application.name:指定服务的名称,将用于在Eureka Server中标识该服务。
    • eureka.client.service-url.defaultZone:指定Eureka Server的地址,客户端将向这个地址注册自己。
  3. 启动Eureka Client:在主类上添加@EnableEurekaClient注解,然后运行该类以启动Eureka Client。

    @SpringBootApplication
    @EnableEurekaClient
    public class DemoServiceApplication {public static void main(String[] args) {SpringApplication.run(DemoServiceApplication.class, args);}
    }
    

    启动后,该服务将自动注册到Eureka Server中,并可以在Eureka Server的控制台界面中查看。

Eureka的自我保护机制

Eureka Server有一个非常重要的特性,称为自我保护机制(Self-Preservation)。这个机制旨在防止因为网络问题或短暂的故障,导致Eureka Server错误地将所有服务实例都从注册表中移除。

自我保护机制的工作原理

当Eureka Server在短时间内检测到大量服务实例的心跳丢失时,它将进入自我保护模式。在这种模式下,Eureka Server不会立即移除这些服务实例,而是会继续保留它们在注册表中,以保证服务的可用性。

自我保护机制确保了在网络分区或其他临时故障情况下,系统仍然能够保持稳定,而不会因为误判导致服务不可用。

配置自我保护机制

自我保护机制在Eureka Server中默认是开启的。如果需要关闭该机制,可以在application.yml文件中进行配置:

eureka:server:enable-self-preservation: false

虽然关闭自我保护机制可以让Eureka Server更加及时地清理不可用的服务实例,但这也增加了因为网络抖动等原因导致的误判风险。因此,是否启用自我保护机制应根据具体的业务需求和网络环境来决定。

预告

在本期内容中,我们详细介绍了Eureka服务注册中心的工作原理与配置,包括如何搭建Eureka Server、配置Eureka Client以及理解Eureka的自我保护机制。Eureka是SpringCloud生态系统中非常重要的一个组件,它为微服务的动态扩展和高可用提供了强有力的支持。

下一期内容中,我们将深入探讨另两个常见的服务注册中心工具——Consul和Zookeeper。我们将对比它们与Eureka的区别,并详细讲解如何配置和使用它们。在选择服务注册工具时,理解各自的优缺点至关重要。敬请期待!


http://www.ppmy.cn/news/1526967.html

相关文章

【matlab】生成 GIF 的函数(已封装可直接调用)

文章目录 前言一、函数输入与输出二、函数代码三、例程(可直接运行)参考文献 前言 生成 gif 图片时遇到的问题,为了后续调用方便,封装为函数 一、函数输入与输出 输入: cell_figure: cell 数组,数组元素是…

TextCNN:文本卷积神经网络模型

目录 什么是TextCNN定义TextCNN类初始化一个model实例输出model 什么是TextCNN TextCNN(Text Convolutional Neural Network)是一种用于处理文本数据的卷积神经网(CNN)。通过在文本数据上应用卷积操作来提取局部特征,…

基于Java、SpringBoot、Vue的加油站管理系统设计

摘要 本系统是一个基于Java、SpringBoot和Vue的加油站管理系统。它旨在提高加油站的运营效率,优化客户服务体验,并通过数据分析支持更精准的业务决策。该系统包括用户管理、汽油管理、站点管理等功能模块。通过这些功能,管理员可以方便地管理…

校园管理新篇章:Spring Boot系统实现策略

第3章 系统分析 3.1 需求分析 校园管理系统主要是为了提高用户的工作效率和更方便快捷的满足用户,更好存储所有数据信息及快速方便的检索功能,对系统的各个模块是通过许多今天的发达系统做出合理的分析来确定考虑用户的可操作性,遵循开发的系…

springBoot整合easyexcel实现导入、导出功能

本次使用的框架是springboot&#xff0c;使用mybatisplus操作表&#xff0c;使用easyexcel实现表格的导入与导出。 操作步骤 1、导入依赖&#xff1a;&#xff08;pom.xml&#xff09; <!-- 查看excel的maven仓库 https://mvnrepository.com/artifact/com.alibaba/easyex…

统计信息的导出导入

常用场景&#xff1a; 1.生产环境的统计信息导入到测试环境使得执行计划的产生能极大程度上等同于生产环境。 2.割接测试环境的统计信息快速导入生产&#xff0c;替代生产库统计信息的收集操作&#xff0c;减少停机时间。 两种方式&#xff1a; 1.expdp/exp STATISTICS&…

使用js保存Blob和File文件

保存两种类型的文件方式都是一样&#xff1a; 1.保存Blob文件 (blob:Blob)>{// 创建一个 URL 对象const url URL.createObjectURL(blob);// 创建一个下载链接并触发下载const a document.createElement("a");a.href url;a.download "example.png"…

阿里云社区领积分自动打卡Selenium IDE脚本

脚本 感觉打卡比较麻烦&#xff0c;要点开点按钮这种机械化的操作。 所以就自己整了个脚本&#xff1a; {"id": "f9999777-9ad6-40e0-9435-4f105919c982","version": "2.0","name": "aliyun","url": …

2021 年 6 月青少年软编等考 C 语言二级真题解析

目录 T1. 数字放大思路分析 T2. 统一文件名思路分析 T3. 内部元素之和思路分析 T4. 整数排序思路分析 T5. 计算好数思路分析 T1. 数字放大 给定一个整数序列以及放大倍数 x x x&#xff0c;将序列中每个整数放大 x x x 倍后输出。 时间限制&#xff1a;1 s 内存限制&#x…

GO 闭包

文章目录 1. **累加器&#xff08;状态保持器&#xff09;**2. **缓存&#xff08;记忆化&#xff09;**3. **工厂函数**4. **函数式编程风格**5. **创建动态行为的函数**6. **控制访问权限** 总结 高级闭包的使用在 Go 中非常灵活和强大&#xff0c;特别是在需要保存状态或对外…

PCIe进阶之TL:First/Last DW Byte Enables Rules Traffic Class Field

1 First/Last DW Byte Enables Rules & Attributes Field 1.1 First/Last DW Byte Enables Rules Byte Enable 包含在 Memory、I/O 和 Configuration Request 中。本文定义了相应的规则。Byte Enable 位于 header 的 byte 7 。对于 TH 字段值为 1 的 Memory Read Request…

【C++】——继承详解

目录 1、继承的概念与意义 2、继承的使用 2.1继承的定义及语法 2.2基类与派生类间的转换 2.3继承中的作用域 2.4派生类的默认成员函数 <1>构造函数 <2>拷贝构造函数 <3>赋值重载函数 <4析构函数 <5>总结 3、继承与友元 4、继承与静态变…

《信息系统安全》课程实验指导

第1关&#xff1a;实验一&#xff1a;古典密码算法---代换技术 任务描述 本关任务&#xff1a;了解古典密码体制技术中的代换技术&#xff0c;并编程实现代换密码的加解密功能。 注意所有明文字符为26个小写字母&#xff0c;也就是说字母表为26个小写字母。 相关知识 为了完…

通信工程学习:什么是HFC混合光纤同轴电缆

HFC&#xff1a;混合光纤同轴电缆 HFC&#xff08;Hybrid Fiber Coaxial&#xff09;混合光纤同轴电缆是一种结合了光纤与同轴电缆的宽带接入网技术。以下是对HFC混合光纤同轴电缆的详细解释&#xff1a; 一、HFC混合光纤同轴电缆的定义与概述 定义&#xff1a;HFC是一种结合光…

基于微信小程序的高校实验室管理系统的设计与实现

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 基于微信小程序JavaSpringBootVueMySQL的高…

S3C2440开发板点亮LED灯+PWM定时器

目录 GPIO引脚和寄存器概述 点亮LED灯步骤 1.配置GPIO 2.点亮LED 设置引脚为输出 控制引脚电平 完整代码 PWM GPIO引脚和寄存器概述 GPIO端口&#xff1a; S3C2440的GPIO引脚可被配置为输入或输出&#xff08;控制LED的引脚通常配置为输出模式&#xff09;。寄存器&#…

VRRP 笔记

一、概念&#xff1a; vrrp&#xff1a;Virtual Router Redundancy Protocol 虚拟路由冗余协议&#xff0c;当网关发生故障时&#xff0c;进行主备切换&#xff0c;保证业务连续性 把多台物理机的网关虚拟成一台Virtual Router&#xff0c;称为 VRID VIP&#xff1a;虚拟IP VM…

简述三次握手和四次断开

在计算机网络中&#xff0c;TCP&#xff08;Transmission Control Protocol&#xff09;是一种面向连接的协议&#xff0c;它通过三次握手&#xff08;Three-Way Handshake&#xff09;建立连接&#xff0c;并通过四次挥手&#xff08;Four-Way Wave&#xff09;断开连接。下面…

图像处理 -- ISP功能之局部对比度增强 LCE

局部对比度增强&#xff08;LCE&#xff09; 局部对比度增强&#xff08;Local Contrast Enhancement, LCE&#xff09;是一种图像处理技术&#xff0c;旨在通过调整图像的局部区域对比度&#xff0c;增强图像细节和视觉效果。LCE 的实现方式多种多样&#xff0c;以下是几种常…

godotenv拜读

简介 应用提倡将配置存储在环境变量中。任何从开发环境切换到生产环境时需要修改的东西都从代码抽取到环境变量里。 但是在实际开发中&#xff0c;如果同一台机器运行多个项目&#xff0c;设置环境变量容易冲突&#xff0c;不实用。godotenv库从.env文件中读取配置&#xff0c;…