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

做足球网站前景一个网站源码值多少钱

做足球网站前景,一个网站源码值多少钱,做网站找顺的,网站运营的含义OpenFeign 文章目录 OpenFeign一. 什么是OpenFeign二. OpenFeign基础使用1.添加依赖2.配置Nacos配置信息3.在项目中开启OpenFeign4.编写OpenFeign调用代码5.调用OpenFeign接口 三. OpenFeign内置的超时重试机制1.配置超时重试2.覆盖Retryer对象 四.自定义超时重试机制1.自定义超…OpenFeign 文章目录 OpenFeign一. 什么是OpenFeign二. OpenFeign基础使用1.添加依赖2.配置Nacos配置信息3.在项目中开启OpenFeign4.编写OpenFeign调用代码5.调用OpenFeign接口 三. OpenFeign内置的超时重试机制1.配置超时重试2.覆盖Retryer对象 四.自定义超时重试机制1.自定义超时重试类2.设置配置文件 五.OpenFeign超时重试底层实现1.超时重试底层实现 一. 什么是OpenFeign OpenFeign的全称为Spring Cloud OpenFeign是Spring Cloud 开发的一款基于Feign的框架声明式Web服务客户端。 Feign 是Netflix开源的一个声明式的Web服务客户端它简化了基于HTTP的服务调用使得服务间的通信变得更加简单和灵活。Feign通过定义接口、注解和动态代理等方式将服务调用的过程封装起来开发者只需定义服务接口而无需关心底层的HTTP请求和序列化等细节。 OpenFeign功能升级 OpenFeign在Feign的基础上提供了以下增强和扩展功能 更好的集成Spring Cloud组件OpenFeign与Spring Cloud其他组件紧密集成可以无缝地与其他Spring Cloud组件一起使用。支持FeignClient注解OpenFeign引入了FeignClient注解作为Feign客户端的标识可以方便地定义和使用远程服务的声明式接口。错误处理改进OpenFeign对异常的处理做了增强提供了更好的错误信息和异常处理机制使得开发者可以更方便地进行错误处理。更丰富的配置项OpenFeign提供了丰富的配置选项可以对Feign客户端的行为进行灵活的配置例如超时设置、重试策略等。 二. OpenFeign基础使用 OpenFeign通常要配合注册中心一起使用并且新版本OpenFeign也必须和负载均衡器一起使用使用步骤如下 添加依赖(Nacos注册中心、OpenFeign、Spring Cloud LoadBalancer)配置Nacos服务端信息在项目中开启OpenFeign编写OpenFeign调用代码编写代码通过OpenFeign调用生产者 1.添加依赖 dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId /dependency dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-loadbalancer/artifactId /dependency dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-openfeign/artifactId /dependency2.配置Nacos配置信息 spring:application:name: nacos-consumer-democloud:nacos:discovery:server-addr: localhost:8848username: nacospassword: nacosregister-enabled: false # 消费者(不需要注册到nacos中)3.在项目中开启OpenFeign 在启动类文件中添加EnableFeignClients注解即可 4.编写OpenFeign调用代码 Service FeignClient(nacos-discovery) // 表示调用 nacos 中的 nacos-discovery 服务 public interface UserService {RequestMapping(/user/getnamebyid) // 调用生产者的/user/getnamebyid接口public String getNameById(RequestParam(id) int id);}5.调用OpenFeign接口 RestController public class BusinessController {Autowiredprivate UserService userService;RequestMapping(/getnamebyid)public String getNameById(Integer id){System.out.println(------- do provider getNameById method LocalDateTime.now());return userService.getNameById(id);}}三. OpenFeign内置的超时重试机制 在微服务架构中服务之间是通过网络进行通信的而网络是复杂和不稳定的所以在调用服务时可能会失败或超时那么在这种情况下就需要给OpenFeign配置超时重试机制。 什么是超时重试 超时重试是一种在网络通信中常用发的策略用于处理请求在一定时间内未能得到响应的情况。当发起请求后如果规定时间内没有得到预期的响应就会触发超时重试机制重新发送请求。 超时重试的主要目的是提高请求的可靠性和稳定性以应对网络的不稳定、服务不可用、响应延迟等不确定因素。 OpenFeign默认是不自动开启超时重试 开启有以下步骤 配置超时重试覆盖Retryer对象 1.配置超时重试 spring:cloud: openfeign:client:config:default:connect-timeout: 1000 #连接超时时间read-timeout: 1000 #读取超时时间2.覆盖Retryer对象 Configuration public class RetryerConfig {Beanpublic Retryer retryer(){return new Retryer.Default(1000,//重试间隔时间1000,//最大重试间隔时间3);//最大重试次数} }最大重试次数为3次最大重试间隔时间是1秒重试间隔时间是1秒 这时我们启动一个实例并设置保护阈值为0启动消费者。 访问服务 此时服务无法访问并触发了超时重试机制这时打开生产者者的控制台 在控制台我们可以看到总共打印了3次日志因为我们设置的最大重试次数是3 为什么不是4次呢 为什么不是4次 因为Retryer的Default方法的源码中重试次数变量attempt是从1开始的然后核心方法continueOrPropagate中的if判断是当this.attempt this.maxAttempts 时才抛出异常。 四.自定义超时重试机制 自定义超时重试机制实现为以下两步 自定义超时重试类(实现Retryer接口并重写continueOrPropagate方法)设置配置文件 1.自定义超时重试类 常见的超时重试策略有以下三种 固定间隔重试每次重试之间的时间间隔固定不变。指数间隔重试每次重试之间的时间间隔按指数递增。随机间隔重试每次重试之间的时间间隔是随机的。 public class CustomRetryer implements Retryer {private final int maxAttempts; //最大尝试次数private final long backoff; //重试间隔时间int attempt; //当前重试次数public CustomRetryer() {this.maxAttempts3;this.backoff 1000;this.attempt0;}public CustomRetryer(int maxAttempts, long backoff) {this.maxAttempts maxAttempts;this.backoff backoff;this.attempt0;}Overridepublic void continueOrPropagate(RetryableException e) {if (attemptmaxAttempts){throw e;}long interval this.backoff;//重试间隔时间System.out.println(LocalDateTime.now() | 执行一次重试interval);try {//重试间隔实际Thread.sleep(interval*attempt);} catch (InterruptedException ex) {ex.printStackTrace();}}Overridepublic Retryer clone() {return new CustomRetryer(maxAttempts,backoff);} }2.设置配置文件 spring:cloud:openfeign:client:config:default:connect-timeout: 1000 #连接超时时间read-timeout: 1000 #读取超时时间retryer: com.example.consumer.config.CustomRetryer #自定义失败重试类启动生产者和消费者服务并尝试调用服务并查看控制台 这里我们设定的重试次数是3但为什么会打印4次呢 是因为在自定义重试类中的attempt变量是从0开始的。 观察日志文档的时间间隔从2s-3s-4s,最初attempt为11*1read-timeout的1s所以是2s,然后1*1read-timeout,以此类推…… 五.OpenFeign超时重试底层实现 首先我们先了解以下OpenFeign的底层实现逻辑 加注解在启动类或配置类上添加 EnableFeignClients注解动态代理这个注解会触发Spring框架的自动配置机制扫描所有标记的FeignClient的接口并为它们创建代理实例。RequestTemplate发送HTTP请求OpenFeign不能直接发送HTTP请求它在动态代理里面将注解的路由地址拿出来然后就能拼出来一个URL请求地址然后再使用RequestTemplate去发送HTTP请求。RestTemplate依靠HTTP框架实现web请求RestTemplate只是一个模板方法类它只是规定了一个调用的API底层并没有实现依靠的是HTTP框架实现的web请求(Apache 的HttpClient框架) 1.超时重试底层实现 OpenFeign超时的底层实现是通过配置底层的HTTP客户端来实现的。OpenFeign允许在请求连接和读取数据阶段设置超时时间具体超时配置可以通过HTTP客户端的连接超时(connectTimeout)和读取超时(readTimeout)来实现可以在配置文件中设置超时参数。 OpenFeign重试的底层可通过观察源码来了解它的源码在SynchronousMethodHandler的invoke方法下如下所示 public Object invoke(Object[] argv) throws Throwable {RequestTemplate template this.buildTemplateFromArgs.create(argv);Request.Options options this.findOptions(argv);Retryer retryer this.retryer.clone();// 死循环如果成功或者重试结束就返回(通过throw终止while循环)while(true) {try {//通过HTTP Client发起通信return this.executeAndDecode(template, options);} catch (RetryableException var9) {RetryableException e var9;//判断是否重试try {retryer.continueOrPropagate(e);} catch (RetryableException var8) {Throwable cause var8.getCause();if (this.propagationPolicy ExceptionPropagationPolicy.UNWRAP cause ! null) {throw cause;}throw var8;}if (this.logLevel ! Level.NONE) {this.logger.logRetry(this.metadata.configKey(), this.logLevel);}}} }因此OpenFeign的重试功能是通过其内置的Retryer组件和底层的HTTP客户端实现的。 Retryer组件提供了重试策略的逻辑实现而远程接口则通过HTTP客户端来完成调用。
http://www.zqtcl.cn/news/352842/

