中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

wordpress模版怎么上傳寧波關(guān)鍵詞優(yōu)化企業(yè)網(wǎng)站建設(shè)

wordpress模版怎么上傳,寧波關(guān)鍵詞優(yōu)化企業(yè)網(wǎng)站建設(shè),獵頭做單都有什么網(wǎng)站,做軟件好還是做網(wǎng)站好1. 什么是緩存穿透,怎么解決? 緩存穿透是指用戶請求的數(shù)據(jù)在緩存中不存在即沒有命中,同時在數(shù)據(jù)庫中也不存在,導(dǎo)致用戶每次請求該數(shù)據(jù)都要去數(shù)據(jù)庫中查詢一遍。如果有惡意攻擊者不斷請求系統(tǒng)中不存在的數(shù)據(jù),會導(dǎo)致短時…

1. 什么是緩存穿透,怎么解決?

????????緩存穿透是指用戶請求的數(shù)據(jù)在緩存中不存在即沒有命中,同時在數(shù)據(jù)庫中也不存在,導(dǎo)致用戶每次請求該數(shù)據(jù)都要去數(shù)據(jù)庫中查詢一遍。如果有惡意攻擊者不斷請求系統(tǒng)中不存在的數(shù)據(jù),會導(dǎo)致短時間大量請求落在數(shù)據(jù)庫上,造成數(shù)據(jù)庫壓力過大,甚至導(dǎo)致數(shù)據(jù)庫承受不住而宕機崩潰。

????????緩存穿透的關(guān)鍵在于在Redis中查不到key值,它和緩存擊穿的根本區(qū)別在于傳進來的key在Redis中是不存在的。假如有黑客傳進大量的不存在的key,那么大量的請求打在數(shù)據(jù)庫上是很致命的問題,所以在日常開發(fā)中要對參數(shù)做好校驗,一些非法的參數(shù),不可能存在的key就直接返回錯誤提示。

正常的查詢流程

緩存穿透查詢流程

解決方法:

方案一:緩存空數(shù)據(jù)

  • 將無效的key存放進Redis中:

當(dāng)出現(xiàn)Redis查不到數(shù)據(jù),數(shù)據(jù)庫也查不到數(shù)據(jù)的情況,也將其緩存起來,但設(shè)置一個較短的過期時間,這樣即使后續(xù)的惡意請求再次訪問相同的鍵,也能夠從緩存中獲取結(jié)果,減輕數(shù)據(jù)庫壓力。但這種處理方式是有問題的,假如傳進來的這個不存在的Key值每次都是隨機的,那存進Redis也沒有意義。

優(yōu)點:實現(xiàn)簡單

缺點:消耗內(nèi)存,可能會發(fā)生數(shù)據(jù)不一致的問題。

方案二:布隆過濾器

  • 使用布隆過濾器:

????????在緩存之前再加一個布隆過濾器,將數(shù)據(jù)庫中的所有key都存儲在布隆過濾器中,在查詢Redis前先去布隆過濾器查詢 key 是否存在,如果不存在就直接返回,不讓其訪問數(shù)據(jù)庫,從而避免了對底層存儲系統(tǒng)的查詢壓力。

  • 布隆過濾器的設(shè)計實現(xiàn)原理

????????如果數(shù)據(jù)比較少,可以把數(shù)據(jù)庫中的數(shù)據(jù)全部放到內(nèi)存的一個map中。這樣能夠非??焖俚淖R別,數(shù)據(jù)在緩存中是否存在。如果存在,則讓其訪問緩存。如果不存在,則直接拒絕該請求。但如果數(shù)據(jù)量太大,全都放到內(nèi)存中,會占用太多的內(nèi)存空間。因此要使用布隆過濾器。

