微服务-netflix套件-openfeign

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微服务-netflix套件-openfeign相关的知识,希望对你有一定的参考价值。

参考技术A 当进行架构设计,业务复杂度比较高的时候,面对可扩展性,我们会考虑在架构中使用SOA或者微服务框架。

一个典型的微服务框架至少是包含如下组件的系统:

对于Spring Cloud有两大路线,一是NetFlix,一是Alibaba Cloud。

首先,所有的组件都是基于Springboot脚手架的,其中微服务的各个组成部分如上。
SpringCloud为了让组件更加通用,发布了Spring-Cloud-Common这样的抽象层,这个抽象层就类似于操作系统的VFS,让整个微服务更加通用,基于抽象层实现的微服务模块或者组件可以根据需要进行替换。

实际上微服务的各个模块或者组件可以使用其它的模块或者组件进行替换。

OpenFeign是RPC组件,使用可以参见 https://spring.io/projects/spring-cloud-openfeign 的说明,相当简单。简单下有不简单,在文档中

openfeign中集成了负载均衡、断路器等功能。openfeign的实现也是基于装配机制,通过装配构造了代理,在代理中实现了负载均衡、断路器等。

openfeign的负载均衡是通过Rebbon实现,rebbon原理如下

Ribbon中获取并缓存了可用服务器数据,是以SDK方式实现,其中两个关键功能是负载均衡算法和状态监测。

Ribbon负载均衡算法以IRule为接口,以策略模式实现,提供了随机、轮训、权重等几种算法。

Spring Cloud的两大路线都可以按照如上微服务组件图来学习,这样可以理清组件之间的关系,加深理解。

OpenFeign:声明式服务调用

Spring Cloud OpenFeign:声明式服务调用

一、OpenFeign简介

1. 什么是OpenFeign

​ OpenFeign目前是Spring Cloud 二级子项目。平时说的Feign指的是Netflix下的Feign,现在我们学习的是OpenFeign,是Spring提供的。

​ OpenFeign是一种声明式、模板化的HTTP客户端(仅在Application Client中使用)(称OpenFeign作用:声明式服务调用)。声明式调用是指,就像调用本地方法一样调用远程方法,无需感知操作远程http请求。学习完OpenFeign后可以不使用RestTemplate进行调用。

​ 使用OpenFeign时就好像在写控制器方法,OpenFeign都是写在接口中,在声明的方法上添加SpringMVC注解或声明的参数上添加SpringMVC注解就可以完成调用远程的控制器方法。

2. OpenFeign的执行流程

文字说明

整体流程说明:

  1. Application Service向Eureka Server 注册服务。
  2. Application Client从Eureka Server中发现服务。</

以上是关于微服务-netflix套件-openfeign的主要内容,如果未能解决你的问题,请参考以下文章

微服务-netflix套件-Eureka

什么是微服务架构?主流的微服务如何实现?

微服务架构整理-(十一SpringCloud实战之OpenFeign)

微服务架构整理-(十一SpringCloud实战之OpenFeign)

微服务实战|声明式服务调用OpenFeign实践

微服务实践之通信(OpenFeign)详解-SpringCloud(2021.0.x)-6