Eureka 是 Netflix 开发的一款基于 REST 的服务注册与发现组件,广泛应用于基于 Spring Cloud 构建的微服务架构中。作为服务治理的核心组件之一,Eureka 负责维护服务注册表,使得各个分布式服务能够相互发现并进行通信。
Eureka Server 是 Eureka 提供的服务端,主要负责服务注册与发现的功能。它可以部署为单节点或多节点集群,以实现高可用性和容错性。
主要职责:
Service Provider 是指提供服务的应用,通常基于 Spring Boot 或遵循 Eureka 通信协议的其他技术平台构建。它们将自己的服务注册到 Eureka Server,使得其他服务能够发现并调用这些服务。
关键行为:
Service Consumer 是依赖于服务提供者的服务或应用。它们通过 Eureka Server 查询所需服务的可用实例,并基于获取的信息进行动态服务调用。
关键操作:
eureka.client.register-with-eureka: 是否将当前Eureka Server作为客户端注册到其他Eureka Server上(通常设置为false,因为Eureka Server通常不需互相注册)。eureka.client.fetch-registry: 是否从其他Eureka Server拉取服务注册表信息(同样通常设为false,除非构建多区域服务发现架构)。eureka.server.enable-self-preservation: 是否开启自我保护模式,防止因网络波动导致的正常服务实例被误剔除。eureka.server.eviction-interval-timer-in-ms: 清理无效服务实例的时间间隔。eureka.instance.hostname: 服务实例的主机名。eureka.instance.appname: 服务应用名称。eureka.instance.instance-id: 服务实例唯一标识,通常结合主机名、端口等信息生成。eureka.instance.prefer-ip-address: 是否优先使用IP地址而非主机名进行注册。eureka.client.service-url.defaultZone: 指定Eureka Server的注册地址,用于服务提供者和服务消费者连接。eureka.instance.*相同,用于定义服务实例的元数据。eureka.client.service-url.defaultZone: 指定Eureka Server的注册地址,用于服务提供者注册自身服务。eureka.client.service-url.defaultZone指向Eureka Server。Eureka作为Spring Cloud生态系统中的服务注册与发现组件,为构建高可用、可伸缩的微服务架构提供了基础服务治理能力。通过合理配置Eureka Server、Service Provider与Service Consumer,可以实现服务的自动注册、发现、负载均衡以及故障隔离,简化微服务间的交互复杂性。随着技术发展,虽然出现了Consul、ZooKeeper等替代方案,但Eureka因其简单易用和与Spring Cloud的良好集成,仍被许多项目广泛采用。在实际使用中,应结合项目需求和团队熟悉度,选择最适合的服务发现解决方案。