大流量:大流量和高并發(fā)應(yīng)對手段總結(jié)
【溫馨提醒】文章內(nèi)容僅供參考,海外服務(wù)器租用\托管方案,請咨詢YINGSOO客服,24小時免費(fèi)電話400-630-3752
【熱門主機(jī)】香港主機(jī)服務(wù)器丨日本獨(dú)立服務(wù)器丨美國服務(wù)器租用丨俄羅斯服務(wù)器
【熱搜問題】海外游戲服務(wù)器租用價格多少合適?該如何選擇
大流量和高并發(fā)的常規(guī)應(yīng)對手段
擴(kuò)容、動靜分離、緩存、服務(wù)降級和限流。
限流的常用算法和實(shí)踐思路
- 目前主流的算法主要有三種:令牌桶算法、漏桶算法和計數(shù)器算法。 令牌桶算法:主要限制流量的[韓國cn2服務(wù)器]流入速率,允許出現(xiàn)一定程度的突發(fā)流量。nginx的限流模塊就是使用的這種算法實(shí)現(xiàn)的。 每秒會有r個令牌按照固定速率放入桶中。 桶的容量是固定不變的,如果桶滿了再放入令牌,則溢出。 若桶中的可用令牌不足,則改請求會被進(jìn)行限流處理(被拋棄或緩存)。 漏桶算法:主要限制流量的流出速率,并且流出速率是固定不變的 可以以任意速率向桶中流入水滴。 桶的容量是固定不變的,如果桶滿了則溢出。 按照固定的速率從桶中流出水滴。 google的guava也實(shí)現(xiàn)了基于令牌桶算法那樣的平均速率限流,RateLimiter抽象類。 nginx可以使用限流模塊在接入層實(shí)現(xiàn)令桶牌算法限流, limit_zone 定義每個ip的session空間大小。 limit_zeq_zone定義每個ip每秒允許發(fā)起的請求數(shù)。 limit_conn 定義每個ip能夠發(fā)起的并發(fā)連接數(shù)。 limit_req 等待處理的請求隊列數(shù)量。 生產(chǎn)環(huán)境中的商品搶購可以使用計數(shù)器算法,具體不同的sku限流規(guī)則配置在配置中心內(nèi),支持動態(tài)更改??蓳屬彺螖?shù)的扣減操作,既可以用redis,也可以用JVm。如果是集群并且選擇用JVm,則要根據(jù)總并發(fā)數(shù)量除以集群數(shù)量,得出單臺機(jī)器的并發(fā)數(shù)。(比如總并發(fā)數(shù)5000,集群機(jī)器10臺,則每臺機(jī)器的并發(fā)為5000/10=500)。
搶購商品高并發(fā)讀需求
對于一件搶購商品的流量來說,因?yàn)閗ey是同一個,所以流量必然會都引入到同一個redis緩存節(jié)點(diǎn)中,這時就容易出現(xiàn)單點(diǎn)故障。因此有下面兩種解決方式: 1. 在每個master節(jié)點(diǎn)都掛slave從節(jié)點(diǎn),當(dāng)主節(jié)點(diǎn)掛了可以自動頂上。 2. 多級cache方案,多用Localcache來過濾掉一部分流量。 - 本地緩存一般只緩存一些熱點(diǎn)商品數(shù)據(jù),緩存內(nèi)容一般是商品詳情和商品庫存。 - 本地緩存跟分布式緩存的同步一般有兩種方式:一種是定時主動拉取更新策略。這種會存在一定時間的不一致,要視業(yè)務(wù)情況而定,例如庫存,暫時的不一致導(dǎo)致超賣,單到真正下單的時候還會再進(jìn)行庫存的判斷,所以影響較小,可以接受。這種方式要注意關(guān)掉緩存的定時失效,防止當(dāng)用戶流量突然過大,都到分布式緩存中拉取數(shù)據(jù);第二種方式是每次商品更新,都發(fā)布一個消息,訂閱此消息的節(jié)點(diǎn)監(jiān)聽到后再更新本地緩存的內(nèi)容。
實(shí)時熱點(diǎn)自動發(fā)現(xiàn)方案
可以將交易系統(tǒng)產(chǎn)生的相關(guān)數(shù)據(jù),以及在上游系統(tǒng)中埋點(diǎn)上報的相關(guān)數(shù)據(jù)異步寫入日志系統(tǒng)中,然后通過實(shí)時熱點(diǎn)自動發(fā)現(xiàn)平臺對收集到的日志數(shù)據(jù)做調(diào)用次數(shù)統(tǒng)計和熱點(diǎn)分析。數(shù)據(jù)符合熱點(diǎn)條件后,就立即通知交易系統(tǒng)做好熱點(diǎn)保護(hù)。
redis使用watch命令實(shí)現(xiàn)高并發(fā)搶購需求
- 一般高并發(fā)這里,不用悲觀鎖,會迅速增加系統(tǒng)資源;而使用隊列,容易造成請求堆積,內(nèi)存效果過快。所以一般使用樂觀鎖,可以用redis的watch命令實(shí)現(xiàn)。 watch命令會監(jiān)視給定的key,當(dāng)exec時,如果監(jiān)視的key從調(diào)用watch后發(fā)生過變化,則事務(wù)會失敗。注意watch的可以是對整個連接有效的,事務(wù)也一樣。如果連接斷開,監(jiān)視和事務(wù)都會被自動清除。當(dāng)然exec,discard,unwatch命令都會清[韓國云主機(jī)租用]除連接中的所有監(jiān)視。
緩存雪崩,緩存穿透,緩存并發(fā),緩存預(yù)熱,緩存算法
- 緩存雪崩:可能是因?yàn)閿?shù)據(jù)未加載到緩存中,或者緩存同一時間大面積的失效,從而導(dǎo)致所有請求都去查數(shù)據(jù)庫,導(dǎo)致數(shù)據(jù)庫cpU和內(nèi)存負(fù)載過高,甚至宕機(jī)。解決思路: 加鎖計數(shù)(即限制并發(fā)的數(shù)量,可以用semphore)或者起一定數(shù)量的隊列來避免緩存失效時大量請求并發(fā)到數(shù)據(jù)庫。但這種方式會降低吞吐量。 分析用戶行為,然后失效時間均勻分布。或者在失效時間的基礎(chǔ)上再加1~5分鐘的隨機(jī)數(shù)。 如果是某臺緩存服務(wù)器宕機(jī),則考慮做主備。 緩存穿透:指用戶查詢數(shù)據(jù),在數(shù)據(jù)庫沒有,自然在緩存中也不會有。這樣就導(dǎo)致用戶查詢的時候,在緩存中找不到,每次都要去數(shù)據(jù)庫中查詢。解決思路: 如果查詢數(shù)據(jù)庫也為空,直接設(shè)置一個默認(rèn)值存放到緩存,這樣第二次到緩沖中獲取就有值了,而不會繼續(xù)訪問數(shù)據(jù)庫。設(shè)置一個過期時間或者當(dāng)有值的時候?qū)⒕彺嬷械闹堤鎿Q掉即可。 可以給key設(shè)置一些格式規(guī)則,然后查詢之前先過濾掉不符合規(guī)則的Key。 緩存并發(fā):如果網(wǎng)站并發(fā)訪問高,一個緩存如果失效,可能出現(xiàn)多個進(jìn)程同時查詢db,同時設(shè)置緩存的情況,如果并發(fā)確實(shí)很大,這也可能造成db壓力過大,還有緩存頻繁更新的問題。解決思路: 對緩存查詢加鎖,如果KeY不存在,就加鎖,然后查db入緩存,然后解鎖;其他進(jìn)程如果發(fā)現(xiàn)有鎖就等待,然后等解鎖后返回數(shù)據(jù)或者進(jìn)入db查詢。 緩存預(yù)熱:目的就是在系統(tǒng)上線前,將數(shù)據(jù)加載到緩存中。解決思路: 數(shù)據(jù)量不大的話,在系統(tǒng)啟動的時候直接加載。 自己寫個簡單的緩存預(yù)熱程序。 緩存算法: FiFo算法:First in First out,先進(jìn)先出。原則:一個數(shù)據(jù)最先進(jìn)入緩存中,則應(yīng)該最早淘汰掉。也就是說,當(dāng)緩存滿的時候,應(yīng)當(dāng)把最先進(jìn)入緩存的數(shù)據(jù)給淘汰掉。 LFU算法:Least Frequently Used,最不經(jīng)常使用算法。 LRU算法:Least Recently Used,近期最少使用算法。 LRU和LFU的區(qū)別。LFU算法是根據(jù)在一段時間里數(shù)據(jù)項被使用的次數(shù)選擇出最少使用的數(shù)據(jù)項,即根據(jù)使用次數(shù)的差異來決定。而LRU是根據(jù)使用時間的差異來決定的。
協(xié)程(纖程)Fiber
- 協(xié)程概念:一種用戶態(tài)的輕量級線程,其實(shí)就是單線程,指定執(zhí)行整個函數(shù)中到一部分然后就先出去執(zhí)行別的,等條件滿足時,協(xié)程下次更新幀到了再繼續(xù)往下執(zhí)行。優(yōu)點(diǎn)是無需線程上下文切換的開銷,充分開發(fā)了單cpU的能力,資源占用低,適合高并發(fā)i/o。缺點(diǎn)也很明顯,就是沒辦法利用多cpU的優(yōu)勢。 框架:Quasar,調(diào)度器使用ForkJoinpool來調(diào)度這些fiber。Fiber調(diào)度器Fiberscheduler是一個高效的、work-stealing、多線程的調(diào)度器。 場景:服務(wù)A平時需要調(diào)用其他服務(wù),但其他服務(wù)在并發(fā)高的時候延遲很嚴(yán)重。 一開始可以用httpclient連接池+線程池來處理,但如果調(diào)用服務(wù)的時候延遲太高或者超時,則會導(dǎo)致服務(wù)A的吞吐量會特別差。原因主要是一般一個鏈接由一個線程來處理,是阻塞的,所以在線程池數(shù)有限的情況下,吞吐量肯定上不去。并且當(dāng)所有線程都i/o阻塞的時候,會很浪費(fèi)cpU資源,并且cpU會一直做無用的上下文切換。 這時候可以考慮協(xié)程來替換。
ForkJoinpool線程池
- Fork/Join框架是Java7提供了的一個用于并行執(zhí)行任務(wù)的框架,是一個把大任務(wù)分割成若干個小任務(wù),最終匯總每個小任務(wù)結(jié)果后得到大任務(wù)結(jié)果的框架。 工作竊?。╳ork-stealing)算法是Fork/Join框架最重要的特性。一般一個線程會對應(yīng)一個任務(wù)隊列,當(dāng)處理較快的線程處理完自己的任務(wù)之后,就會竊取另外一個處理比較慢的線程對應(yīng)的任務(wù),這時候會存在兩個線程同時處理一個隊列的情況,所以任務(wù)隊列一般使用雙端隊列,被竊取任務(wù)線程永遠(yuǎn)從雙端隊列的頭部拿任務(wù)執(zhí)行,而竊取任務(wù)的線程永遠(yuǎn)從雙端隊列的尾部拿任務(wù)執(zhí)行。優(yōu)點(diǎn)是充分利用線程進(jìn)行并行計算,并減少了線程間的競爭。
本公司在全球超過120個國家部署數(shù)據(jù)中心,提供海外全球多個國家服務(wù)器租用,所有服務(wù)器均可根據(jù)需求配置大帶寬大流量,美國g口獨(dú)享大帶寬服務(wù)器,從此告別網(wǎng)絡(luò)擁堵;
香港云服務(wù)器速度快又便宜
[CDN視頻存儲] 關(guān)于租借大陸周邊海外服務(wù)器建立網(wǎng)站的站長朋友中,因?yàn)樾枰WC網(wǎng)站的性價比和速度要兼顧,而且還要保證數(shù)據(jù)的安全性,所以許多站長都會挑選香港vps主機(jī)布置網(wǎng)站,那么為何香港vps主機(jī)更適合針對大陸地區(qū)流量的網(wǎng)站呢,這兒依據(jù)功能和安全等幾個方面進(jìn)行介紹。
1.直連線路在海外的vps中,不少站長之所以挑選香港vps主機(jī)的話,自然因?yàn)橄愀踲ps主機(jī)擁有直連線路,因?yàn)橄愀踲ps主機(jī)是布置在香港機(jī)房的,所以接入的線路和物理服務(wù)器是一樣的,而有資質(zhì)的香港vps主機(jī)機(jī)房還供給CN2直連線路,所以假如首要來歷是來自我國大陸地區(qū)的話主張?zhí)暨x能夠供給雙線直連的專業(yè)機(jī)房,這樣才干保證數(shù)據(jù)的安穩(wěn)。租借香港vps主機(jī)建立網(wǎng)站快速又便宜-五九
2.無需備案租借香港云vps主機(jī)由所以海外服務(wù)器所以本身是不需要走備案流程的,所以不少站長朋友關(guān)于在建立網(wǎng)站的過程中關(guān)于域名備案所帶來的時間本錢,這份擔(dān)心是不需要的。在挑選香港vps主機(jī)的時分根本都是即開即用所以無論是用來建立網(wǎng)站仍是用來布置事務(wù)都是比較便利的。
3.彈性晉級租借香港vps主機(jī)相關(guān)于普通物理服務(wù)器最大的優(yōu)勢便是能夠支撐定制化的配置挑選,無論是從CPU的核心數(shù)仍是內(nèi)存容量乃至是帶寬都可以依據(jù)自己的事務(wù)需求進(jìn)行配置,因?yàn)橛行┦聞?wù)關(guān)于硬件配置的變動比較大,相關(guān)于物理服務(wù)器而言,牢靠的vps能夠充沛下降這些事務(wù)的時間本錢。
4.服務(wù)牢靠不少用戶都會擔(dān)心一旦vps呈現(xiàn)故障的話是不是只能通過網(wǎng)頁控制后臺才干夠處理,這一點(diǎn)徹底不必?fù)?dān)心,因?yàn)楝F(xiàn)在首要的vps假如遇到問題的話,人工處理仍是更為有效率,例如不少聞名的香港vps主機(jī)服務(wù)商(例如本公司)還供給24小時的在線運(yùn)維服務(wù),讓您省去網(wǎng)頁后臺使用的學(xué)習(xí)本錢,供給更為高效的服務(wù)。租借香港vps主機(jī)要挑選合適的香港vps主機(jī)服務(wù)商,例如全國數(shù)據(jù)香港vps主機(jī)就供給專業(yè)的香港vps主機(jī)租借服務(wù),功能安穩(wěn)牢靠,支撐動態(tài)彈性晉級,支撐winlinux等常見[超值低價高配服務(wù)器選哪家好]所有系統(tǒng)系統(tǒng)兼容。
YINGSOO熱線:400 630 3752
熱門文章:【德國服務(wù)器好用嗎】【服務(wù)器日本的哪個快】【服務(wù)器一個月多少錢】【已完成工商變更】【荷蘭高防服務(wù)器為什么很受歡迎】【香港遠(yuǎn)程控制服務(wù)器是如何使用的】【香港cn2線路能快多少】【美國服務(wù)器托管和租用哪個好】【香港機(jī)房】【云主機(jī)還是服務(wù)器好】【日本服務(wù)器租用】【香港站群服務(wù)器為什么大受歡迎】【租用香港服務(wù)器之前你需要知道哪些事情】【如何用代理服務(wù)器上網(wǎng)】【香港云主機(jī)高防如何看】【抖音服務(wù)器】【香港vps是什么意思】【臺灣中華電信擬8.4億參建3條國際海纜】【韓國vps怎么樣】【怎么知道一個服務(wù)器放多少網(wǎng)站】【香港高防】【服務(wù)器風(fēng)險】【日本云服務(wù)器上的數(shù)據(jù)安全怎么維護(hù)】【外國服務(wù)器購買】【美國云主機(jī)服務(wù)器vps哪家好】【虛擬服務(wù)器】【河南服務(wù)器托管過程中常見故障的問題】【云防護(hù)高防服務(wù)器】【香港dns服務(wù)器是什么】【關(guān)系型數(shù)據(jù)庫】
YINGSOO日本獨(dú)享主機(jī)3天免費(fèi)試用,海外云主機(jī)品牌
好網(wǎng)絡(luò),不怕曬!日本獨(dú)享主機(jī)免費(fèi)試用,獨(dú)享控制面板,海外云服務(wù)品牌2019年日本獨(dú)享主機(jī)銷量再度破表,1200家企業(yè)共同選擇,高達(dá)95%的續(xù)約率
http://www.sddonglingsh.com/products/cloud-jp.html
YINGSOO日本主機(jī)租用商3天免費(fèi)試用,海外云主機(jī)品牌
好網(wǎng)絡(luò),不怕曬!日本主機(jī)租用商免費(fèi)試用,獨(dú)享控制面板,海外云服務(wù)品牌2019年日本主機(jī)租用商銷量再度破表,1200家企業(yè)共同選擇,高達(dá)95%的續(xù)約率
http://www.sddonglingsh.com/products/cloud-jp.html
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。