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,一经查实,立即删除!

相关文章

JQuery 加载 CSS、JS 文件

JS 方式加载 CSS、JS 文件: //加载 css 文件 function includeCss(filename) {var head document.getElementsByTagName(head)[0];var link document.createElement(link);link.href filename;link.rel stylesheet;link.type text/css;head.appendChild(link) …

关闭网页如何接收服务器消息,WebSocket服务端发消息给客户端,浏览器收到消息就关闭了...

引用 2 楼 fly_dragon_fly 的回复:收到的消息是什么0000 00 0b ab 7a 86 83 18 f4 6a 36 60 a2 08 00 45 00 ...z....j6...E.0010 00 b9 49 d3 40 00 40 06 6b aa c0 a8 01 79 c0 a8 ..I...k....y..0020 01 f8 08 03 71 88 a4 d5 52 dc ce c1 f6 89 50 18 ....q...R..…

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

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

shell基础(上)

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

webRTC实战总结

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

程序员眼中的2007:寻找软件开发利器

软件开发生命周期包括需求分析、设计、开发、测试、交付部署等各个阶段,以及贯穿在整个开发过程的软件开发项目管理环节,2006年,在每一个阶段都出现了令人眼花缭乱的技术与应用,同时这些技术还将进一步影响2007年的发展&#xff0…

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

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

物理层协议有哪四大特性

1.机械特性 指明接口所用接线器的形状和尺寸、引线数目和排列、固定和锁定装置等等。2.电气特性 指明在接口电缆的各条线上出现的电压的范围。3.功能特性 指明某条线上出现的某一电平的电压表示何种意义。4.过程特性 指明对于不同功能的各种可能事件的出现顺序。

phpstudy中的mysql

1.进入mysql命令台,执行 select version()即可 2status;

度量相似性数学建模_一种基于粒子群位置更新思想灰狼优化算法的K-Means文本分类方法与流程...

技术特征:1.一种基于粒子群位置更新思想灰狼优化算法的k-means文本分类方法,其特征在于:包括以下步骤:s1:对文本数据进行预处理,得到预处理后文本数据;s2:采用余弦角度为相似性度量,…

Overload重載和Override重写的区别。Overloaded的方法是否可以改变返回值的类型?

Overload是重载的意思,Override是覆盖的意思,也就是重写。 重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。 重写Override表示子类中的方法可以与父类中的…

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

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

简单计算器 (关于栈的一种应用)

题目:简单计算器读入一个只包含 , -, *, / 的非负整数计算表达式,计算该表达式的值。Input测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行…

python中模运算_Python中的模运算

所谓取模运算&#xff0c;就是计算两个数相除之后的余数&#xff0c;符号是%。如a % b就是计算a除以b的余数。用数学语言来描述&#xff0c;就是如果存在整数n和m&#xff0c;其中0 < m < b&#xff0c;使得$ a n * b m $&#xff0c;那么$ a \% b a - n * b m $。先…

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

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

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系统的目…

扩散法及其改进

扩散法是一种静态路由算法,每一个输入的分组都被从除输入线路之外的所有其它线路上转发出去.扩散法显然会产生大量的分组副本,因此必须有一些办法来抑制无限的转发.1.一种办法是在分组头中携带一个跳数计数器,分组每到一个节点其跳数计数器就减1,当计数器为0时分组被丢弃.计数器…