Eureka是什么?它是如何工作的?

Eureka是Netflix开发的服务发现框架,现在是Spring Cloud生态系统的一部分。它主要用于AWS云平台,用来定位服务,以实现中间层服务器的负载均衡和故障转移。在微服务架构中,服务发现是关键的一环,它允许服务和服务彼此发现并通信,这样客户端就不需要硬编码目标服务的位置。

Eureka的主要组件:

Eureka由两个主要组件组成:Eureka Server和Eureka Client。

Eureka Server

Eureka Server充当服务注册中心。它是一个服务发现机制的核心,所有可用服务的实例都在此注册,并通过心跳机制保持注册信息是最新的。Eureka Server提供了一个REST API,可供服务实例注册或用户查询当前注册的服务列表。

要创建Eureka Server,你需要一个Spring Boot应用程序,并使用@EnableEurekaServer注解启用Eureka Server功能:

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

application.yml中配置Eureka Server:

java 复制代码
server:
  port: 8761
  
eureka:
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

上述配置启动了一个运行在端口8761上的Eureka Server,并通过设置registerWithEureka: false和fetchRegistry: false告诉它不要尝试将自己注册为客户端或尝试获取注册表。

Eureka Client

Eureka Client是一个Java客户端,用于简化与Eureka Server的交互。客户端服务在启动时向Eureka Server注册自身,并定期发送心跳来维持其在注册表中的状态。

要使应用成为Eureka Client,你需要在Spring Boot应用上添加@EnableEurekaClient或@EnableDiscoveryClient注解:

java 复制代码
@SpringBootApplication
@EnableEurekaClient
public class EurekaClientApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaClientApplication.class, args);
    }
}

工作原理:

服务注册:当Eureka Client启动时,它会向Eureka Server发送一个注册请求,将其自身的网络地址等信息注册到Eureka Server。

服务续约:Eureka Client定期向Eureka Server发送心跳(默认每30秒一次)来维持其在注册表中的状态。如果Eureka Server在一定时间内(默认90秒)没有接收到某个实例的心跳,它将注销该实例。

服务下线:当Eureka Client正常关闭时,它会向Eureka Server发送一个下线请求,告知Eureka Server自己将要下线。

获取注册的服务:Eureka Client可以从Eureka Server获取当前所有注册服务的信息列表,客户端内部会缓存这个信息列表,并周期性地更新。

服务副本:Eureka Server可以运行多个实例,它们之间相互复制注册信息,形成高可用集群。

通过Eureka的这些机制,Spring Cloud应用可以实现自动化的服务注册、发现和状态维护,这极大地简化了分布式系统中的网络通信和基础设施管理。

相关推荐
skywalk81631 小时前
MiniMax说的FreeBSD系统使用Kubernetes完整指南
云原生·容器·kubernetes·freebsd
cuber膜拜1 小时前
Docker的简单介绍
docker·容器·eureka
fanruitian2 小时前
k8s 部署 dashboard 面板
云原生·容器·kubernetes
lpfasd1232 小时前
gRPC 协议及其在 Nacos 微服务注册与配置中心中的应用
微服务·云原生·架构
天天进步20153 小时前
生产级部署:如何结合 Docker 快速上线你的 Botasaurus 爬虫服务
爬虫·云原生
南宫乘风3 小时前
Kubernetes 中如何避免僵尸进程:从原理到 tini 落地实践
云原生·容器·kubernetes
猿小羽4 小时前
Java 架构演进史:从咖啡杯到云原生霸主
java·云原生·架构
牛奶咖啡134 小时前
Prometheus+Grafana构建云原生分布式监控系统(七)
云原生·grafana·prometheus·hadoop集群的安装·hadoop集群的监控·prometheus自动发现·hadoop数据可视化
铭keny1 天前
华为欧拉系统(openEuler)安装 Docker 容器完整教程
云原生·eureka
StevenZeng学堂1 天前
一文读懂K8S的PV和PVC以及实践攻略
运维·docker·云原生·容器·kubernetes·云计算·go