当前位置: 首页 > news >正文

wordpress 弹幕播放器优化资讯

wordpress 弹幕播放器,优化资讯,南宁网站建设设计制作,济南企业建站Spring Cloud OpenFeign原理分析 概述 Spring Cloud 微服务实践也有挺多年了,一直想着总结一下这系列的知识点,最近终于下定决心来出一个Spring Cloud 系列文章了。本文主要围绕fegin组件来进行讲解,文中将会给出基础使用的示例,还…

Spring Cloud OpenFeign原理分析

概述

        Spring Cloud 微服务实践也有挺多年了,一直想着总结一下这系列的知识点,最近终于下定决心来出一个Spring Cloud 系列文章了。本文主要围绕fegin组件来进行讲解,文中将会给出基础使用的示例,还会通过源码解析的方式详细分析fegin的实现原理。OpenFeign是一个申明式的RestFul网络请求客户端,OpenFeign还集成了Ribbon和Hystrix来提供负载均衡和网络断路器的功能,之前老版本 Spring Cloud 所集成的 OpenFeign 默认采用了 Ribbon 负载均衡器。但由于Netflix 已不再维护 Ribbon,所以从 Spring Cloud 2021.x 开始集成的 OpenFeign 中已彻底丢弃Ribbon,而是采用 Spring Cloud 自行研发的 Spring Cloud Loadbalancer 作为负载均衡器。

一、使用示例

        要使用feign功能首先我们需要引入如下的依赖:

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

        引入Maven依赖,我们就可以编写Feign接口了,如下所示:

        我们还需要在程序入口加上@EnableFeignClients注解开启Feign功能 ,这样一个简单的Feign远程服务接口就实现了。

        前面提到Feign还具备负载均衡和熔断器功能,这样简单的配置我们具备这两个核心功能吗?

显然是不能的,要实现负载均衡我们需要引入如下依赖:

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-loadbalancer</artifactId>
</dependency>

而要实现熔断器功能我们需要引入如下依赖:

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>

在application.yml配置文件中,添加如下配置启用hystrix

# openfeign 开启 hystrix 的支持
feign:
  hystrix:
    enabled: true

接下来我们需要改造一下FeignClient:

可以看到在原来的基础上加了fallback的配置,然后另外实现了一个HystriFallback的实现类:

到此Feign的一个实际应用就完成了,接下来的章节我将带领大家从源码级别来分析一下Feign的实现原理。

二、原理分析

        再做原理分析之前我们先看一张Feign源码解析流程总览图:

        上面有介绍Feign是通过@EnableFeignClients注解开启的,通过注解的定义我们看到这里import了一个FeignClientsRegistrar类。

我们看到FeignClientsRegistrar类实现了ImportBeanDefinitionRegistrar接口,从而重写了registerBeanDefinitions方法,类的集成结构如下图所示

其中ImportBeanDefinitionRegistrar 负责动态注入 IOC Bean,分别注入 Feign 配置类、FeignClient Bean,这里我们看到了如下方法:

该方法很明显是注入了加了@FeignClient注解的bean。这里我们跟进到registerFeignClient方法中。

可以看出这里分为直接加载bean和懒加载bean两种方式,这里我们以懒加载方式做例子进行分析。上面说到 @FeignClient 修饰的接口最终填充到 IOC 容器的类型是 FeignClientFactoryBean,这里我们要重点关注一下这个类的结构:

这里我们主要关注一下FactoryBean#getObject 方法,这里使用了一个contextId,这个值是什么时候初始化进去的呢,我们了解springboot自动装配原理的同学很容易就发现了是在FeignAutoConfiguration中初始化的。

getObject 方法中直接调用了getTarget()方法,其中完成了FeignClient代理对象的注入,负载均衡以及熔断器的设置。

总结

        本篇文章结合Feign的使用示例讲解了Feign的核心原理,文中主抓Feign的业务主线,忽略了一下细枝末节的阐述,后续如有需要再推出技术细节方面的文章

http://www.shuangfujiaoyu.com/news/28069.html

相关文章:

  • 传媒公司网站建设策划官网站内推广内容
  • 廊坊哪里做网站好友情链接站长平台
  • 深圳自适应网站制作微信推广引流方法
  • wordpress 站长主题seo常用优化技巧
  • 做电影网站 广告收入网站页面关键词优化
  • 宿州城市建设投资网站线上营销怎么做
  • 如何用h5做网站郑州网络推广代理
  • wordpress搜索查询插件seo外包 靠谱
  • 两学一做网上答题网站湖南seo
  • 深圳房管局官网中国seo关键词优化工具
  • asp网站建设教案软文写作什么意思
  • 其他公司盗用公司名做网站重庆公司网站seo
  • 网站的经营方式武汉大学人民医院精神科
  • 2018做网站的视频厦门seo蜘蛛屯
  • 福州网站建设外包重庆网站seo公司
  • 行业网站的特点上海高端seo公司
  • 外贸网站建设价格杭州seo百度关键词排名推广
  • 做站群一个网站多少钱企业培训考试系统
  • 莆田社交网站草根站长工具
  • 宁波网站推广平台咨询公司百度电商平台
  • 法院网站建设情况苏州网站建设方案
  • 创建全国文明城市要求注册志愿者seo有哪些优缺点?
  • 工业设计代做网站资讯门户类网站有哪些
  • 体育直播网站开发数据源获取营销网络是什么
  • 大连建设网站株洲seo推广
  • 内销常用网站外贸推广具体是做什么
  • 网站页面布局分析嘉兴百度seo
  • 外贸建站效果服务营销案例100例
  • 做系统去哪网站下载镜像灰色广告投放平台
  • 自己怎么拍做美食视频网站推广渠道有哪些方式