????????布隆過濾器的底層使用bit數(shù)組存儲數(shù)據(jù),該數(shù)組中的元素默認值為0。布隆過濾器第一次初始化的時候,會把數(shù)據(jù)庫中所有已存在的key,經(jīng)過一些列的hash算法(比如:三次hash算法)計算,每個key都會計算出多個位置,然后把這些位置上的元素值設(shè)置成1。之后,有用戶key請求過來的時候,再用相同的hash算法計算位置。

  • 如果多個位置中的元素值都是1,則說明該key在數(shù)據(jù)庫中已存在。這時允許繼續(xù)往后面操作。
  • 如果有1個以上的位置上的元素值是0,則說明該key在數(shù)據(jù)庫中不存在。這時可以拒絕該請求,而直接返回。

????????但若布隆過濾器中存儲的數(shù)據(jù)量過大,會出現(xiàn)誤判的情況,即:原本這個key在數(shù)據(jù)庫中是不存在的,但布隆過濾器確認為存在。同時如果數(shù)據(jù)庫中的數(shù)據(jù)更新了,需要同步更新布隆過濾器。但它跟數(shù)據(jù)庫是兩個數(shù)據(jù)源,就可能存在數(shù)據(jù)不一致的情況。因此需要及時同步更新修改的內(nèi)容。

誤判率:數(shù)組越小誤判率就越大,數(shù)組越大誤判率就越小,但是同時帶來了更多的內(nèi)存消耗。

優(yōu)點:內(nèi)存占用較少,沒有多余key

缺點:實現(xiàn)復(fù)雜,存在誤判

????????如何選擇:針對一些惡意攻擊,攻擊帶過來的大量key是隨機,那么我們采用第一種方案就會緩存大量不存在key的數(shù)據(jù)。那么這種方案就不合適了,我們可以先對使用布隆過濾器方案進行過濾掉這些key。所以,針對這種key異常多、請求重復(fù)率比較低的數(shù)據(jù),優(yōu)先使用第二種方案直接過濾掉。而對于空數(shù)據(jù)的key有限的,重復(fù)率比較高的,則可優(yōu)先采用第一種方式進行緩存。

2. 緩存雪崩及解決方案

????????緩存雪崩是指在同一時段大量的緩存key同時失效或者Redis服務(wù)宕機,導(dǎo)致大量請求到達數(shù)據(jù)庫,帶來巨大壓力。

解決方案:

方案一:均勻過期

????????設(shè)置不同的過期時間,讓緩存失效的時間盡量均勻,避免相同的過期時間導(dǎo)致緩存雪崩,造成大量數(shù)據(jù)庫的訪問。如把每個Key的失效時間都加個隨機值,setRedis(Key,value,time + Math.random() * 10000);,保證數(shù)據(jù)不會在同一時間大面積失效。

方案二:構(gòu)建緩存高可用集群(針對緩存服務(wù)故障情況)

方案三:服務(wù)熔斷、限流、降級等措施保障。

3. 緩存擊穿及解決方案

????????緩存擊穿跟緩存雪崩有點類似,緩存雪崩是大規(guī)模的key失效,而緩存擊穿是某個熱點的key失效,大并發(fā)集中對其進行請求,就會造成大量請求讀緩存沒讀到數(shù)據(jù),從而導(dǎo)致高并發(fā)訪問數(shù)據(jù)庫,引起數(shù)據(jù)庫壓力劇增。這種現(xiàn)象就叫做緩存擊穿。

解決方案:

方案一:互斥鎖

  • 在緩存失效后,通過互斥鎖或者隊列來控制讀數(shù)據(jù)寫緩存的線程數(shù)量,比如某個key只允許一個線程查詢數(shù)據(jù)和寫緩存,其他線程等待。這種方式會阻塞其他的線程,此時系統(tǒng)的吞吐量會下降。單機通過synchronized或lock來處理,分布式環(huán)境采用分布式鎖。

????????原理:線程1在查詢緩存發(fā)現(xiàn)未命中的情況下,獲取互斥鎖,然后查詢數(shù)據(jù)庫重建緩存數(shù)據(jù),寫入緩存后,釋放互斥鎖。在線程1重建數(shù)據(jù)的時候,線程2也未命中緩存想重建時,在獲取互斥鎖時會失敗,只能休眠一會兒再次嘗試,直至線程1完成重建緩存的流程釋放互斥鎖后,線程2再查詢緩存并命中。

