SpeedyCloud研发总监李孟:不要让底层细节被上层打败
隨著互聯網的發展,對于現代企業來說,DNS與CDN服務的作用正變得愈發重要,網絡訪問速度決定了前端客戶體驗,同時也影響著內部業務系統的運行。SpeedyCloud作為一家新晉IaaS云服務供應商,在DNS與CDN方面同樣擁有豐富的實踐經驗。今年QCon上海2015上,SpeedyCloud研發總監李孟作為大會演講嘉賓,分享了CDN服務設計開發實踐的心得體會。為了進一步了解技術人在這些研發工作背后的故事,InfoQ專門現場采訪了李孟。
\\InfoQ:您在CDN領域的經驗已經超過7年,當時是什么原因進入這個領域的呢?
\\\李孟:進入這個領域完全是因為巧合。剛入職的前兩個月,還沒有建立比較明確的目標,而公司也沒有相應的軟件基礎,只能靠自己去摸索。當時的困難在于,自己只有一些運維經驗,并沒有相應研發經驗,而且所使用的開源軟件也比較復雜。CDN與DNS業務的研發既要保證穩定性,同時又要保證兼容性,還要完成對整個業務線的不間斷支撐。
\\\InfoQ:當時在自行研發的過程當中是如何進行考慮與選擇的?
\\\李孟:那時選擇了BIND。DNS畢竟是個輕量級的服務,其開發量并不是很大。但在當時BIND已經發布8年時間了,因為在開發過程中不斷地打補丁,其可讀性已經變得非常糟糕,另外為了照顧DNS所有業務的性能,那么代碼的可讀性就會變得更差。
\\如何讓整個DNS系統上下游無縫融合在一起?這個問題上我考慮了很長時間,這需要理清DNS在實際應用場景中的使用過程,需要結合CDN的應用場景,明確應該怎樣運作,所含的路徑有哪些等問題。之后還要將互聯網協議和真實的運行環境結合在一起,這樣在業務最終上線的時候,才能夠實現良好的效果。
\\\InfoQ:在這次QCon上海中您的演講主題是選型方向的,出于什么考慮而安排這樣的演講主題呢?
\\\李孟:首先是讓大家了解CDN的技術概念,另外一個原因是想要帶領大家思考CDN對于云計算平臺來說充當了什么樣的角色。因為如果CDN流量調度不當的話,就會導致設備上的流量抖動異常,這對于承載CDN業務的云平臺也是非常不利的。
\\流量調度說起來是個很寬泛的概念,如果能用DNS將流量調度表達好,就意味著后續的動態調度和靜態調度也將會相對容易一些。因此希望能夠借助QCon的機會分享CDN領域里的一些重要經驗。
\\\InfoQ:技術工具有理論性能,但是實際用到生產環境中就是另外一回事了。對此您有什么看法?
\\\李孟:之所以進行定制開發,性能上的差異是一個重要原因。性能上不達標,那么實際的表現就會跟測試時的差距比較大了。
\\另外,開源DNS方案的功能相對比較可靠,但也會有一些差異,比如只能做地域性切割,只能做流量均分,因此某些場合下就沒辦法直接用開源軟件。否則一旦流量出現大幅度抖動,后臺承載業務的云主機,就將受到沖擊。因為這意味著需要采購更多的云服務資源,或者配置要更多的硬件設備,但這些資源的有效利用率并不高,反而還提升了IT成本。
\\結合CDN實際應用環境來看,這說明很多時候用戶如果只是按照最直接的方式去實施,就會發現實際數據相比于預期目標來說差距很大。
\\\InfoQ:您認為影響DNS調度效果的因素都有哪些?同時又該如何評價DNS調度效果呢?
\\\李孟:智能DNS實際上是CDN GSLB的表達,表達的好壞效果會直接影響到后續流量調度的難易程度。除了受到Local DNS用戶規模差異懸殊的影響以外,DNS流量調度過程中產生的流量抖動還由另外四個原因所決定著,首先部分終端改變了自身的Local DNS;其次,Local DNS Cache影響調度生效和失效;第三,Local DNS涵蓋的用戶群大小不一;第四,Local DNS擇優行為影響數據對等。
\\評價DNS流量調度效果的指標主要為兩個——精度和準度。較高的精度會讓調度系統動態調節更容易,設備帶寬利用率也會更高,但是在實際DNS中的流量比例配值會出現差異,在復雜情況下很難區分開具體的流量配比。而較高的準度則會降低調度系統預測規劃的難度,但調度過程中的流量抖動會更嚴重。對于某些DNS流量調度方式來說,有時精度和準度是不可兼得的,因此要可以使用不同的DNS流量調度方式,以產生不同的調度精度與準度。
\\\InfoQ:是否還有其他更多類似的誤區?應該怎樣去避開這些誤區?
\\\李孟:很多誤區本身比較隱蔽。比如CDN使用者將流量均分給兩個CDN公司時,會采用CNAME分成兩支的做法,然而這種做法并不是DNS協議里的標準內容,導致的結果就是底層細節被上層打散,每次請求分配不均衡也無規律,流量飄忽不定。
\\這表明某些看似很直觀、很可靠的方式,到了底層就會影響非常大。企業用戶去定制特別的流量調度時,正常來說是要按照固定屬性確定調度方式的,但有時候用戶希望達成定量調度時,就會讓調整滲透下去,把定量行為加入到DNS里。做DNS定量時,其信息是不對等的,DNS進行調配時,可能會因為訪問不對稱,而導致調度也不對稱。DNS在調度表達上有時確實有些不合常規,而帶來效果有時也是不可預估的。
\\從DNS調度的判斷依據來看,不推薦直接使用DNS的統計計數數據作為DNS調度依據,因為這些解析數據并不可靠,它們都是經過Local DNS不穩定的擇優選擇后產生的,使用這些數據作為調度依據會讓調度效果變得不可預估。比較常見的流量調度依據包括固有屬性以及無狀態屬性,固有屬性比如有Local DNS IP的地域屬性,或者網絡屬性等,而無狀態屬性則比如有Local DNS IP的Hash值特征,或者隨機值等。
\\常見的流量調度表達方式包括地區切分、默認等分、隨機比例、以及按照Local DNS IP切分流量,其中默認等分的方式在調度準度與精度上均有很好的表現,而其余三種則都有各自不同的側重點。
\\在決定采用哪種調度方式前,建議技術人員先去結合數據進行分析,在拿到一線的、真實的、完整的數據之后再做相應的調研,總結出相應的規律,通過數據分析明確什么能做,什么不能做,什么想做,什么不想做,最后決定采用哪種調度方式。
\\\InfoQ:能否談一談您個人以及SpeedCloud在CDN與DNS方面的未來規劃?
\\\李孟:DNS這方面的業務目前仍然在規劃當中,是否以CDN為重點,也是有待考慮的。現在只要是做DNS功能,就幾乎必帶CDN,希望在今后能夠形成一個具體產品,為行業發展帶來幫助。
\\\\\關于受訪者
\\李孟現擔任SpeedyCloud研發總監,目前主要負責資源調度系統的設計與研發工作,為SpeedyCloud一站式云服務平臺提供技術支撐。李孟曾在藍汛就職7年,專注于CDN GSLB及其衍生領域研發與實踐,是藍汛自主研發CDN DNS的第一人,在研發與運營分析過程中積累了豐富的行業經驗。
總結
以上是生活随笔為你收集整理的SpeedyCloud研发总监李孟:不要让底层细节被上层打败的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 软件过程
- 下一篇: 主题:的中间层框架 第一节