使用nacos配合openFeign实现便捷的微服务调用

项目背景

前端使用nginx,数据库mysql,微服务使用阿里云的nacos。

nacos

在虚拟机用docker部署nacos

(配置过程可查看  docker部署nacos

http://虚拟机地址:8848/nacos/

部署成功后,正常点开是这个页面

在部署成功了之后, 直接在各个微服务下面导入nacos的依赖

<!--nacos 服务注册发现-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

导入之后在配置中配置nacos地址

spring:
  application:
    name: item-service # 服务名称
  cloud:
    nacos:
      server-addr: 192.168.204.129:8848 # nacos地址  也就是你自己的虚拟机地址

这时候直接启动微服务程序,访问nacos控制台就可以看到我们的分布式微服务在nacos注册中心中就有服务了

这时候吧所有的微服务可以都按上面的步骤进行一遍,使其都在注册中心注册。

这时候可以给添加负载均衡和openFeign来更方便的去进行微服务的调用,不然就要进行如下繁琐的操作。

openFeign和负载均衡的启用来便捷调用微服务

第一步 导入依赖

  <!--openFeign-->
  <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-openfeign</artifactId>
  </dependency>
  <!--负载均衡器-->
  <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-loadbalancer</artifactId>
  </dependency>

第二步 添加@EnableFeignClients注释启用openFeign

openFeign在导入后还要在启动类上添加@EnableFeignClients注释来启用,

第三部 定义新接口,编写Feign客户端

@FeignClient("item-service")
public interface ItemClient {

    @GetMapping("/items")
    List<ItemDTO> queryItemByIds(@RequestParam("ids") Collection<Long> ids);
}

 这里只需要声明接口,无需实现方法。这边要注意,我们这边去使用@FeignClient注解,去声明自己要用到的服务名称,这个注解还实现了服装均衡,错误处理,服务调用等功能。

@GetMapping就是声明自己要请求的方式,然后@RequeParam是请求参数。

接下来我们就可以直接调用服务了

Feign底层发起http请求时,默认使用URLConnection发起http请求,不支持连接池操作,那么为了提高Feign的性能,可以采用的手段是使用连接池代替默认的URLConnection

    支持连接池的http客户端 Apache HttpClient、 OKHttp

开启连接池

第一步先导入依赖

<!--OK http 的依赖 -->
<dependency>
  <groupId>io.github.openfeign</groupId>
  <artifactId>feign-okhttp</artifactId>
</dependency>

然后在配置文件中配置相关参数

feign:
  okhttp:
    enabled: true # 开启OKHttp功能

重启服务就生效了。

可以通过打断点验证连接池是否生效,在org.springframework.cloud.openfeign.loadbalancer.FeignBlockingLoadBalancerClient中的execute方法中打断点:

底层的对象就变成了OkHttpClient

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值