Eureka Server
Eureka Server是Netflix提供的基于Rest的服务注册和发现框架,Spring Cloud对其进行了集成。使用Eureka Server需要添加spring-cloud-starter-netflix-eureka-server
依赖。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
然后在配置类(通常是启动类)上添加@EnableEurekaServer
。
@SpringBootApplication
@EnableEurekaServer
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
这样Eureka Server默认就启动了。默认使用的Web容器是Tomcat,监听端口号是8080,可以通过server.port=8081
来改变监听的端口号。Eureka Server的配置参数是类似eureka.server.*
的形式,可配置的参数可以参考org.springframework.cloud.netflix.eureka.server.EurekaServerConfigBean
中定义的属性,该Class是一个@ConfigurationProperties
,对应的prefix就是eureka.server
,但是官方一般不建议我们去修改这些参数。Eureka Server内部也包含了Eureka Client,当多个Eureka Server之间需要进行通信时,它就充当Eureka Client的角色。所以Eureka Client的配置参数也是适用于Eureka Server的,详细的Eureka Client的配置参数将在介绍Eureka Client一文进行介绍。对于单机环境而言,Eureka Server是不需要连接其它Eureka Server的,此时可以通过eureka.client.registerWithEureka=false
关闭注册服务功能,通过eureka.client.fetchRegistry=false
关闭从Eureka Server获取注册信息功能,否则自带的Eureka Client默认会访问http://localhost:8761/eureka/
以进行服务注册或获取注册信息。所以单机环境下通常也会把eureka.client.serviceUrl
的值指定为http://localhost:${server.port}/eureka/
,其中${server.port}
为当前Eureka Server运行的端口号。
server.port: 8761
eureka:
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://localhost:${server.port}/eureka/
instance:
preferIpAddress: true
指定
eureka.instance.preferIpAddress=true
可以让Eureka在需要获取hostname时都改为获取当前机器的IP地址。
通过运行上面的Application.java启动了Eureka Server后就可以通过Eureka Server的IP和端口号访问Eureka Server的控制台查看上面注册的服务了,比如对于上面的配置可以在本机访问http://localhost:8761
,然后可以看到类似如下这样的界面。
Eureka Client在从Eureka Server获取到了服务的注册信息后会将其缓存在本地,Eureka Client的服务调用方在调用Eureka Client服务提供方时是不会经过Eureka Server的,而是直接调用Eureka Client的服务提供方,对应的服务提供方的信息来自于Eureka Server。Eureka Server只有单机器时,如果Eureka Server挂了,此时Eureka Client将能够继续运行,只是Eureka Client的信息不能从Eureka Server得到更新了,它不能发现新的服务了,也不能及时发现哪个服务提供方的服务已经不可用了。Eureka Server也支持高可用,即Eureka Server也可以部署多台。当Eureka Server拥有多台时需要它们之间是相互连通的,连通方式是彼此之间指定eureka.client.serviceUrl.defaultZone
为相互连通即可。比如现在有A、B、C三台Eureka Server,可以指定A的eureka.client.serviceUrl.defaultZone
为B机器,指定B机器的eureka.client.serviceUrl.defaultZone
为C机器,指定C机器的eureka.client.serviceUrl.defaultZone
为A或者B,这样A、B、C三台Eureka Server之间就建立起了联系,彼此之间相互成为副本,会互相同步注册的服务信息,比如有服务S1、S2、S3分别在A、B、C三台机器上进行了注册,那么A、B、C三台Eureka Server上将同时拥有S1、S2、S3的注册信息,服务调用方无论从A、B、C的哪台机器上都可以获取到S1、S2、S3的信息。
来看一个配置示例。假如下面的配置是Eureka Server1的,其监听端口是8081,配置的eureka.client.serviceUrl.defaultZone
是监听在8082端口的本地Eureka Server2的。
server.port: 8081
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8082/eureka/
instance:
preferIpAddress: true
instanceId: ${spring.cloud.client.ip-address}:${server.port}
eureka.instance.instanceId
是用来指定实例ID的,${spring.cloud.client.ip-address}
是内置的占位符,表示当前机器的IP地址。
Eureka Server2的配置信息如下,其监听端口是8082,配置的eureka.client.serviceUrl.defaultZone
是Eureka Server1。
server.port: 8082
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8081/eureka/
instance:
preferIpAddress: true
instanceId: ${spring.cloud.client.ip-address}:${server.port}
Eureka Server3的配置信息如下,其监听端口是8083,配置的eureka.client.serviceUrl.defaultZone
也是Eureka Server1。
server.port: 8083
eureka:
client:
serviceUrl:
defaultZone: http://localhost1:8081/eureka/
instance:
preferIpAddress: true
instanceId: ${spring.cloud.client.ip-address}:${server.port}
这样Eureka Server3和Eureka Server2都跟Eureka Server1通信,彼此之间建立起了连接。现有一个Eureka Client作为服务提供方,提供spring-cloud-service-provider
服务,其配置如下,从配置中可以看到它指定的Eureka Server是Eureka Server群集中的所有实例,此时Eureka Client将向群集中一个可用的Eureka Server注册它自己,一旦在一个Eureka Server注册成功后,Eureka Server之间会自动同步注册的服务信息,即群集中的每一个Eureka Server都将拥有spring-cloud-service-provider
服务信息。
spring.application.name=spring-cloud-service-provider
server.port=8900
eureka.client.serviceUrl.defaultZone=http://localhost:8081/eureka/,http://localhost:8082/eureka/,http://localhost:8083/eureka/
eureka.instance.preferIpAddress=true
eureka.instance.instanceId=${spring.cloud.client.ip-address}:${server.port}
有一个Eureka Client作为服务调用方,其配置如下。其指定了Eureka Server为 Eureka Server群集中的所有的实例,它需要使用spring-cloud-service-provider
服务,然后它会向其中一个可用的Eureka Server寻求spring-cloud-service-provider
服务的信息,群集中指定的多个Eureka Server只要有一个是正常的,Eureka Client就能正常与Eureka Server进行通信。
eureka.client.registerWithEureka=false
eureka.client.serviceUrl.defaultZone=http://localhost:8081/eureka/,http://localhost:8082/eureka/,http://localhost:8083/eureka/
上面配置的应用之间的关系如下图所示:
有兴趣的朋友可以基于上述的配置搭建自己完整的测试代码进行验证。
(注:本文是基于Spring cloud Finchley.SR1所写)
相关推荐
在本教程中,我们将深入探讨SpringCloud的核心组件之一——Eureka,它是一个服务注册与发现的工具,使得微服务架构中的各个服务能够互相找到并进行通信。我们将通过两个主要步骤来学习如何使用Eureka:创建服务注册...
SpringCloud是中国开发者广泛使用的微服务框架之一,其中Eureka是其核心组件,主要负责服务的注册与发现。本文将深入探讨Eureka的工作原理、配置以及如何在实际项目中使用它来构建服务注册中心和实现服务提供者的...
在Spring Cloud项目中,pom.xml会包含Spring Cloud的父POM,以及Eureka Server、服务提供者和服务消费者所需的依赖,如`spring-cloud-starter-netflix-eureka-client`、`spring-cloud-starter-netflix-eureka-server...
在这个案例中,我们专注于SpringCloud的核心组件之一——Eureka,它是服务发现的重要工具。服务发现允许微服务之间找到并互相通信,使得系统具有更好的可扩展性和解耦性。 Eureka是Netflix开发的一个基于REST的服务...
在本实例中,我们主要探讨的是Spring Cloud框架中的几个关键组件——Zuul、Config、Eureka和Ribbon,这些都是微服务架构中的重要工具。让我们逐一解析这些组件及其作用。 首先,Spring Cloud Config是一个集中式的...
在本文中,我们将深入探讨Spring Cloud Eureka,一个在分布式系统中用于服务发现的重要组件。我们将基于提供的"Spring Cloud Eureka服务注册DEMO"来理解其核心概念,并探索如何通过三个Spring Boot应用——服务注册...
在本篇中,我们将深入探讨其中的核心组件——Eureka。 Eureka是SpringCloud生态中的服务注册与发现组件,其主要功能是维护服务实例的注册表,使得服务消费者可以方便地找到服务提供者,同时也支持服务的健康检查和...
**SpringCloud案例(集成了Eureka、Ribbon、Feign)** 在分布式系统中,Spring Cloud作为一套微服务解决方案,提供了丰富的组件来帮助开发者构建可扩展的云原生应用。本案例聚焦于Spring Cloud的核心组件——Eureka、...
接着,会介绍Spring Cloud的核心组件——Eureka,它是服务注册与发现的实现,让服务提供者和服务消费者能够自动发现彼此。通过实例,读者可以学习到如何创建和注册服务,以及如何实现服务调用。 Spring Cloud ...
Spring Cloud提供了一种优雅的解决方案——Eureka,一个基于REST的服务注册与发现框架。本教程将深入探讨如何使用Eureka来构建一个微服务系统。 首先,我们来看**Eureka Server**。Eureka Server是Eureka的核心组件...
《SpringCloud整合Eureka源码解析——单机版》 在微服务架构中,服务发现是至关重要的一个环节,Spring Cloud Eureka就是这样一个强大的服务注册与发现组件。本文将深入探讨如何将Eureka与Spring Boot整合,搭建一...
3. **服务发现——Eureka** Eureka是SpringCloud中的服务注册与发现组件。服务启动后会在Eureka Server上注册,其他服务可以通过Eureka查找并调用这些服务。Eureka通过心跳机制监控服务状态,当服务异常时,能及时...
在本教程中,我们将深入探讨Spring Cloud的核心组件之一——Eureka,它是微服务架构中的服务发现工具。Eureka是Netflix开发的一个组件,主要用于实现服务的注册与发现,它使得服务提供者可以将自己的服务注册到...
首先,我们需要了解Spring Cloud的核心组件之一——Eureka。Eureka是一个基于REST的服务,用于服务注册与发现。在Spring Cloud应用中,每个服务实例都会向Eureka Server注册自身的信息,包括服务名、IP地址、端口等...
再来看智能路由——Zuul或Spring Cloud Gateway。这两个组件作为微服务的统一入口,可以对请求进行过滤和转发,实现动态路由、熔断、限流等功能。比如,Zuul通过定义过滤器实现认证、日志记录等,而Spring Cloud ...
本资源“springcloud知识点脑图demo全家桶菜鸟入门”显然是为了帮助初学者掌握Spring Cloud的基础知识和实践应用。这里我们将深入探讨其中提到的关键组件——Eureka、OpenFeign、Redis以及Nacos。 首先,Eureka是...
在本篇“Spring Cloud学习文档”中,我们将聚焦于服务治理的核心组件——Spring Cloud Eureka。 **服务治理**是微服务架构中至关重要的一环,主要包含两个关键部分:服务注册和服务发现。 **1. 服务注册**: 服务...
总结,本压缩包“SpringCloud基础入门代码”涵盖了Spring Cloud的核心组件——Eureka服务注册与发现,以及服务提供者和消费者的基本实现,包括Template和Feign两种调用方式。对于初学者来说,这是一个很好的起点,...
`EureKaserver`项目可能是实现Eureka Server的代码,它确保服务之间的通信能够找到正确的目标。 `SpringCloud-Consumer`和`SpringCloud-Service`项目分别代表了服务消费者和服务提供者。在微服务架构中,消费者通过...
《疯狂springCloud实战架构》是针对企业级分布式应用开发的一款强大框架——Spring Cloud的深度解析与实战指南。Spring Cloud作为微服务生态中的重要组件,它为开发者提供了在分布式系统(如配置管理、服务发现、...