当前位置: 首页 > news >正文

微服务Eureka组件的介绍、安装、使用

微服务 Eureka 组件的介绍、安装与使用详解

在微服务架构中,服务注册与发现是至关重要的一环,而 Eureka 作为 Netflix 开源的服务注册中心,广泛应用于 Spring Cloud 微服务体系中。本文将带你全面了解 Eureka 的概念、安装及在 Spring Boot 中的使用方法。


1️⃣ Eureka 概念介绍

Eureka 是一个基于 REST 的服务注册与发现组件,主要用于微服务系统中:

  • 服务注册:微服务启动时向 Eureka Server 注册自己的信息(IP、端口、服务名等)。
  • 服务发现:微服务调用方从 Eureka Server 获取其他服务的实例信息,实现动态调用。
  • 健康检查:Eureka 会定期检测注册服务的状态,剔除不可用实例。

Eureka 角色:

  • Eureka Server:服务注册中心
  • Eureka Client:微服务客户端,既向 Server 注册,又能发现其他服务

2️⃣ Eureka 的特点

  1. 基于 REST 的轻量级注册中心
  2. 高可用:支持集群部署,自动复制注册信息
  3. 自我保护机制:当网络异常导致大量服务下线时,防止误剔除
  4. 与 Spring Cloud 完美集成:配置简单,开箱即用

3️⃣ Eureka Server 的安装与配置

假设我们使用 Spring Boot + Spring Cloud Netflix Eureka

3.1 新建 Spring Boot 项目

  • 添加依赖(Maven):
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>eureka-server-demo</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.1.4</version><relativePath/></parent><properties><java.version>17</java.version><spring-cloud.version>2022.0.4</spring-cloud.version></properties><dependencies><!-- Eureka Server --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency><!-- Spring Boot Web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>

3.2 启动类添加注解

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {public static void main(String[] args) {SpringApplication.run(EurekaServerApplication.class, args);}
}

3.3 配置 application.yml

server:port: 8761eureka:client:register-with-eureka: false # Server 不注册自己fetch-registry: false # Server 不需要获取注册表
spring:application:name: eureka-server-demo

启动后访问:

http://localhost:8761

你会看到 Eureka Server 的管理界面。


4️⃣ Eureka Client 的安装与使用

4.1 添加依赖

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

4.2 配置 application.yml

spring:application:name: javaquestion-service  # 服务名
server:port: 8081
eureka:client:service-url:defaultZone: http://localhost:8761/eureka/

4.3 启动类添加注解

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication
@EnableDiscoveryClient
public class JavaQuestionServiceApplication {public static void main(String[] args) {SpringApplication.run(JavaQuestionServiceApplication.class, args);}
}

启动后,你可以在 Eureka Server 界面看到注册成功的服务。


5️⃣ 服务调用示例(Feign + Eureka)

5.1 添加依赖

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

5.2 创建 Feign 接口

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;@FeignClient(name = "javaquestion-service")
public interface JavaQuestionClient {@GetMapping("/javaquestion/list")String getQuestions();
}

5.3 使用 Feign 调用

@RestController
@RequestMapping("/api")
public class TestController {@Resourceprivate JavaQuestionClient javaQuestionClient;@GetMapping("/questions")public String getQuestions() {return javaQuestionClient.getQuestions();}
}

调用时无需关心服务实例的 IP 和端口,Eureka 会自动发现可用实例。


6️⃣ Eureka 集群部署

  • 多个 Eureka Server 互相注册,形成高可用集群
  • 配置示例(application.yml):
eureka:client:service-url:defaultZone: http://eureka1:8761/eureka/,http://eureka2:8761/eureka/

这样一个 Eureka Server 宕机,其他仍可提供服务注册和发现。


7️⃣ 总结

Eureka 作为微服务注册与发现组件,具有轻量、高可用、易集成的特点。
在 Spring Cloud 微服务中,它实现了:

  • 服务动态注册
  • 服务发现
  • 客户端负载均衡
  • 与 Feign 等组件无缝集成

通过 Eureka,你的微服务系统可以动态扩缩容,同时保证服务调用稳定可靠。

http://www.dtcms.com/a/357121.html

相关文章:

  • 音频转音频
  • 数据结构:快速排序 (Quick Sort)
  • 数据结构(C语言篇):(五)单链表算法题(上)
  • Linux笔记13——shell编程基础-7
  • More Effective C++ 条款16:牢记80-20准则(Remember the 80-20 Rule)
  • Java泛型使用常见报错
  • Stream API 讲解
  • 上传文件到本地
  • LeetCode Hot 100 第8天
  • 医疗 AI 的 “破圈” 时刻:辅助诊断、药物研发、慢病管理,哪些场景已落地见效?
  • 174. Java 注释 - 声明注释类型
  • 《AI智脉速递》2025 年 8 月22 日 - 29 日
  • VS2022+QT6.7+NetWork(TCP服务器多客户端助手)
  • Rust 登堂 之 深入Rust 类型(六)
  • 如何打造团队协作型 IP,而非单人依赖型?
  • BugKu Web渗透之file_get_contents
  • Kotlin中回调函数的使用示例
  • Git-Git和TortoiseGit的安装以及使用
  • 云渲染云推流助力WebGL应用网页端无负担推流,摆脱终端加载缓慢问题
  • 无恶意软件勒索:Storm-0501如何转向云原生攻击
  • Linux829 shell:expect interact “ “ set
  • 知识卡片html5动态网页源码
  • CRYPT32!CryptMsgUpdate函数分析之CRYPT32!PkiAsn1Decode函数的作用是得到pci
  • ros2--topic/话题--接口
  • tauri打包失败
  • 太阳光模拟器在卫星研发与测试中的应用
  • wav音频转C语言样点数组
  • 嵌入式Linux设备树驱动开发 - dtsof驱动
  • shell学习(二)
  • Sharding-JDBC 使用方法