Spring Cloud微服务-基于Eureka的feign调用(1)

全文概览

本章是为后续的深度学习做准备工作

主要包含以下内容
开发三个简单应用,包括:注册中心、服务提供方、服务消费方,后续研究和实战都在这三个应用基础上进行; 

SpringCloud主要框架

服务发现——Netflix Eureka
服务调用——Netflix Feign
熔断器——Netflix Hystrix
服务网关——Netflix Zuul
分布式配置——Spring Cloud Config
消息总线 —— Spring Cloud Bus
 

版本列表

  1. JDK:1.8;
  2. spring boot:2.0.1.RELEASE;
  3. spring cloud:Finchley.M9;

服务发现组件 Eureka

Eureka是Netflix开发的服务发现框架,SpringCloud将它集成在自己的子项目
spring-cloud-netflix中,实现SpringCloud的服务发现功能。Eureka包含两个组件:
Eureka Server和Eureka Client。
Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注
册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点
的信息可以在界面中直观的看到。
Eureka Client是一个java客户端,用于简化与Eureka Server的交互,客户端同时也
就别一个内置的、使用轮询(round-robin)负载算法的负载均衡器。在应用启动后,将会
向Eureka Server发送心跳,默认周期为30秒,如果Eureka Server在多个心跳周期内没有
接收到某个节点的心跳,Eureka Server将会从服务注册表中把这个服务节点移除(默认90
秒)。
 

Eureka注册中心

(1)创建eureka模块

(2)引入依赖  父工程pom.xml定义Spring Boot与Spring Cloud版本

 

eureka模块pom.xml引入eureka-server

(3)添加application.yml

(4)编写启动类

创建包com.qiang.eureka ,包下建立启动类EurekaServer或EurekaApplication

*注意注解:@EnableEurekaServer

(5)启动运行启动类,然后在浏览器地址栏输入  http://localhost:6868/  运行效果如下:

主界面中system status为系统信息  General Info为一般信息 

Instances currently registered with Eureka为注册到的所有微服务列表

我们现在就将一些微服务都注册到Eureka中,这样所有的微服务之间都可以互相调用了。

提供者微服务开发

(1)创建provider模块,引入eureka-client依赖

(2)添加application.yml

(3)编写Controller层,随便写点东西.

(4)编写启动类ProviderApplication

*注意注解:@EnableEurekaClient

(5)启动运行启动类,此时刷新http://localhost:6868/,然后就会发现,这个微服务已经被注册至服务中心了

然后我们试着运行provider模块的接口:localhost:12003/admin/findAll/5/1,运行效果如下

嗯,运行成功,高兴吗^_^

接着我们写一个消费者,这里需讲述清楚几点

1、不管消费者还是提供者,他们都是一个微服务,他们都“各自为政”

2、当微服务之间需要互相调用接口时,他们才会有消费者与提供者的“身份”

3、被调用接口的所属微服务为“提供者”,反之为“消费者”

4、只有当服务都注册进Eureka注册中心时,才能相互调用,或者说相互“发现”服务

消费者微服务开发

(1)创建feign模块,引入eureka-client依赖与openfeign依赖

(2)添加application.yml

(3)编写启动类FeignApplication

*注意注解:@EnableDiscoveryClient 发现服务
                   @EnableFeignClients  使用feign发现服务 
                   此时可不写@EnableEurekaClient,上面两个注解会实现将此服务注册进服务中心 
                   但是eureka-client依赖一定要引入

(4)在feign模块添加client包,包下创建接口PClient(ProviderClient)

 

@FeignClient注解用于指定从哪个服务中调用功能 ,注意 里面的名称与被调用的服务
名保持一致,并且不能包含下划线。
@RequestMapping注解用于对被调用的微服务进行地址映射。注意 @PathVariable注
解一定要指定参数名称,否则出错

(5)编写FeignController

(6)启动运行类,此时再次刷新http://localhost:6868,会发现feign微服务已经被注册进去

然后我们试着运行feign模块的接口:localhost:12001/feign/admin/findAll/5/1,运行效果如下

成功√

猜你喜欢

转载自blog.csdn.net/qq_38188762/article/details/88814635