【Spring Cloud Alibaba】(二)微服务调用组件Feign原理+实战

系列目录

【Spring Cloud Alibaba】(一)微服务介绍 及 Nacos注册中心实战

本文目录

系列目录

前言

什么是RPC?

Feign和OpenFeign都是什么?

HTTP调用 vs Feign(RPC)调用

单独使用Feign实战

Feign核心源码解读

Feign整体设计架构

Spring Cloud OpenFeign实战

Feign在实际项目的通常做法

最后

前言

通过上文,我们掌握了Spring Cloud Alibaba微服务框架的初始环境搭建,并能通过Nacos注册中心的服务注册和发现,配合RestTemplate和Ribbon,实现2个服务之间通过服务名进行远程调用。

实际上,微服务之间的调用还有更简单、更方便、更强大的调用方式,那就是RPC调用!本文所讲的微服务调用组件Feign,正是RPC框架之一!

本文会循序渐进的从Feign讲到OpenFeign,并会讲到Feign核心原理和实际项目使用OpenFeign的通常做法:

单独使用Feign实战,实现2个服务之间的RPC调用;

Feign核心源码解读;

Feign整体设计架构预览;

Spring Cloud Alibaba快速整合Feign,实现2个服务之间通过Nacos服务注册发现的RPC调用;

Feign在实际项目的通常做法。

什么是RPC?

RPC(Remote Produce Call),即远程过程调用,目的是:调用[远程服务方法]像调用[本地方法]一样!

Feign和OpenFeign都是什么?

Feign是RPC框架中的一种,是Netflix开发的声明式、模板化的HTTP客户端,底层依然是走的HTTP调用,但表现形式是接口调用,可以帮助我们更加便捷、优雅地调用HTTP API,就像调用本地方法一样方便。

它通过扩展集成了Netflix Ribbon,从而拥有负载均衡的功能,默认是基于配置来提供服务实例列表。

OpenFeign是指Spring Cloud OpenFeign,是Spring Cloud开发的,对Feign进行了增强,使其支持Spring MVC注解,还整合了Spring Cloud Netflix Ribbon,从注册中心获取服务实例(在Spring Cloud Alibaba框架中的注册中心默认是Nacos),从而使得Feign与Spring Cloud整合。

HTTP调用 vs Feign(RPC)调用

回顾一下RestTemplate方式的服务调用(gg-user是服务名):

@Autowired

private RestTemplate restTemplate;

@GetMapping("/getUserName")

public String getUserName(@RequestParam("id") Integer id) {

String url = String.format("http://%s/user?id=%s", "gg-user", id);

return restTemplate.exchange(url, HttpMethod.GET, null, String.class).getBody();

换成Feign调用,感受一下效果:

@Autowired

private UserService userService;

@GetMapping("/getUserName")

public String getUserName(@RequestParam("id") Integer id) {

return userService.getUserName(id);

}

What? Feign这个是远程调用?

你可能感兴趣的:(微服务,java,spring,cloud)