wget 地址 连接超时_HttoPool连接池 和Hystrix 服务容错机制

学习主题:httpPool&Hystrix

学习目标:

对应视频:

http://www.itbaizhan.cn/course/id/85.html

对应文档:

对应作业

1. 编写支持Gzip压缩案例

(1) 修改Consumer的全局配置文件,添加Gzip相关配置。

spring.application.name=eureka-consumer-httpclientserver.port=9002#-----------------------------feign gzip#配置请求 GZIP 压缩feign.compression.request.enabled=true#配置响应 GZIP 压缩feign.compression.response.enabled=true#配置压缩支持的 MIME TYPEfeign.compression.request.mime-types=text/xml,application/xml,application/json#配置压缩数据大小的最小阀值,默认 2048feign.compression.request.min-request-size=512#2.2.2对客户端浏览器的请求以及 Consumer 对 provider 的请#求与响应做 Gzip 压缩#-----------------------------spring boot gzip#是否启用压缩server.compression.enabled=trueserver.compression.mime-types=application/json,application/xml,text/html,text/xml,text/plain#启用httpclientfeign.httpclient.enabled=true#设置服务注册中心地址,指向另一个注册中心eureka.client.service-url.defaultZone=http://user:123@eureka2:8761/eureka/,http://user:123@eureka1:8761/eureka/

2. 为什么http连接池能提升性能

(1) Http的背景原理是什么?

1. 两台服务器建立http连接的过程是很复杂的一个过程,涉及到多个数据包的交唤1,并且也很耗时

2. Http连接需要的3次握手4次分手开销很大.这一开销对于大量的比较小的http消息来说更大

(2) Http优化解决方案有哪些?

a. 如果我们直接采用 http 连接池,节约了大量的 3 次握手 4 次分手;这样能大大提升吞

吐率。

b. feign 的 http 客户端支持 3 种框架;HttpURLConnection、httpclient、okhttp;默认是

HttpURLConnection。

c. 传统的 HttpURLConnection 是 JDK 自带的,并不支持连接池,如果要实现连接池的

机制,还需要自己来管理连接对象。对于网络请求这种底层相对复杂的操作,如果有可用的

其他方案,也没有必要自己去管理连接对象。

d. HttpClient 相比传统 JDK 自带的 HttpURLConnection,它封装了访问 http 的请求头,

参数,内容体,响应等等;它不仅使客户端发送 HTTP 请求变得容易,而且也方便了开发人

员测试接口(基于 Http 协议的),即提高了开发的效率,也方便提高代码的健壮性;另外

高并发大量的请求网络的时候,还是用“连接池”提升吞吐量。

3. 编写支持Http连接案例

(1) 使用Gzip压缩Http连接的原理是什么?

实际是将json格式的文本信息压缩进行传输 增加传递效率

(2) 使用Gzip压缩Http连接在处理参数时需要注意什么?

需要添加json格式的注解 @RequestBody

4. 在微服务的日志中记录每个接口URL,状态码和耗时信息

(1) Logger.Level中NONE表示什么含义?

不记录任何信息 ,默认

(2) Logger.Level中BASIC表示什么含义?

记录请求方法,请求url,状态码,和用时

(3) Logger.Level中HEADERS表示什么含义?

在BASIC基础上再记录一些常用信息

(4) Logger.Level中FULL表示什么含义?

记录请求和响应的所有信息

5. 配置Feign负载均衡请求超时时间

(1) 配置Feign负载均衡请求超时时间的作用是什么?

可能由于服务处理的请求较长就中断了该连接是不对的

(2) 配置Feign负载均衡请求超时时间分为几种方式?

全局配置 或者 局部配置

#全局配置/指定配置#对所有操作请求都进行重试eureka-provider.ribbon.OkToRetryOnAllOperations=true#对当前实例的重试次数eureka-provider.ribbon.MaxAutoRetries=2#切换实例的重试次数eureka-provider.ribbon.MaxAutoRetriesNextServer=0#设置eureka-provider生产者的ribbon链接超时时间eureka-provider.ribbon.ReadTimeout=3000# 请求连接的超时时间默认的时间为1秒eureka-provider.ribbon.ConnectTimeout=3000

