SpringCloud核心组件Eureka菜鸟教程

关于Spring Cloud Eureka的核心概念

      Eureka 是 Netflix 开源的一款基于 REST 的服务发现工具,主要用于中间层服务器的云端负载均衡。它通过维护一个服务注册表来实现服务之间的通信1。在 Spring Cloud 中,Eureka 提供了一个高可用的服务注册与发现机制,使得微服务架构中的各个模块可以动态地加入或退出集群

一、核心工作原理
  1. 服务注册
    服务提供者(Eureka Client)启动时,向Eureka Server发送元数据(IP、端口、健康状态等)完成注册,注册表存储结构为:

    Map<String, Map<String, Lease<InstanceInfo>>>Map<String, Map<String, Lease<InstanceInfo>>>

    其中外层Map键为服务名称,内层Map键为实例ID2

  2. 服务续约
    客户端每30秒发送心跳包(eureka.instance.lease-renewal-interval-in-seconds),服务端收到后更新租约时间。若90秒未收到心跳(eureka.instance.lease-expiration-duration-in-seconds),标记实例不可用。

  3. 服务发现
    消费者通过服务名称向Eureka Server获取实例列表,默认每30秒更新本地缓存(eureka.client.registry-fetch-interval-seconds)。

  4. 服务剔除
    Eureka Server每60秒检查失效实例(eureka.server.eviction-interval-timer-in-ms),启动自我保护模式时暂停剔除

二、服务端配置(EUREKA SERVER)
  1. 依赖配置
    pom.xml中添加Eureka Server依赖

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

接着,在启动类上添加 @EnableEurekaServer 注解即可启用 Eureka Server 功能

配置文件设置

以下是典型的 application.ymlapplication.properties 文件配置示例,用于初始化单节点的 Eureka Server:

server:port: 8761  # Eureka默认端口
eureka:instance:hostname: localhostclient:register-with-eureka: false  # 服务端无需自我注册fetch-registry: false        # 不拉取注册表service-url:defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

启动类注解
添加@EnableEurekaServer以激活服务端:

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {public static void main(String[] args) {SpringApplication.run(EurekaServerApplication.class, args);}
}
三、客户端配置(EUREKA CLIENT)
  1. 依赖配置
    客户端需引入spring-cloud-starter-netflix-eureka-client

    <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>

    配置文件application.yml

    spring:application:name: user-service  # 服务名称
    eureka:client:service-url:defaultZone: http://localhost:8761/eureka/  # 注册到Eureka Server

    启动类注解
    使用@EnableDiscoveryClient@EnableEurekaClient(两者等效):

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

 

四、核心代码实现步骤
  1.  服务注册
    客户端启动后自动向Eureka Server注册,可通过http://localhost:8761查看注册列表。

  2. .服务发现

      使用DiscoveryClient动态获取其他服务实例

@Autowired
private DiscoveryClient discoveryClient;public List<ServiceInstance> getServiceInstances(String serviceName) {return discoveryClient.getInstances(serviceName);
}

 3. 服务消费者调用

@RestController
public class ConsumerController {@Autowiredprivate DiscoveryClient discoveryClient;@GetMapping("/call")public String callService() {List<ServiceInstance> instances = discoveryClient.getInstances("PROVIDER-SERVICE");// 负载均衡逻辑...}
}
五、高级配置示例
  1. 高可用集群

部署多个Eureka Server并相互注册YAML: 

# 节点1配置
eureka:client:service-url:defaultZone: http://eureka-node2:8762/eureka/
# 节点2配置
eureka:client:service-url:defaultZone: http://eureka-node1:8761/eureka/

 安全认证
添加Spring Security依赖并配置YAML:

eureka:client:service-url:defaultZone: http://user:password@localhost:8761/eureka/

