成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

海量數據處理之系統過載保護

開發 開發工具
剛好本文作者在處理系統請求過載的問題,把自己的一些心得體會總結出來拿來與大家一起探討。

前段時間在網上看到騰訊后臺開發總監bison分享的一篇文章《淺談過載保護》,讀來受益匪淺。剛好自己也在處理系統請求過載的問題,把自己的一些心得體會總結出來拿來與大家一起探討。

在bison的文章中談到:對于延時敏感的服務,當外部請求超過系統處理能力,如果系統沒有做相應保護,可能導致歷史累計的超時請求達到一定的規模,像雪球一樣形成惡性循環,由于系統處理的每個請求都因為超時而無效,系統對外呈現的服務能力為0,且這種情況不能自動恢復。我們的系統就是要盡量避免這種情況的出現,下面將詳細來分析一個現實中的案例。

一  有過載問題的系統

 

數據處理流程:

       1) 前端將請求發送給數據解析及轉發系統,

       2)數據解析及轉發系統將封裝好的數據發送后臺數據請求,設置超時時間(假設300ms),線程同步等待處理結果從后臺返回。

      3)在300ms內正確返回結果后,則將處理的結果返回給前端,如果在300ms內超時,則將數據發送到一次超時處理系統(假設設置超時時間500ms),線程同步等待結果返回。

      4)在500ms內正確返回結果后,則將處理的結果返回給前端,如果再一次超時,返回一個默認的處理結果給前端,后端對數據進行本地化,然后可以將數據發送到離線處理系統進行二次處理。

       數據解析的機器為多核,數據解析及轉發系統采用的是單進程多線程模型,在前一篇文章《海量數據處理系列之Java線程池使用》詳細描述了多線程處理的實現,采取的是無界隊列線程池的實現,這樣從客戶端來的請求,會被這樣處理:

      1)  如果線程池中有空閑線程,會將請求直接交給線程處理。

      2)  如果沒有空閑線程,就將請求保存到任務隊列。

假設開50個線程,每個線程秒平均處理一個請求,那么系統每秒可以處理的最大請求數是50個。一旦前端數據請求超過50個每秒,在任務隊列中將會堆積大量的請求,前臺不斷發送過來,后來處理不過來,前端又設置了套接字超時,導致隊列中的大量請求超時,直接使得后端線程從隊列中取出套接字解析的時候,套接字已經被前臺關閉了,引發I/O異常。堆積的量一旦雪崩,將使前臺發送過來的請求全部I/O異常,后臺處理系統跟掛掉無異了。

二  相對完善的系統

 

在上面的系統中,對請求是來者不拒的狀態,具體來講就是將所有的請求都保存到任務隊列。請求堆積到一定程度,隊列中的很多請求都超時,這是可以采取清空請求隊列的方式,這個可以通過采取一定的監控方式來實現。例如上圖中的心跳監控模塊,它可以通過這樣的方式來實現,就是模擬客戶端的請求,每隔一定時間發送一些請求過去,如果有大部分都正常返回,說明后端處理系統正常;當出現大部分超時的時候,說明后臺系統已經掛掉了,這時候重啟數據解析及轉發系統,清空系統中的任務請求隊列,這樣可以暫時處理請求高峰期的情況。

但是這個方式也是治標不治本的,后臺最多只能處理這么多請求,重啟后照樣會導致大量堵塞導致系統又掛掉,然后監控系統又重啟,這樣會使得很多的請求沒有得到有效的處理,大大降低系統的處理能力。為了保證后臺系統每時每刻都最大限度的發揮自己的處理能力,當負載超過系統自身的處理能力時,拒絕該請求。拒絕后可以將該請求本地系列化,保存相關的數據發送到離線數據處理系統進行處理。