優(yōu)點:強一致性(適用于嚴格要求緩存一致性的場景)

缺點:性能差

方案二

  • 熱點數(shù)據(jù)緩存永遠不過期。永不過期實際包含兩層意思:
    • 物理不過期,針對熱點key不設(shè)置過期時間
    • 邏輯過期,把過期時間存在key對應(yīng)的value里,如果發(fā)現(xiàn)要過期了,通過一個后臺的異步線程進行緩存的構(gòu)建。

????????原理:線程1在查詢緩存發(fā)現(xiàn)邏輯時間快過期時,獲取互斥鎖,然后后臺開啟一個新的線程,查詢數(shù)據(jù)庫重建緩存數(shù)據(jù),寫入緩存,重置邏輯過期時間,再釋放鎖。當(dāng)線程2在查詢緩存也發(fā)現(xiàn)邏輯時間快過期時,獲取互斥鎖失敗,此時直接從緩存中返回過期的數(shù)據(jù)。

????????優(yōu)點:可用性高,性能高

????????缺點:存在數(shù)據(jù)不一致的情況(適用于不嚴格要求緩存一致性的場景)

http://www.risenshineclean.com/news/41271.html

相關(guān)文章:

  • 西安做網(wǎng)站公無憂seo博客
  • 做網(wǎng)站需要學(xué)習(xí)多久域名被墻查詢
  • 公司網(wǎng)站制作多少錢好用的磁力搜索引擎
  • 電影網(wǎng)頁制作素材刷關(guān)鍵詞排名seo軟件
  • 網(wǎng)費一年多少錢優(yōu)化設(shè)計電子版在哪找
  • 南京做網(wǎng)站建設(shè)有哪些內(nèi)容做百度推廣多少錢
  • 東莞網(wǎng)站推廣公司建站abc官方網(wǎng)站
  • 上海網(wǎng)站設(shè)計銷售營銷方案100例
  • 項目宣傳網(wǎng)站模板百度最新版本2022
  • 做wap網(wǎng)站能火嗎合肥網(wǎng)站
  • 網(wǎng)站維護一年多少費收錄排名好的發(fā)帖網(wǎng)站
  • 網(wǎng)站地址欄圖標(biāo)制作企業(yè)高管培訓(xùn)課程有哪些
  • 做酒店管理網(wǎng)站的作用成都網(wǎng)絡(luò)推廣外包
  • wordpress 眾籌模板seo效果最好的是
  • 做百度推廣需要網(wǎng)站嗎單頁站好做seo嗎
  • 大氣網(wǎng)站背景圖怎么快速推廣自己的產(chǎn)品
  • 個人網(wǎng)站開發(fā)淘寶指數(shù)查詢官網(wǎng)
  • 個人網(wǎng)站怎么做微信支付一個企業(yè)該如何進行網(wǎng)絡(luò)營銷
  • 西安網(wǎng)站建設(shè)哪個平臺好百度搜索seo
  • 北京網(wǎng)站建設(shè)有哪些深圳搜索引擎優(yōu)化推廣
  • 有什么網(wǎng)站可以做搜索引擎調(diào)詞平臺
  • 上海建設(shè)工程造價協(xié)會官網(wǎng)班級優(yōu)化大師怎么下載
  • 網(wǎng)站建設(shè)佰首選金手指二六職業(yè)培訓(xùn)機構(gòu)哪家最好
  • 新聞網(wǎng)站如何做原創(chuàng)內(nèi)容肇慶seo外包公司
  • ??诰W(wǎng)站建設(shè)運營百度手機端排名如何優(yōu)化
  • 6黃頁網(wǎng)站建設(shè)互聯(lián)網(wǎng)公司排名2021
  • 網(wǎng)站開發(fā)日常工作廊坊seo推廣
  • wordpress調(diào)用分類圖片大小長沙靠譜的關(guān)鍵詞優(yōu)化
  • 海外域名提示風(fēng)險網(wǎng)站嗎成都網(wǎng)站seo服務(wù)
  • 濟南網(wǎng)站建設(shè)維護公司關(guān)鍵詞挖掘工具網(wǎng)站