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应用可以实现自动化的服务注册、发现和状态维护,这极大地简化了分布式系统中的网络通信和基础设施管理。

相关推荐
东风微鸣7 小时前
TTRSS 迁移实战
docker·云原生·kubernetes·可观察性
Smile_Gently8 小时前
Docker
云原生·eureka
转身後 默落8 小时前
04.Docker 镜像命令
docker·容器·eureka
三天不学习9 小时前
如何在 Ubuntu 上安装 Docker:详细步骤指南
ubuntu·docker·eureka
黄名富9 小时前
Spring Cloud — 深入了解Eureka、Ribbon及Feign
分布式·spring·spring cloud·微服务·eureka·ribbon
Diligent_lvan9 小时前
聊聊istio服务网格
云原生·istio
企鹅侠客9 小时前
kube-proxy怎么修改ipvs规则?
云原生·kubernetes·kubelet
仇辉攻防10 小时前
【云安全】云原生- K8S 污点横移
web安全·网络安全·云原生·容器·kubernetes·k8s·安全威胁分析
望获linux12 小时前
如何在望获实时 Linux & 京博航友善 NanoPC-T6 上部署 Docker
linux·运维·服务器·docker·eureka·开源软件
ITPUB-微风15 小时前
云原生监控体系建设:Kubernetes架构下的全面监控策略
云原生·架构·kubernetes