 健康检查与元数据
启用健康检查并自定义元数据YAML

eureka:instance:health-check-url-path: /actuator/healthmetadata-map:zone: us-east

 

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

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

相关文章

职业教育新形态数字教材的建设与应用:重构教育生态的数字化革命

教育部新时代职业学校名师(名匠)名校长培养计划专题 四川省第四批职业学校名师(名匠)培养计划专题 在某职业院校的智能制造课堂上&#xff0c;学生佩戴VR设备&#xff0c;通过数字教材中的虚拟工厂完成设备装配训练&#xff0c;系统实时生成操作评分与改进建议。这一场景折射出…

基于Python的携程国际机票价格抓取与分析

一、项目背景与目标 携程作为中国领先的在线旅行服务平台&#xff0c;提供了丰富的机票预订服务。其国际机票价格受多种因素影响&#xff0c;包括季节、节假日、航班时刻等。通过抓取携程国际机票价格数据&#xff0c;我们可以进行价格趋势分析、性价比评估以及旅行规划建议等…

Windows 图形显示驱动开发-初始化WDDM 1.2 和 PnP

(WDDM) 1.2 及更高版本显示微型端口驱动程序的所有 Windows 显示驱动程序都必须支持以下行为&#xff0c;以响应即插即用 (PnP) 基础结构启动和停止请求。 根据驱动程序返回成功或失败代码&#xff0c;或者系统硬件是基于基本输入/输出系统 (BIOS) 还是统一可扩展固件接口 (UEF…

【1区SCI】Fusion entropy融合熵,多尺度,复合多尺度、时移多尺度、层次 + 故障识别、诊断-matlab代码

引言 2024年9月&#xff0c;研究者在数学领域国际顶级SCI期刊《Chaos, Solitons & Fractals》&#xff08;JCR 1区&#xff0c;中科院1区 Top&#xff09;上以“Fusion entropy and its spatial post-multiscale version: Methodology and application”为题发表最新科学研…

高并发架构设计之缓存

一、引言 缓存技术作为高并发架构设计的基石之一&#xff0c;通过数据暂存和快速访问机制&#xff0c;在提升系统性能、降低后端负载方面发挥着不可替代的作用。优秀的缓存设计能够将系统吞吐量提升数个数量级&#xff0c;将响应时间从秒级降至毫秒级&#xff0c;甚至成为系统…

Unity AI-使用Ollama本地大语言模型运行框架运行本地Deepseek等模型实现聊天对话(一)

一、Ollama介绍 官方网页&#xff1a;Ollama官方网址 中文文档参考&#xff1a;Ollama中文文档 相关教程&#xff1a;Ollama教程 Ollama 是一个开源的工具&#xff0c;旨在简化大型语言模型&#xff08;LLM&#xff09;在本地计算机上的运行和管理。它允许用户无需复杂的配置…

Docker Python 镜像使用指南

1. 使用 Python 镜像创建容器 docker run -itd -v /data:/data python:latest 作用&#xff1a;创建一个基于 python:latest 镜像的容器&#xff0c;并后台运行。 参数说明&#xff1a; -itd&#xff1a;交互式后台运行&#xff08;-i 交互模式&#xff0c;-t 分配伪终端&…

matlab中Simscape的调用-入门

Simscape 是由 MathWorks 公司开发的一款基于物理建模的仿真工具&#xff0c;它建立在 MATLAB/Simulink 平台之上&#xff0c;专门用于建模和仿真多领域物理系统。 主要特点 多领域建模&#xff1a;Simscape 提供了丰富的物理元件库&#xff0c;涵盖了机械、电气、液压、气动…

Flowable7.x学习笔记(十三)查看部署流程图

前言 Flowable 的流程图是 Flowable Modeler 或 Process Editor 中&#xff0c;使用拖拽和属性面板基于 BPMN 2.0 元素&#xff08;如任务、网关、事件、序列流等&#xff09;渲染出的业务流程图形界面​。 一、将图形导出可查看的作用 ① 可视化建模 帮助业务分析师和开发者…

Bootstrap 模态框

Bootstrap 模态框 Bootstrap 模态框&#xff08;Modal&#xff09;是 Bootstrap 框架中的一个组件&#xff0c;它允许你在一个页面中创建一个模态对话框&#xff0c;用于显示内容、表单、图像或其他信息。模态框通常覆盖在当前页面上&#xff0c;提供了一种不离开当前页面的交…

python-69-基于graphviz可视化软件生成流程图

文章目录 1 Graphviz可视化软件1.1 graphviz简介1.2 安装部署2 基于python示例应用2.1 基本示例2.2 解决中文显示乱码2.3 显示多个输出边2.4 显示输出引脚名称2.5 从左至右显示布局2.6 设置节点为方形3 参考附录1 Graphviz可视化软件 1.1 graphviz简介 Graphviz(Graph Visua…

AJAX 介绍

一、什么是AJAX ? AJAX 是 异步的 JavaScript 和 XML&#xff08;Asynchronous JavaScript And XML&#xff09; 的缩写&#xff0c;是一种实现浏览器与服务器进行数据通信的技术。其核心是通过 XMLHttpRequest 对象在不重新刷新页面的前提下&#xff0c;与服务器交换数据并更…

新ubuntu物理机开启ipv6让外网访问

Ubuntu 物理机 SSH 远程连接与 IPv6 外网访问测试指南 1. 通过 SSH 远程连接 Ubuntu 物理机 1.1 安装 SSH 服务 sudo apt update sudo apt install openssh-server1.2 检查 SSH 服务状态 sudo systemctl status ssh确认出现 active (running)。 1.3 获取物理机 IP 地址 i…

linux系统上使用nginx访问php文件返回File not found错误处理方案

linux系统上使用nginx访问php文件返回File not found错误处理方案 第一种情况第二种情况 第一种情况 可以在你的location php 里面添加当文件不存在时返回404而不是交给php-fpm进行处理 location ~ \.php$ { ... #文件不存在转404 try_files $uri 404; ... }然后&#xff0c…

基于 SpringBoot 与 Redis 的缓存预热案例

文章目录 “缓存预热” 是什么&#xff1f;项目环境搭建创建数据访问层预热数据到 Redis 中创建缓存服务类测试缓存预热 “缓存预热” 是什么&#xff1f; 缓存预热是一种优化策略&#xff0c;在系统启动或者流量高峰来临之前&#xff0c;将一些经常访问的数据提前加载到缓存中…

java—11 Redis

目录 一、Redis概述 二、Redis类型及编码 三、Redis对象的编码 1. 类型&编码的对应关系 2. string类型常用命令 &#xff08;1&#xff09;string类型内部实现——int编码 &#xff08;2&#xff09;string类型内部实现——embstr编码 ​编辑 &#xff08;3&#x…

分布式链路追踪理论

基本概念 分布式调用链标准-openTracing Span-节点组成跟踪树结构 有一些特定的变量&#xff0c;SpanName SpanId traceId spanParentId Trace&#xff08;追踪&#xff09;&#xff1a;代表一个完整的请求流程&#xff08;如用户下单&#xff09;&#xff0c;由多个Span组成…

err: Error: Request failed with status code 400

好的&#xff0c;今天学习ai的时候从前端发送请求&#xff0c;实在是想不通为啥会啥是一个坏请求&#xff0c;后来从前端方法一个一个找参数&#xff0c;传递的值都有&#xff0c;然后想到我这边需要传递的是一个对象&#xff0c;那么后端使用的RequestParam就接收不到json对象…

开发小程序后端用PHP好还是Java哪个好?

在开发后端时&#xff0c;是选择PHP还是Java主要取决于你的项目需求、团队技术栈、性能要求以及维护成本等因素。下面我将从几个关键方面对两者进行简要对比&#xff0c;以帮助你做出更明智的选择。 PHP 优点&#xff1a; 简单易学&#xff1a;PHP语法简单&#xff0c;上手快&a…

麒麟V10 aarch64 qt 安装

在麒麟V10(aarch64架构)中安装Qt,需根据具体需求选择合适的方法。以下是综合多个搜索结果的安装方案及注意事项: 一、安装方法 1. 在线安装默认版本 适用于对Qt版本无特殊要求的情况。通过APT包管理器安装系统默认提供的Qt版本(如Qt 5.12.12): sudo apt-get update s…