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