相关文章:

  • 网站搜索排名优化软件flash xml网站
  • 匀贵网站建设亿级别网站开发注意
  • 怎样架设网站网站优化公司推荐
  • iis网站防盗链济宁官方网站
  • 网址查询地址查询站长之家在海南注册公司需要什么条件
  • 网站开发兼职平台网站建设需要多少钱小江网页设计
  • 最专业的网站建设收费2021没封的网站有人分享吗
  • 站酷设计网站官网入口文字设计wordpress是服务器吗
  • 律师手机网站模板天津做推广的公司
  • 西安市高新区建设规划局网站织梦小说网站模板下载地址
  • 网站开发简历 自我评价网页设计报告论文
  • 如何让网站不被收录不备案 国内网站
  • 站长之家域名买天猫店铺去哪里买
  • asp.net做的网站模板下载万网x3 wordpress
  • 设计网站设计目标天津市建设工程管理总队网站
  • 网站开始怎么做上海响应式网页建设
  • 网站备案 seo免费二维码制作网站
  • 删除网站备案网站建设湖南岚鸿建设
  • 做vlogger的网站有哪些长沙网站排名技巧
  • 媒体营销平台商品seo关键词优化
  • 芜湖先锋网站两学一做wordpress菜单顶部
  • 网站策划怎么样一级域名网站如何申请
  • 烟台高端网站开发网站开发哪个公司好
  • 广州网站定制开发方案南宁网站 制作
  • php做网站需要后台吗郑州建网站十大
  • 网站跳出率是什么意思百度服务
  • 建站 discuz开发者导航
  • 有哪些网站可以做毕业设计外贸网站发外链
  • 如何使用网站模板计算机培训班有用吗
  • 本地宁波网站建设电子商务网站建设工具都有那些