在前一篇文章《海量數據處理系列之Java線程池使用》第四節中有界隊列線程池使用中有提到這種方式的具體實現。以上面的系統為例,有界線程池可以這樣配置,corePoolSize為30,maximumPoolSize為50,有界隊列為ArrayBlockingQueue<Runnable>(100)。這樣系統在處理請求的時候采用如下策略:

1) 當一個請求過來,線程池開啟一個線程來處理,直到30個線程都在處理請求。

2) 當線程池中沒有空閑線程了,就將請求添加到有界隊列當中,直到隊列滿為止。

3) 當隊列滿以后,在開啟線程來處理新的請求,直到開啟的線程數達到maximumPoolSize。

4) 當開啟的線程數達到maximumPoolSize后,任務隊列又已經滿了后,此時再過來的請求將被拒絕,被拒絕的請求在本地系列化,將保存的數據同步到離線數據系統進行處理。

        海量數據處理都是采用分布式的,每臺機器的處理能力有限,可以將請求分布到不同的機器上去。如果每臺機器被拒絕的請求數過多的時候,就要考慮添加處理的機器了。

 

原文鏈接:http://www.cnblogs.com/cstar/archive/2012/06/25/2561388.html

【編輯推薦】

  1. 系統架構師談企業應用架構之開卷有益
  2. 系統架構師談企業應用架構之系統建模1
  3. 系統架構師談企業應用架構之系統建模2
  4. 系統架構師談企業應用架構之系統建模3
  5. 系統架構師談企業應用架構之系統建模4
  6. 系統架構師談企業應用架構之系統設計規范與原則1
  7. 系統架構師談企業應用架構之系統設計規范與原則2
  8. 系統架構師談企業應用架構之業務邏輯層

 

 

責任編輯:彭凡 來源: 博客園
相關推薦

2011-08-18 09:43:45

Bloom Filte海量數據

2011-08-19 13:28:25

海量數據索引優化

2024-02-07 09:25:52

數據處理快手大模型

2024-06-19 21:12:02

2023-11-29 13:56:00

數據技巧

2023-10-05 12:43:48

數據處理

2012-02-22 15:32:11

海量數據

2014-08-14 10:10:34

設計模式熔斷器

2010-09-06 09:24:56

網格數據庫

2019-08-19 18:42:43

大數據海量數據

2017-10-18 13:31:56

存儲超融合架構數據中心

2016-06-16 10:52:25

IBM

2022-06-28 13:41:43

京東數據處理

2019-06-12 16:21:52

時間序列PythonPandas

2013-10-12 16:53:46

SAP

2018-11-23 17:33:42

阿里云SQL Server 集群版

2022-08-26 05:18:30

分布式系統數據處理

2011-08-18 10:20:26

云計算國家統計局大數據

2012-05-18 14:19:08

達夢DM7.0海量數據
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美性猛片aaaaaaa做受 | 久草青青草 | 日韩免费一区二区 | 久久中文一区二区 | 夜夜骑天天干 | 色爱综合网 | 91久久精品国产91久久性色tv | 欧美一区二区三 | 欧美一二三 | 日韩成人 | 色婷婷av久久久久久久 | 国产一区二区三区免费观看视频 | 91黄色免费看 | 麻豆av免费观看 | 最新av片| 国产精品99久久久久久久久久久久 | av片毛片 | 中文字幕 国产 | 一区二区免费看 | 欧美三级视频在线观看 | 九九久久精品 | 伊人久久综合 | 国产精品区二区三区日本 | 欧美亚州综合 | 精品欧美一区二区三区久久久 | 国产一区二区观看 | 伊人激情综合网 | 久久久久久国产精品 | 国产精品成人品 | 国产精品久久国产精品 | 中文字幕免费视频 | 中文字幕av在线播放 | 亚洲视频精品在线 | 国产激情在线 | 97在线播放| 毛片在线免费 | 成人久草 | 色婷婷综合久久久中字幕精品久久 | 日韩欧美一区二区三区在线播放 | 国产日韩视频在线 | 91精品国产一区二区三区 |