目錄
- 引出
- 認識通訊協議
- 1、TCP/IP協議,UDP協議的區別
- 2、HTTP通訊協議的講解
- Redis沖沖沖——緩存三兄弟:緩存擊穿、穿透、雪崩
- 緩存擊穿
- 緩存穿透
- 緩存雪崩
- 總結
引出
認識通訊協議——TCP/IP、UDP協議的區別,HTTP通訊協議的理解
認識通訊協議
1、TCP/IP協議,UDP協議的區別
屬于底層的通訊協議
三次握手的目的:保證連接一定創建成功
一問一答的目的:保證數據一定傳輸成功,保證數據永遠不丟失
四次揮手的目的:保證連接一定斷開成功,且清理到位!
Java程序連接MySQL數據庫時,第1次 是不都很慢?因為:它在建立連接 通訊協議是:MYSQL協議,底層依舊是:TCP/IP協議
UDP協議:類似于 寫信,發短信,不依賴于連接 導致:信息丟失
TCP/IP協議,UDP協議,都是網絡傳輸協議!在它們的基礎之上,可能會衍生出非常多的上層協議,比如:HTTP HTTPS MYSQL POP3 ……
2、HTTP通訊協議的講解
是屬于TCP/IP協議的上層協議,所以它也存在:3次握手,4次揮手的過程,它同樣也依賴于連接!
HTTP版本:1.0 1.1(使用最為廣泛) 2.0
1.0 每個請求都會創建一個連接,請求完畢,連接斷開
1.1 每個文件對應創建一個連接,同一個文件發出的請求,可以共享對應的連接,文件關閉連接關閉
2.0 每個瀏覽器對應創建一個連接,同一個瀏覽器發出的請求, 可以共享對應的連接,瀏覽器關閉連接關閉
版本更新的目的是:盡量的減少連接創建&銷毀的過程,做到連接復用
HTTP通訊協議的分類:請求,響應
HTTP請求協議:請求行,請求頭,空行,請求體
請求行:請求方式(GET/POST) URL HTTP協議版本號
請求頭:告訴服務端,瀏覽器的相關信息
空行:分割請求頭 & 請求體
請求體:用于在POST時,傳輸數據
對應的響應協議:
狀態行:協議版本,狀態碼以及狀態碼的描述(200,400,404,405,302,500)
響應頭:后端服務器的相關信息
空行:分割響應頭 & 響應體
響應體:響應數據的東西
Redis沖沖沖——緩存三兄弟:緩存擊穿、穿透、雪崩
緩存擊穿
緩存擊穿:redis中沒有,但是數據庫有
順序:先查緩存,判斷緩存是否存在;如果緩存存在,直接返回數據;如果緩存不存在,則查詢數據庫,將數據庫的數據存入到緩存
解決方案:將熱點數據設置過期時間長一點;針對數據庫的熱點訪問方法上分布式鎖;
緩存穿透
緩存穿透:redis中沒有,數據庫也沒有
解決方案:
(1)將不存在的key,在redis設置值為null;
(2)使用布隆過濾器;
原理:https://zhuanlan.zhihu.com/p/616911933
布隆過濾器:
如果確認key不存在于redis中,那么就一定不存在;
它說key存在,就有可能存在,也可能不存在! (誤差)
布隆過濾器
1、根據配置類中的 key的數量 ,誤差率,計算位圖數組【二維數組】
2、通過布隆過濾器存放key的時候,會計算出需要多少個hash函數,由hash函數算出多少個位圖位置需要設定為1
3、查詢時,根據對應的hash函數,判斷對應的位置值是否都為1;如果有位置為0,則表示key一定不存在于該redis服務器中;如果全部位置都為1,則表示key可能存在于redis服務器中;
緩存雪崩
緩存雪崩:
Redis的緩存雪崩是指當Redis中大量緩存數據同時失效或者被清空時,大量的請求會直接打到數據庫上,導致數據庫瞬時壓力過大,甚至宕機的情況。
造成緩存雪崩的原因主要有兩個:
1.相同的過期時間:當Redis中大量的緩存數據設置相同的過期時間時,這些數據很可能會在同一時間點同時失效,導致大量請求直接打到數據庫上。
2.緩存集中失效:當服務器重啟、網絡故障等因素導致Redis服務不可用,且緩存數據沒有自動進行容錯處理,當服務恢復時大量的數據同時被重新加載到緩存中,也會導致大量請求直接打到數據庫上。
預防緩存雪崩的方法主要有以下幾種:
1.設置不同的過期時間:可以將緩存數據的過期時間分散開,避免大量緩存數據在同一時間點失效。
2.使用加鎖:可以將所有請求都先進行加鎖操作,當某個請求去查詢數據庫時,如果還沒有加載到緩存中,則只讓單個線程去執行加載操作,其他線程等待該線程完成后再次進行判斷,避免瞬間都去訪問數據庫從而引起雪崩。
3.提前加載預熱:在系統低峰期,可以提前將部分熱點數據加載到緩存中,這樣可以避免在高峰期緩存數據失效時全部打到數據庫上。
4.使用多級緩存:可以在Redis緩存之上再使用一層緩存,例如本地緩存等,當Redis緩存失效時,還能夠從本地緩存中獲取數據,避免直接打到數據庫上。
本地緩存:ehcache oscache spring自帶緩存 持久層框架的緩存
總結
認識通訊協議——TCP/IP、UDP協議的區別,HTTP通訊協議的理解