Spring Cloud - 服务注册与发现

313 阅读2分钟

Spring Cloud Eureka

Spring Cloud Eureka是Spring Cloud Netflix项目下的服务治理模块,Spring Cloud Netfilx是Spring Cloud的一个子项目,它为Spring Boot应用提供了自配置的Netfilx 。通过简单的注解,开发者可以在快速在应用中配置一些常用模块并构建庞大的分布式系统。

创建eureka-server和eureka-client

创建两个model工程, 一个作为服务注册中心 - eureka-setver,一个作为服务提供方 - eureka-client

  • 使用IDEA创建model工程

启动服务注册中心

将一个SpringBoot工程注册为服务注册中心只需要完成以下两步操作:

  1. 在application类添加@EnableEurekaServer注解
  2. 编写eureka-server服务注册中心端配置文件:
# Spring Boot 应用名称
spring.application.name=eureka-server
# Spring Boot应用启动端口
server.port=1000
# 服务注册中心的主机名
eureka.instance.hostname=localhost
# 默认情况下eureka-server】也是一个eureka-client,通过指定以下两个配置值为false 表明此应用是一个eureka-server 服务注册中心,而不是eureka-client
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
# 服务注册中心的url,提供给eureka-client注册服务使用
eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/

创建一个服务提供者

eureka-client向eureka-server注册时,会提供一些元数据,例如主机和端口,URL等信息。eureka-client与eureka-server之间的联系通过心跳完成,client注册之后,会向server发送心跳,server从每一个client接受心跳,如果心跳超时,server会将该client从注册中删除。

  • client的创建过程与server一样 将一个SpringBoot应用注册为eureka-client同样只需要以下两部操作:
  1. 在application类添加@EnableEurekaClient注解
  2. 编写client配置文件:
# Spring Boot应用名称,此名字很重要,在注册中心中就是以这个名称代表此服务
spring.application.name=eureka-client
# Spring Boot应用的启动端口 
server.port=1001
# 指定注册中心的url,保持与server端的配置一致
eureka.client.service-url.defaultZone=http://localhost:1000/eureka/

分别启动eureka-server和eureka-client。浏览器访问localhost:1000可以观察到eureka-client已经注册到eureka-server中: