SpringCloudEureka服务发现的集成、配置和部署(2):Eureka客户端——服务提供者

前言

上一篇:SpringCloudEureka服务发现的集成、配置和部署(1):Eureka服务端

Eureka客户端分别承担了两种不同的角色:“服务者”和“消费者”。“服务者”通过Eureka服务端进行注册登记,拥有自己固定的服务名称,以代替ip地址;而“消费者”可以通过服务名称来从服务者那里获取数据服务。

当服务者的ip地址发生了变化,对于消费者来说是无感的。消费者不必重新修改服务者的ip地址,继续使用原来的服务名,依然能够与服务者保持联系。

当然了,一个Eureka客户端即可以是服务者,也可以同时是消费者。

依赖

Eureka客户端的依赖,即可以使用独立的client依赖,也可以直接使用server依赖。两者的使用效果是一样的。唯一的区别就是server依赖所包含的资源包更多:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>               
    <version>2.2.3.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>               
    <version>2.2.3.RELEASE</version>
</dependency>

Eureka客户端配置

在Eureka客户端的配置项当中,首先需要指明的就是服务端所在的地址:

eureka.client.serviceUrl.defaultZone=http://127.0.0.1:6080/freezingSpringBootEurekaServer/eureka

此处这条配置项与服务端的配置项十分相似,我们可以来看一下服务端的配置项如下:

eureka.client.serviceUrl.defaultZone=http://127.0.0.1:6080/freezingSpringBootEurekaServer

两相比较,可以看出,客户端的配置项仅仅是比服务端在末尾多出了一个“/eureka”,但这确非常重要。

事实上,两者都确认了Eureka服务端所在的网络服务范围,但由于客户端在启动之后,需要向服务端发送各种请求,以便获取相关的资源,因此,必须在服务端所在的地址后加上一个请求上下文“/eureka”,而这一请求上下文是固定不变的,始终都是“/eureka”。

我们可以通过已经完成配置的客户端和服务端来做一下验证。使用的工具是postman。

在这项关于服务端上下文的验证中,服务端的ip地址、所在的端口、web上下文及请求上下文分别如下:

ip地址:127.0.0.1

服务端口:6080

web上下文:freezingSpringBootEurekaServer

请求上下文:eureka

通过下图可以看到整个完整的请求地址。该地址是Eureka服务端自身所提供的一个接口,用于获取某一个注册过的客户端的基本描述信息:

下一项配置允许客户端向服务端进行注册,并且能够查找相关的注册过的客户端信息:

eureka.client.registerWithEureka=true
eureka.client.fetchRegistry=true

然后,我们需要为当前的客户端设置一个服务名。通过服务名,我们就能够实现在不需要指明ip地址的情况下去调用其它客户端所提供的服务:

spring.application.name=eurekaServiceProvider1

下一组配置与Eureka心跳有关,并不是必须选项,如果不设置的话,Eureka会采用默认配置:

#心跳间隔时间。单位为秒。默认为30秒
eureka.instance.leaseRenewalIntervalInSeconds=30
#当最后一次心跳后,经过多少时间没有响应,就认为下线。单位为秒,默认为90秒。
eureka.instance.leaseExpirationDurationInSeconds=90
# 设置服务消费者从注册中心拉取服务列表的间隔
eureka.client.registryFetchIntervalSeconds=30

所以,Eureka客户端的整体配置看起来像是这样的:

#Eureka客户端配置
eureka.client.serviceUrl.defaultZone=http://127.0.0.1:6080/freezingSpringBootEurekaServer/eureka
eureka.client.registerWithEureka=true
eureka.client.fetchRegistry=true
spring.application.name=eurekaServiceProvider1
#心跳间隔时间。单位为秒。默认为30秒
eureka.instance.leaseRenewalIntervalInSeconds=30
#当最后一次心跳后,经过多少时间没有响应,就认为下线。单位为秒,默认为90秒。
eureka.instance.leaseExpirationDurationInSeconds=90
# 设置服务消费者从注册中心拉取服务列表的间隔
eureka.client.registryFetchIntervalSeconds=30

至此,客户端的配置基本完成了。在没有任何代码的情况下,已经可以通过服务端完成注册,并向其它应用提供接口服务了。

好吧,前提是您的接口代码已经编写并测试完成了。一个没有任何接口的Eureka客户端没有实际的意义...

为了观察和测试的方便,与之前一样,我们单独采用一个Tomcat,修改其端口,用以部署Eureka客户端服务者。与服务端一样,我们必须要留意部署之后的端口号、web上下文等。

首先是启动 Eureka服务端:

顺利启动之后,我们稍稍观察片刻,会看到服务端每隔一定的间隔会刷新输出信息:

然后我们自动Eureka客户端:

在上面的截图中,为了能够进行比较,我同时打开了服务端和客户端的Tomcat输出信息。上半部分是服务端的,而下班部分是客户端的,可以明显的看到,在客户端成功启动的一瞬间,服务端抛出了一条信息,显示一个Erueka客户端注册上线:

而此时,如果打开Eureka服务端的面板,就能够看到已经注册成功的客户端,并显示它的服务名:

至此,Erueka客户端作为服务提供者已经做好了准备。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值