“Eureka ”来源于古希腊词汇,意为“发现了”。在软件领域, Eureka 是Netflix 在线影片公司开源 个服务 与发现的组件,和其他 Netflix 公司的服务组件(例如 负载均衡、熔断器、网关等) 起,被 Spring Cloud 社区整合为 Spring Cloud Netflix 模块。
Eureka 分为 Eureka Server Eureka Client, Eureka Server为Eureka 服务注册中心, Eureka Client 为Eureka 客户端。
Eureka的基本结构包括3中角色。
1、Register Service:服务注册中心,作为Eureka Server 提供服务注册和发现的功能;
2、Provider Servcie: 服务提供者,作为Eureka Client 提供服务;
3、Consumer Service: 服务消费正,作为Eureka Client消费服务;
本例工程结构说明,本例采用 Maven Module 的结构:
spring-cloud-learn
--| eureka-client
--|--| src/main/java
--|--| src/main/resources
--|--|--| application.yml
--|--| pom.xml
--| eureka-server
--|--| src/main/java
--|--| src/main/resources
--|--|--| application.yml
--|--| pom.xml
--| pom.xml
版本说明:
Spring Boot-2.1.0.RELEASE
Spring Cloud-Greenwich.SR6
一、主Maven的pom.xml配置
4.0.0
com.mahaochen.learn.cloud
spring-cloud-learn
0.0.1-SNAPSHOT
pom
spring-cloud-learn
Spring Cloud 学习总结
org.springframework.boot
spring-boot-starter-parent
2.1.0.RELEASE
1.8
UTF-8
UTF-8
Greenwich.SR6
org.springframework.boot
spring-boot-starter-test
test
org.springframework.cloud
spring-cloud-dependencies
${spring-cloud.version}
pom
import
eureka-client
eureka-server
org.springframework.boot
spring-boot-maven-plugin
org.apache.maven.plugins
maven-resources-plugin
false
$[*]
UTF-8
二、编写Eureka Server
2.1 配置pom.xml
4.0.0
com.mahaochen.learn.cloud
spring-cloud-learn
0.0.1-SNAPSHOT
com.mahaochen.learn.cloud.eureka.server
eureka-server
eureka-server
jar
UTF-8
org.springframework.cloud
spring-cloud-starter-netflix-eureka-server
junit
junit
test
2.2 配置application.yml
server:
port: 8761
eureka:
instance:
hostname: localhost
client:
register-with-eureka: false
fetch-registry: false
service-url:
default-zone: http://${eureka.instance.hostname}:{server.port}/eureka
注:
1、server.prot
#服务器端口号
2、eureka.instance.hostname
#eureka实例主机名
3、eureka.client.register-with-eureka
# 默认情况下,eureka server同时也是eureka client,用于相互注册形成高可用eureka服务。
# 单点时,如果registerWithEureka配置为true,则eureka server会报错Cannot execute request on any known server
# 是否注册到eureka服务,默认为true,当前已为eureka server,且单点eureka,故配置为false
4、eureka.client.fetch-registry
# 是否在本地缓存注册表信息,默认为true,当前为单点eureka server,不需要从其他eureka除获取注册表信息,更谈不上缓存,故配置为false
2.3 编写SpringCloudEurekaServerApplication
@SpringBootApplication
@EnableEurekaServer
public class SpringCloudEurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(SpringCloudEurekaServerApplication.class, args);
}
}
三、编写Eureka Client
3.1 配置pom.xml
4.0.0
com.mahaochen.learn.cloud
spring-cloud-learn
0.0.1-SNAPSHOT
com.mahaochen.learn.cloud.eureka.client
eureka-client
eureka-client
jar
UTF-8
org.springframework.cloud
spring-cloud-starter-netflix-eureka-client
org.springframework.boot
spring-boot-starter-web
junit
junit
test
3.2 配置application.yml
eureka:
client:
service-url:
default-zone: http://localhost:8761/eureka
server:
port: 8762
spring:
application:
name: eureka-client
注:
1、server.prot
#服务器端口号
2、spring.application.name
#应用程序名称
3.3 编写SpringCloudEurekaClientApplication
@SpringBootApplication
@EnableEurekaClient
public class SpringCloudEurekaClientApplication {
public static void main(String[] args) {
SpringApplication.run(SpringCloudEurekaClientApplication.class, args);
}
}
四、测试服务
依次运行eureka-server、eureka-client,通过浏览器访问http://localhost:8761
Instances currently registered with Eureka 下的 EUREKA-CLIENT 为注册至Eureka Server的实体。