Spring Cloud的服务注册和发现Eureka

Eureka和Consul、zookeeper类似,Eureka是一个用于服务注册和发现的组件,Eureka分为Eureka Server和Eureka Client,Eureka Server为服务注册中心,Eureka Client为服务客户端。

Eureka基本架构

Eureka主要包括三种角色:

1、Register Service:服务注册中心,它是一个Eureka Server,提供服务注册和发现的功能。

2、Provider Service:服务提供者,它是一个Eureka Client,提供服务。

3、Consumer Service:服务消费者,它是一个Eureka Client,消费服务。

服务消费的基本过程如下:首先需要一个Eureka Service服务注册中心,服务提供者Eureka Client向注册中心Eureka Server注册,将自己的信息,比如服务名、ip地址、端口号等等,通过Restful api的形式提交给服务注册中心Eureka Server。同样,服务消费者Eureka Client也向服务注册中心Eureka Server注册,同时服务消费者获取一份服务注册列表的信息,该列表包含了所有向注册中心Eureka Server注册的服务信息。获取服务注册列表信息之后,服务消费者就知道服务提供者的IP地址,可以通过Http远程调度来消费服务提供者的服务。

spring boot作为spring cloud的基础,为解决微服务提供了一套解决方案,包括服务注册与发现、负载均衡、熔断器,熔断器监控、熔断器聚合、网关Zuul,智能路由等等。

spring boot主要依赖的maven jar包有spring-boot-starter-parent,spring cloud则主要依赖spring-cloud-denpendencies。

Eureka server注册中心,主要依赖spring-cloud-starter-eureka-server,在默认情况下,eureka server会向自己注册,所以这时候需要设置eureka.client.registerWithEureka和eureka.client.fetchRegistry为false,防止自己注册自己。

Eureka Client向注册中心Eureka Server注册,client主要依赖spring-boot-starter-parent,spring-cloud-starter-eureka,以及引入web依赖spring-boot-starter-web,还有测试依赖spring-boot-starter-test。

下面是eureka-client的application.yml配置,defaultZone是Eureka Server的注册地址,defaultZone为默认的zone,来源于AWS的概念。

eureka:

  client:

     serviceUrl:

       defaultZone: http://localhost:6781/eureka/

 server:

   port:8762

spring:

  application:

     name: eureka-client

这里在eureka-client的application启动类上,要加上注解@EnableEurekaClient,用来开启Eureka Client功能。

Eureka的一些概念:

1、Register-服务注册

当Eureka client向Eureka server注册时,client提供自身的元数据,比如ip地址,端口号,服务名等等。这里客户端是调用在DiscoveryClient类的一个服务注册方法register(),通过http请求向Eureka Server注册。

2、Renew-服务续约

Eureka client默认会每隔30秒发送一次心跳来进行服务续约,通过服务续约来告知server该client仍然可用,没有出现故障。eureka server在90秒内没有收到eureka client的心跳,eureka server会将eureka client实例从注册表中剔除。

3、Fetch Registries-获取服务注册列表信息

Eureka client从Eureka server获取服务注册列表信息,并缓存在本地。Eureka client会使用服务注册列表去查找其他服务信息,从而进行远程调用。该注册列表每隔30秒会更新一次。Eureka client 和 Eureka server之间可以使用json、xml进行通信。默认情况下,Eureka client使用json格式的方式获取服务注册列表信息。

4、Cancle-服务下线

Eureka client在程序关闭时可以向Eureka server发送下线请求,该客户端的实例从server的注册列表中删除。该下线请求不会自动完成,需要在程序关闭时调用以下代码:

DiscoveryManager.getInstance().shutdownComponent();

5、Eviction-服务剔除

在默认情况下,Eureka client 连续90秒内没有向Eureka server发送服务续约(心跳)时,Eureka server会将该服务实例从服务注册列表删除,即服务剔除。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值