【Eureka详细讲解】

Eureka介绍和使用

  • [1. Eureka 介绍](#1. Eureka 介绍)
  • [2. Eureka 的主要特点](#2. Eureka 的主要特点)
  • [3. 使用](#3. 使用)
    • [3.1 设置 Eureka Server](#3.1 设置 Eureka Server)
    • [3.2 设置 Eureka Client](#3.2 设置 Eureka Client)
    • [3.3 Eureka Server 高可用配置](#3.3 Eureka Server 高可用配置)

1. Eureka 介绍

Eureka 是由 Netflix 开源的一种服务发现解决方案,它是 Netflix OSS 套件中的一个组件,经常用在微服务架构中。核心作用是服务注册与发现。

当微服务启动时,会把它的网络地址(如 IP 和端口)注册到 Eureka 服务器上,这台服务器被称作 Eureka Server(服务注册中心),其他服务(客户端)启动时,会从 Eureka Server 获取运行中的服务列表,这样服务之间就可以互相调用了。

Eureka 包含两个组件:

  • Eureka Server:服务注册功能的提供方,它提供了界面显示当前注册的服务信息。
  • Eureka Client:服务消费者和提供者,服务启动时,客户端将该服务的信息注册到 Eureka Server 中,服务消费者可以通过 Eureka Server 来发现服务提供者。

2. Eureka 的主要特点

  • AP 系统:根据CAP理论,Eureka是一个典型的AP(可用性、分区容错性)系统,它保证了高可用和分区容错性,但不保证一致性(在某个时间点,可能部分实例信息不同步)。
  • 自我保护模式:为应对网络异常情况,Eureka Server 在运行时可以进入自我保护模式,这时即使没有收到某些微服务的心跳,也不会立即从服务列表中移除该实例。
  • 基于REST的服务间通信:Eureka Server 提供 REST API,方便各种语言编写的服务进行通信。

3. 使用

3.1 设置 Eureka Server

  1. 添加依赖 :使用Spring Boot的话,添加spring-cloud-starter-netflix-eureka-server依赖到你的build.gradle或者pom.xml中。
xml 复制代码
<!-- pom.xml 中的依赖-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
  1. 启用 Eureka Server :在 Spring Boot 应用的启动类上添加@EnableEurekaServer注解。
java 复制代码
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}
  1. 配置应用属性 :在application.properties或application.yml配置文件中设置 Eureka Server 相关的配置。
yaml 复制代码
# application.yml
server:
  port: 8761

eureka:
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

3.2 设置 Eureka Client

  1. 添加依赖 :在客户端服务的build.gradle或pom.xml中添加spring-cloud-starter-netflix-eureka-client依赖。
xml 复制代码
<!-- pom.xml 中的依赖 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
  1. 启用 Eureka Client :在 Spring Boot 应用的启动类上添加@EnableEurekaClient或@EnableDiscoveryClient注解。
java 复制代码
@SpringBootApplication
@EnableEurekaClient // 或 @EnableDiscoveryClient
public class EurekaClientApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaClientApplication.class, args);
    }
}
  1. 配置应用属性 :在application.properties或application.yml中配置 Eureka Client 相关的配置,例如注册到 Eureka Server 的地址。
yaml 复制代码
# application.yml
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

3.3 Eureka Server 高可用配置

在生产环境中,Eureka Server 通常会配置成高可用集群。基本步骤是搭建多个 Eureka Server 实例,它们相互注册为服务(即相互作为客户端)。这样可以保证其中一个实例宕掉时,其他实例可以继续提供服务注册和发现的功能。

以上是搭建和使用 Eureka Server与Client的基本概念和步骤。详细的配置和使用方式可能会根据项目的具体需求有所调整。

相关推荐
知已难寻28 分钟前
第 2 篇 · 云的地基:服务器、存储、网络三大基础设施
运维·服务器·网络·云原生·云计算·负载均衡·1024程序员节
阿里云云原生5 小时前
车企数据隐私保护必修课:如何用 SLS mask 守住日志中的敏感信息
云原生
阿里云云原生5 小时前
切换模型会损失缓存,智能路由还省钱吗?
云原生
闲云野鹤在人间5 小时前
Kubernetes Service 与 kube-proxy 详解
云原生·容器·kubernetes
我不会起名字3226 小时前
节点 NotReady:kubelet 与容器运行时的 4 步排查
云原生·kubernetes·kubelet·排查
分布式存储与RustFS7 小时前
GPU 在空转等数据?PyTorch 训练集进 RustFS 的三种接法
云原生·开源·对象存储·分布式存储·s3·rustfs·性能基准
时间售卖铺10 小时前
MySQL 备份
运维·数据库·mysql·云原生
对象存储与RustFS11 小时前
GPU 在空转等数据?PyTorch 训练集进 RustFS 的三种接法
后端·docker·云原生
KIDULT°14 小时前
K8s 网络进阶实战:Ingress-Nginx、Calico 与 NetworkPolicy 实验 + 排坑记录
网络·nginx·云原生·kubernetes
孔令飞1 天前
知己知彼,百战不殆:AI SKILL 实现原理剖析
云原生·go·ai编程