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.pswp.cn/news/453076.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/453076.shtml
英文地址,請注明出處:http://en.pswp.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時分組被丟棄.計數器…