分享/讲解/扩展思考

点名提问从第一节课到最后一节课分别学到了什么,直到同学们把所有的知识点都说出来并且保证无误。

第242次(httpPool&Hystrix)

学习主题:httpPool&Hystrix

学习目标:

对应视频:

http://www.itbaizhan.cn/course/id/85.html

对应文档:

对应作业

6. 什么是服务灾难性雪崩效应

(1) 什么是灾难性雪崩效应?

在微服务架构中,一个请求需要调用多个服务是非常常见的。如客户端访问A服务,而A服务需要调用B服务,B服务需要调用C服务,由于网络原因或者自身的原因,如果B服务或者C服务不能及时响应,A服务将处于阻塞状态,直到B服务C服务响应。此时若有大量的请求涌入,容器的线程资源会被消耗完毕,导致服务瘫痪。服务与服务之间的依赖性,故障会传播,造成连锁反应,会对整个微服务系统造成灾难性的严重后果,这就是服务故障的“雪崩”效应。

(2) 造成雪崩原因是什么?

d581a1b0bb0e3dffbcbe2897caf129cd.png

7. 如何解决灾难性雪崩效应

(1) 解决灾难性雪崩效应有哪些方式?

降级:

超时降级 , 资源不足时(线程或信号量)降级,降级后可以配置降级接口返回托底数据,实现一个fallback方法,当请求后端服务出现异常的时候,可以使用fallback方法返回的值

隔离(线程池隔离和信号量隔离)

限制调用分布式服务的资源使用,某一个调用的服务出现问题不会影响其他服务调用

熔断

当失败率(如因网络故障/超时造成的失败率高)到达阈值自动触发降级,熔断器触发的快速失败会进行快速恢复

缓存

提供了请求缓存

请求合并

提供了请求合并

(2) 每种方式的特点是什么?

8. 解决灾难性雪崩效应-降级-创建项目

(1) 什么是服务降级?

超时,资源不足时 ,线程降级 ,降级后可以配合降级接口返回托底数据 实现一个fallback方法,当请求后端服务出现异常的时候, 可以使用fallback方法返回的值

(2) 查实@EnableCircuitBreaker注解的作用是什么?

开启熔断器 当某服务出现异常时,可以跳至其他方法处理

(3) @HystrixCommand注解的作用是什么?

此注解表示此方法是hystrix方法

9. 解决灾难性雪崩效应-降级-服务降级处理

(1) 在几种情况下会触发getFallback的调用?

雪崩效应的服务的降级处理

当服务出现异常时触发

方法抛出非HystrixBadRequestException异常

方法调用超时

熔断器开启拦截调用

线程池/队列/信号量是否跑满

10. 解决灾难性雪崩效应-请求缓存-创建项目

(1) 什么是请求缓存?

将相同请求的返回值和URL 存入redis数据库 ,下次再有相同的请求时就可以直接响应结果

Hystrix为了降低访问服务的概率,支持将一个请求与返回结果做缓存处理,如果再次请求的URL没有变化,那么Hystrix不会请求服务,而是直接从缓存中将结果返回,这样可以大大降低访问服务的压力

Hystrix自带缓存,有两个缺点

1. 是一个本地缓存,再集群情况下缓存是不能同步的

2. 不支持第三方缓存容器,Redis,memcache不支持的可以使用spring的cache

(2) @EnableCaching注解的作用是什么?

开启缓存

11. 解决灾难性雪崩效应-请求缓存-请求缓存处理

(1) @CacheConfig注解的作用是什么?

这个用于配置该类会用到的一些共用的缓存配置 ,

例如:

@CacheConfig(cacheNames=”users”) : 配置了该数据访问对象中返回的内容将存储于名为users的对象中,我们也可以不用该注解,直接通过@Cacheable自己配置缓存集的名字来定义

(2) @CacheEvict注解的作用是什么?

删除数据时自动去redis数据库中删除缓存

(3).@Cacheable :配置了此注解的返回值将被加入缓存,同时在查询时,会从缓存中获取,如果不存在缓存才发起对数据库的访问

12. 解决灾难性雪崩效应-请求合并-创建项目

(1) 什么是请求合并?

