购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.4 服务发现

2.4.1 什么是服务发现

Eureka是netflix用于服务注册和发现的框架。在这个框架中,分为server和client两种角色。server负责保存服务的注册信息,同时server之间也可以彼此相互注册,client则需要向特定的server进行注册,如图 2.9 所示。

图 2.9

如图 2.9 所示,Eureka采用了客户端的模式,服务首先需要向注册中心注册,调用方则需要在本地维护一个服务注册列表。

具体的操作为:client/server通过RESTful Api向server进行服务注册,并且定期调用renew接口来更新服务的注册状态,若server在 60s内没有收到服务的renew信息,则该服务就会被标志为下线。而如果服务需要主动下线的话,向server调用cancel就可以了。Eureka同时支持多个注册中心,以保证注册中心的高可用性。

服务注册完成之后,当client需要进行服务调用的时候,就可以向server获取当前的服务列表,再根据服务列表中的ip地址以及端口号进行调用。

2.4.2 创建服务消费者

选择工程【cloud_maven】,右击点击“Module”按钮,创建服务提供者模块并命名为【cloud_orders】,如图2.10所示。

图 2.10

在当前【cloud_orders】工程配置pom.xml文件的坐标信息,配置代码如下所示。

如上述,pom文件中坐标描述如下所示:

●spring-boot-starter-web web组件核心坐标

●spring-boot-starter-actuator监控核心坐标

●lombok自动生成get set 方法坐标

●spring-boot-starter-test springboot测试核心坐标

●junit test测试坐标

配置application.yaml文件:

配置上消费者工程的端口号,代码如下所示。

创建启动类:

RestTemplate:

提供了多种便捷访问远程的Http服务的方法,是一种简单的restful服务模块类,Spring访问Rest服务的客户端模块工具集。在包com.cloud.maven.config下载创建ApplicationContextConfig配置类,代码如下所示。

SpringRestTemplate 介绍:

spring 提供的同步请求Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。

是Spring用于同步client端的核心类,简化了与http服务的通信,并满足RestFul原则,程序代码可以给它提供URL,并提取结果。默认情况下,RestTemplate默认依赖jdk的HTTP连接工具。当然也可以通过setRequestFactory属性切换到不同的HTTP源,比如Apache HttpComponents、Netty和OkHttp。

在RestTemplate 之前可以使用apache下开源的HttpClient,使用httpClient需要自己处理请求和返回值,需要自己封装httpClient连接池,使用完之后需要释放链接等。

控制层类:

在com.cloud.maven.controller包下创建一个控制层类,代码如下所示。

如上述,创建了一个控制层的请求类,其中private static final StringPAYME NT_U RL指定服务端请求的地址,使用/consumer/payment/ getPaymentById/{id}请求执行服务端提供的地址如/consumer/payment/ getPaymentById/{id},并通过res tTemplate.getForObject()方法执行服务请求的地址信息。

启动消费者启动类,执该地址http://localhost/consumer/payment/getPay ment ById/31,注意这里执行的 80 端口,消费者的请求控制层,会进行执行到提供者的返回的数据信息,如图 2.11 所示。

图 2.11

再次将消费端也注入Eureka中,在消费端中的pom.xml中添加Eureka客户端的坐标,代码如下所示。

配置消费端YML文件:

如上application.yaml文件描述:

●server.port:端口号

●spring.application.name:微服务的名称

编写主启动类:

在包com.cloud.maven中创建一个主启动类,并编写SpringBoot的入口,代码如下所示。

注解@EnableEurekaClient,表示开启了自动扫描Eureka。

重启主启动类,并且把Eureka注册中心工程启动,执行http://localhost:7001/地址发现提供者的服务名cloud-consumer-order已经注册到Eureka中了,如图 2.12所示。

图 2.12 sWGYR9Njbw83FTLhyJSupPtXNq4bhsjgYqFJCC5IrfuLuqlFmGKNOnvlkVG3HaDf

点击中间区域
呼出菜单
上一章
目录
下一章
×