Spring Boot + Nacos + OpenFeign实现远程调用

前文: 实现的是最简单的远程调用,不涉及数据库和业务逻辑,(让你有手就会调)在使用远程调用之前,我们先来了解一下这里远程调用其涉及到的组件的原理!

nacos的原理

nacos称之为注册中心,注册中心主要涉及到三大角色

  • 服务提供者
  • 服务消费者
  • 注册中心

它们的关系如下:

  1. 各个微服务在启动时,将自己的网络地址等信息注册到注册中心,由注册中心来存储这些数据。
  2. 服务消费者从注册中心中查询服务提供者的地址,并通过地址调用服务提供者的接口。
  3. 各个微服务与注册中心使用一定的机制通信,比如说心跳;如果注册中心与微服务长时间无法通信,则会注销掉该实例。
  4. 微服务网络地址发生变化时,例如实例增加或者IP变动等;会重新注册到注册中心中,这样服务消费者就无需人工修改服务提供者的网络地址了。

注册中心的功能

  1. 服务注册表:服务注册表是注册中心的核心,它用来记录各个微服务的信息,例如微服务的名称,IP,端口等。
  2. 服务注册与发现:服务注册表是指微服务启动时,将自己的信息注册到注册中心的过程;服务发现是指查询可用的微服务列表以及网络地址的机制。
  3. 服务检查:注册中心使用一定的机制定时检查已注册的服务,如果发现某实例长时间无法访问,就会从服务注册表中移除该实例。

注:Spring Cloud 提供了多种注册中心的支持,例如:Eureka、Consul、ZooKeeper、Nacos;

OpenFeign的原理

OpenFeing远程调用的核心就是通过一系列的封装和处理,将以JAVA注解的方式定义的远程调用API接口,最终转换为HTTP的请求形式,然后HTTP请求的相应结果解码成JAVA Bean返回给调用者。

  1. 首先,你对某个接口中定义了@FeignClient注解,Feign就会针对这个接口创建一个动态代理。
  2. 接着你是要调用那个接口,本质上是会调用Feign创建的动态代理,这是核心。
  3. Feign的动态代理会根据你在接口上的@RequestMapping等注解,来动态的构建出你要请求的服务的地址。
  4. 最后根据这个地址发起请求,解析,响应。

这就是我对以上两个微服务组件的原理的理解,废话不多说,直接操作起来!

步骤1(新建项目)

新建maven项目,我这里是example,里面包含3个子项目,这三个子项目都是Spring Boot项目,他们之间没有关系,都是独立运行的一个模块。如下图
在这里插入图片描述

步骤2(导入需要使用到的jar包)

每个模块导入需要使用的jar包
nacos需要导入的jar包
在这里插入图片描述
producer需要导入的jar包
在这里插入图片描述
consumer需要导入的jar包
在这里插入图片描述

步骤3(配置文件配置信息)

配置文件分为3种:yml、properties、bootstrap 我这里使用的是properties配置文件
配置信息都很简单,如下图
nacos的配置
在这里插入图片描述
consumer的配置
在这里插入图片描述
producer的配置
在这里插入图片描述

步骤4(编写对应模块的代码)

nacos这个模块简单,不需要编写任何代码,只要配置文件配置好就行
producer这个模块的代码如下图
在这里插入图片描述
consumer模块的代码如下图

在这里插入图片描述
在consumer这个模块添加一个service层接口代码如下图
在这里插入图片描述
在consumer这个模块添加Controller层
在这里插入图片描述
最后分别启动各个模块,可以在nacos注册中心看到我们的服务都已经注册了上来
在这里插入图片描述

步骤5(测试消费者调用生产者的接口)

在这里插入图片描述
到这里的话,恭喜你已经完成了远程调用,奖励加班一天

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值