将多个类似的请求合并成一个请求 再去请求数据

d581a1b0bb0e3dffbcbe2897caf129cd.png

(2) 什么情况下使用请求合并?

在高并发情况下,通信次数的增加会导致总的通信时间增加,同时,线程池的资源也是有限的,高并发环境会导致大量的线程处于等待状态,进而导致响应延迟

进而需要Hystrix的请求合并

(3) 请求合并有哪些缺点?

设置请求合并之后,本来一个请求可能 5ms 就搞定了,但是现在必须再等 10ms 看看还 有没有其他的请求一起的,这样一个请求的耗时就从 5ms 增加到 15ms 了,不过,如果我们 要发起的命令本身就是一个高延迟的命令,那么这个时候就可以使用请求合并了,因为这个时候时间窗的时间消耗就显得微不足道了,另外高并发也是请求合并的一个非常重要的场 景。

13. 解决灾难性雪崩效应-请求合并-请求合并处理

(1) @HystrixCollapser注解的作用是什么?

使用hystrix的合并请求

被@HystrixCollapser标注的方法,返回类型必须为Future,使用异步方法,否则无法进行请求并行

(2) @HystrixProperty注解的作用是什么?

设置请求并行参数

(3) @HystrixCommand注解的作用是什么?

配置属性

(4) @HystrixCollapser注解中的batchMethod属性的作用是什么?

合并请求的方法

方法只能接受一个参数,如果你需要传递多个参数,那么请将他们封装成一个类参数

(5) @HystrixCollapser注解中的scope属性的作用是什么?

请求方式 默认REQUEST

请求方式: 分为 REQUEST,GLOBAL

REQUEST范围只对一个request请求内的多次服务请求进行合并

GlOBAL 是多单个应用中的所有线程的请求中的多次服务请求进行合并

(6) @HystrixCollapser注解中的timerDelayInMiliseconds属性的作用是什么?

请求时间间隔在10ms(默认)之内的请求会被合并为一个请求

(7) @HystrixCollapser注解中的maxRequestsInBatch属性的作用是什么?

设置触发批处理执行之前, 在批处理中允许的最大请求数 默认Integer.MAX_VALUE

97e15889a56397cf2bf0e1a0af33be39.png

14. 解决灾难性雪崩效应-服务熔断-创建项目

(1) 什么是服务熔断?

当电压过大时,保险丝自动熔断的意思

2382790ec3e43d85c5bd948b5bc4b740.png

分享/讲解/扩展思考

点名提问从第一节课到最后一节课分别学到了什么,直到同学们把所有的知识点都说出来并且保证无误。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/453076.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

街舞中的rolling机器人_REMEMBER街舞培训中心2020年元旦汇演

二零二零 元旦汇演REMEMBER2020年1月1日,Remember街舞培训中心在爱琴海购物公园进行了两个小时的汇报表演,Remember的学员们贡献了非常精彩的表演。在过去的2019年,我们一路探索、一路艰辛、一路欣喜、一路收获,在这里感谢所有老…

shell基础(上)

2019独角兽企业重金招聘Python工程师标准>>> 一 shell介绍 shell 是一个命令解释器。本质上是用户与计算机之间的交互。 用户把指令告诉shell,然后shell再传输给系统内核,接着内核再去支配计算机硬件去执行各种操作。 每个用户都可以有自己特…

webRTC实战总结

前言 前段时间一直在忙一个基于WebRTC的PC和移动端双向视频的项目。第一次接触webRTC,难免遇到了许多问题,比如:webRTC移动端兼容性检测,如何配置MediaStreamConstraints, 信令(iceCandidate, sessionDescription)传输…

谷歌虚拟服务器申请,【美国podserver.info】免费300M虚拟主机空间申请使用教程

【美国podserver.info】注册使用教程:1、打开申请地址,点击下图位置中的“Sign Up”开始注册。2、点击“Sign Up”开始注册后,进入到注册检查页面,我们按下图选择“I’m a human.”然后点击“Submit”进入到注册信息填写页面。3、…

web服务器文件管理,web文件管理服务器

