百度如何優化多數據中心的帶寬成本?(1)
2016-02-20 19:34:02 來源: 熊亞軍 高效運維 評論:0 點擊:
作者介紹
熊亞軍,目前在百度負責 IT (網絡、服務器)設備監控平臺研發。
主題簡介
本文將主要從以下幾個部分同大家探討:
1.多數據中心的特點及計費模式
2.數據中心的外網流量特點
3.外網流量優化的困難和挑戰
4.如何更充分利用付費帶寬
5.未來展望思考
一、多數據中心的特點及計費模式
背景:隨著互聯網業務的快速發展,大型互聯網公司數據中心的數量和網絡復雜程度也在急速上升。
多數據中心的網絡
和Google 的網絡類似,大型互聯網企業的網絡一般可以分為:
◆數據中心內部網絡(Data Center Networks)
◆WAN網(即Wide Area Networks)
其中, 按照流量的方向,可將WAN網分為兩張骨干網:
◆內網:數據中心之間互聯的網絡(Inter-DC WAN,類似Google B4),用來連接互聯網企業在地理上分布的多個數據中心。
◆外網:面向Internet用戶訪問的網絡(Internet-Facing WAN),用來提供面向用戶的云服務,如搜索、視頻、下載。
帶寬的計費模式
互聯網企業的外網(Internet-Facing WAN)需要向運營商支付高額的費用。
并且,隨著云服務的蓬勃發展,Internet用戶數量和流量的急劇增加,網絡容量也從數年前的10G快速增長到1T,10T甚至更大。
在數據中心的成本中,外網的帶寬費用越來越引起關注。其中,常見的外網計費模式有以下幾個:
1.峰值計費:對數據中心出口的帶寬周期(如5分鐘)采樣,按照一個月的最大帶寬采樣值進行計費。大多數數據中心都采用峰值計費的收費模式。
2.95計費:同樣進行周期采樣,去掉最大5%的采樣點,按照剩下的最大帶寬采樣值進行計費。
3.日均峰值計費:同樣進行周期采樣,每天有一個帶寬峰值,按照一個月內每天的帶寬峰值的均值進行計費。
二、數據中心的外網流量特點
一個簡單的峰值計費例子
峰值計費模式下,根據數據中心一個月的出口帶寬峰值進行收費。
如下圖所示,為某互聯網公司數據中心的流量圖,這個數據中心在第一天的夜里22點到達峰值,依據該點的帶寬峰值進行計費。
很顯然,在非峰值時刻,該數據中心可以(免費的)使用更多流量。
如下圖的綠色部分,我們將數據中心能免費使用的流量稱為該數據中心的空閑帶寬。
在峰值計費的收費模式下,每個數據中心都有可觀的空閑帶寬,而這些帶寬并沒有被充分的利用起來。
特別的,某些特殊的日子會導致非常高的流量峰值,如京東618、雙十一或某部熱門劇集發布。
數據中心在這個月其它時間的帶寬值都遠遠小于流量峰值,存在大量空閑帶寬。
一個日均峰值計費例子
有些數據中心采用日均峰值計費的模式。
和峰值計費類似,日均峰值的數據中心也有大量空閑帶寬沒有被充分利用起來。
如下某互聯網公司數據中心的流量圖中,非當日峰值的時刻,這個數據中心的流量遠小于當日的峰值,也存在非常可觀的空閑帶寬。
三、外網流量優化的困難和挑戰
由于峰值計費的收費模式,每個數據中心經常存在非常可觀的空閑帶寬,我們希望可以充分利用這些免費的空閑帶寬,進而優化外網流量。
然而,面臨以下這些困難和挑戰:
1.面向Internet用戶流量的實時性
從上面的數據中心流量圖可以看到外網流量的波動規律。
例如,一般早上6點左右處于流量的波谷,在晚上到達流量的波峰。
一個直觀的想法是將波峰的流量遷移到波谷,那么自然能極大的降低計費的流量值,從而降低付給運營商的帶寬費用。
但是,面向Internet用戶的流量是實時的,不可能將用戶在晚上10點的觀看視頻產生的流量延后或提前到早上。
更不用說其它實時性要求非常高的業務,如搜索、SNS、網購、游戲等。
2.流量峰值的不確定性
上面的例子中,事先給出了數據中心的計費帶寬值,然后再計算出數據中心在其它時刻的空閑帶寬。
然而在實際中,我們難以事先得知這個月的哪個時刻到達計費峰值以及計費峰值是多少,也就難以計算該數據中心當前可以免費的接納多少流量。
此外,常見的外網流量調度方式是修改DNS的配置,這存在一定的延時(新的用戶請求到來才會改變當前的流量分布)。
然而,由于大規模用戶行為存在一定的規律,從上面的流量圖中,可以直觀的看到數據中心每天的流量圖存在一定的重復性和規律性。
并且已有成熟的機器學習模型和研究工作,可對流量進行較為準確的預測。我們可以基于預測的流量值,計算數據中心未來(較短的)一段時間內的空閑帶寬。
四、如何更充分利用付費帶寬
接下來我們考慮如何充分利用各數據中心的空閑帶寬,從而更充分的利用付費帶寬。
1.減少其它峰值計費DC的付費帶寬
上圖是兩個DC的帶寬曲線,其中:DC1在下午4時到達峰值,DC2在晚上23時到達峰值。
可以看到,在下午4時,DC2沒有到達峰值,具有一定的空閑帶寬。
這時,可將DC1的部分流量調度到DC2;晚上23時再將DC2的部分流量調度到DC1。
這樣簡單的流量調度,可以同時降低這一天DC1和DC2的流量峰值,從而降低了付給運營商的帶寬費用。
當數據中心數量較多,并且不同數據中心部署用戶行為差異較大的業務時,通過設計合適的流量調度算法,能大幅度的降低多數據中心的外網付費帶寬。
這個調度方式存在一定的局限性:不同數據中心到達計費峰值的時刻比較接近;特別是部署相同業務的數據中心,或舉辦網絡活動導致流量特別高的時候,所有的數據中心差不多同時到達這個月的流量峰值。此時沒有數據中心存在空閑帶寬,可用于接納其它數據中心計費峰值的流量。
2.減少其它日均峰值計費DC的付費帶寬
我們用上述峰值計費模式DC的空閑帶寬來接納日均峰值計費模式DC的流量,優化后的流量圖如下圖所示:
可以看到日均峰值計費模式DC每天的計費帶寬值都有一定的減小。
不同于峰值計費的DC,日均峰值計費DC任何一天的計費帶寬值的減小,都能減小這個月需要支付給運營商的帶寬成本。
即使某一天所有DC都同時到達這個月的峰值,但這個月的其它天里,存在DC能接納該日均值計費DC的峰值流量,就能降低該DC的帶寬成本。
因此,降低日均峰值計費DC的付費帶寬,一定程度上放寬了流量調度的局限性的限制。
3.利用外網空閑帶寬進行內網流量的傳輸
利用多數據中心的空閑帶寬來動態的減少(峰值計費或日均峰值計費模式)數據中心的帶寬成本,都只用到了忙時(如上午11點到凌晨0點)的空閑帶寬。
顯然,數據中心忙時的空閑帶寬很小,大部分的空閑帶寬都集中在閑時(凌晨0點到上午10點)。
而這時用戶訪問產生的外網流量也很小,不能利用這時的大量空閑帶寬。
分布式存儲系統、云服務和搜索等業務,需要利用內網進行實時性要求不高的傳輸作業。
這些作業產生的背景流(Background Flow)占用了大量的內網帶寬資源。
利用數據中心閑時的大量空閑外網帶寬資源,進行可容忍延時的內網作業的傳輸,能有效的降低內網鏈路擁塞和帶寬資源緊缺的狀況。
需要注意的是,相對內網來說,外網的延遲和丟包比較嚴重。利用外網空閑帶寬傳輸內網流量時,要將內網和外網統一調度,并充分考慮外網的傳輸性能,以免影響內網作業的性能。
五、后續展望
通過多數據中心的外網流量調度來優化計費帶寬成本,存在一定的局限性,并且不能充分利用數據中心閑時的大量空閑帶寬資源。
此外,利用外網空閑帶寬進行內網流量的傳輸,需要考慮內外網統一配合以及外網傳輸質量等問題。
總的來說,多數據中心的外網流量調度存在諸多困難。然而,外網帶寬的巨大成本值得去直面并一一解決這些困難。
如何一起愉快地發展
“高效運維”公眾號(如下二維碼)值得您的關注,作為高效運維系列微信群的唯一官方公眾號,每周發表多篇干貨滿滿的原創好文:來自于系列群的討論精華、運維講壇線上精彩分享及群友原創。“高效運維”也是互聯網專欄《高效運維最佳實踐》及運維2.0官方公眾號。
提示:目前高效運維新群已經建立,歡迎加入。您可添加蕭田國個人微信號xiaotianguo8 為好友,進行申請,請備注“申請入群”。
重要提示:除非事先獲得授權,請在本公眾號發布2天后,才能轉載本文。尊重知識,請必須全文轉載,并包括本行。
【編輯推薦】