web文件管理服务器 内容精选换一换该任务指导用户在SSL证书管理平台下载证书。证书状态为已签发或托管中。仅支持在证书有效期内,不限次数的下载证书,下载后即可在服务器(华为云的或非华为云的均可)上进行部署。证书请求文件选择的是系统生成CSR&#xf…

伟大公司为什么需要技术型领导?

Facebook前工程总监黄易山撰写了一系列文章,很好地总结了Facebook卓越研发文化中的宝贵经验。本文是这一系列文章的第五篇,也是最后一篇。 何谓技术型领导 所有从外部聘用的管理人员包括技术部门负责人,都必须能够编写代码,并且…

css样式变 及实际用法

<html xmlns"http://www.w3.org/1999/xhtml"><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><title>引入外部样式</title><link rel" stylesheet" href"home.css&…

服务器部署的参数文档,服务器参数配置

服务器参数配置 内容精选换一换源端服务器迁移至华为云后&#xff0c;最终将迁移到弹性云服务器上。因此在迁移前&#xff0c;您需要在华为云中创建一个或多个弹性云服务器。进入“弹性云服务器”页面。关于参数的详细信息&#xff0c;请参见购买弹性云服务器。Windows系统的目…

IS-IS基本配置

实验内容&#xff1a;现在网络中有4台路由器&#xff0c;用户希望利用这4台路由器通过IS-IS协议实现网络互联&#xff0c;并且因为R1和R2性能相对较低&#xff0c;所以还要使这两台路由器处理的数据信息相对较少。 网络拓扑&#xff1a; 实验分析&#xff1a; 根据题意可知R1和…

高并发高流量网站架构

Web2.0的兴起&#xff0c;掀起了互联网新一轮的网络创业大潮。以用户为导向的新网站建设概念&#xff0c;细分了网站功能和用户群&#xff0c;不仅成功的造就了一大批新生的网站&#xff0c;也极大的方便了上网的人们。但Web2.0以用户为导向的理念&#xff0c;使得新生的网站有…

枚举类型用法_Mybatis-plus常见用法总结三

前面已经介绍了Mybatis-plus基本用法&#xff0c;今天为大家分享一些Mybatis-plus高级应用逻辑删除自动注入枚举类型处理Sql注入器多租户表结构CREATE TABLE sys_role ( id varchar(64) NOT NULL COMMENT 主键, code varchar(64) NOT NULL DEFAULT COMMENT 角色编码, name …

VS Code的golang开发配置 之 代码提示

之前用VS Code的时候&#xff0c;发现自己的代码的提示一直不好&#xff0c;换用JetBrain的Goland的代码提示是好了&#xff0c;但是比较占用资源。在网上找了一些资料&#xff0c;发现很多人也是遇到第三方或者自己的代码无法提示的情况&#xff0c;但是都没有下文了。后来发现…

数组复制

在Java里面,可以用复制语句”AB”给基本类型的数据传递值,但是如果A,B是两个同类型的数组&#xff0c;复制就相当于将一个数组变量的引用传递给另一个数组&#xff1b;如果一个数组发生改变&#xff0c;那么引用同一数组的变量也要发生改变。 1.使用FOR循环,将数组的每个元素复…

服务器性能估算参考(硬件-应用服务器)

2019独角兽企业重金招聘Python工程师标准>>> Environment(2013-05-24) two identical machines via a GB-Ethernet link a client machine generating HTTP requests with wrk as the load generator a server machine running the respective “benchmarkee”all …

下拉选择_在管理Excel中实现联动下拉选择

在系统中常常出现这样的情况&#xff1a;由于下拉选择的数量太多了&#xff0c;难以高效选择。为此管理Excel通过通过引入多级联动选择的方式来减少下拉选择的困难度。先看下使用效果&#xff1a;联动下拉选择这个功能&#xff0c;在管理Excel中可以通过比较简单的配置方法实现…

JS跨域(ajax跨域、iframe跨域)解决方法及原理详解(jsonp)

这里说的js跨域是指通过js在不同的域之间进行数据传输或通信&#xff0c;比如用ajax向一个不同的域请求数据&#xff0c;或者通过js获取页面中不同域的框架中(iframe)的数据。只要协议、域名、端口有任何一个不同&#xff0c;都被当作是不同的域。 下表给出了相对 http://store…