【IT觀察】從全球女鹿飯同時(shí)失聯(lián)引發(fā)的悲劇看運(yùn)維如何在流量峰值力挽狂瀾
原創(chuàng)【51CTO.com原創(chuàng)稿件】引用51CTO開發(fā)者QQ交流群中對“鹿晗關(guān)曉彤公布戀情,是如何把新浪微博的服務(wù)器搞垮的”這個(gè)話題的深入討論,特整理出從開發(fā)者和運(yùn)維工程師的角度來應(yīng)對服務(wù)器遇到流量峰值的處理措施。以下內(nèi)容來自群里小伙伴們的觀點(diǎn)分享。
10月8日,在十一長假的最后一天,微博搜索工程師丁振凱發(fā)微博 “埋怨”鹿晗,稱:“服務(wù)器穩(wěn)定了,岳父喊我喝酒去了,都是鹿晗干的好事!”起因是當(dāng)紅流量小生鹿晗發(fā)了一條“大家好,給大家介紹一下,這是我女朋友@關(guān)曉彤”的微博,全世界的女鹿飯同時(shí)失戀造成了微博服務(wù)器的宕機(jī)。
到底是什么毀了程序員的婚禮?
關(guān)于這場浩劫的原因這幾天一直眾說紛紜。微博官方的說法是因?yàn)閱螚l微博轉(zhuǎn)發(fā)、評論次數(shù)太多了造成數(shù)據(jù)庫崩潰。很顯然這是不全面的,微博這個(gè)級別的數(shù)據(jù)量放在平時(shí)也不是傳統(tǒng)的分布式架構(gòu)就能抗住的。況且鹿晗的這條微博既不是有史以來被轉(zhuǎn)發(fā)最多的,也不是有史以來收到評論最多的一條微博。
51CTO開發(fā)者交流群昵稱為Java-阿飛-南京的小伙伴提出了問題出在算法上,自動(dòng)擴(kuò)容的算法沒有寫好,或者干脆沒把希望寄托在算法上而是全靠人肉運(yùn)維卻趕上了休假。這種說法是認(rèn)可度最高的,但群友Android-小孔-合肥卻不敢茍同:算法不是不好,而是太好了,因?yàn)闆]寫好算法的化,服務(wù)器延遲幾秒,此事就不了了之了;但如果服務(wù)器反應(yīng)非常靈敏,那么很快就會不堪重負(fù)。
云計(jì)算-恩威-成都則把鍋甩給了運(yùn)營商:節(jié)假日期間中國電信IDC全網(wǎng)封網(wǎng),停止了一切工程施工、系統(tǒng)割接、網(wǎng)絡(luò)和數(shù)據(jù)調(diào)整等工作導(dǎo)致了運(yùn)維無法到位。
最后51CTO開發(fā)者交流群的群友們還有幾種開玩笑的說法:Android-jqorz-合肥說是微博的運(yùn)維妹子是女鹿飯,一吃醋就故意讓服務(wù)器出故障;而從事安全行業(yè)的小新(安全-小新-北京)則說是鹿晗的黑粉有懂技術(shù)的,在這個(gè)節(jié)骨眼上搗鬼。言者無意,聽者有心,安全問題也是網(wǎng)絡(luò)運(yùn)維的重要環(huán)節(jié),況且以國內(nèi)網(wǎng)民的數(shù)量來看,任何吸引全國網(wǎng)民訪問的事件都是一場大規(guī)模的DDOS攻擊。
微博用什么避免此次事故
國內(nèi)運(yùn)維人員應(yīng)對流量峰值的傳統(tǒng)方法有提前申請足夠甚至冗余的設(shè)備和降級非核心及周邊的業(yè)務(wù)兩種,但不可避免帶來成本高昂、業(yè)務(wù)負(fù)載飽和度不一、擴(kuò)縮容流程繁瑣等問題。
微博目前應(yīng)對流量峰值的機(jī)制是新浪微博混合云DCP項(xiàng)目,能根據(jù)容量情況進(jìn)行自動(dòng)的彈性伸縮。首先建立統(tǒng)一的設(shè)備資源管理池,然后將服務(wù)部署在基于 Docker 的云化架構(gòu)上;在業(yè)務(wù)上需要盡心對傳統(tǒng)業(yè)務(wù)進(jìn)行微服務(wù)化、消息化等改造;在平臺上,需要打通持續(xù)集成平臺以及實(shí)現(xiàn)多租戶隔離、彈性伸縮、故障自愈等能力。最后用統(tǒng)一的監(jiān)控平臺實(shí)現(xiàn)人肉運(yùn)維緊急支援。
目前DCP 已經(jīng)具備 20 分鐘內(nèi)彈性擴(kuò)容千臺服務(wù)器規(guī)模的能力,即公有云要滿足10分鐘內(nèi)完成上千臺服務(wù)器的創(chuàng)建與交付,同時(shí)私有云平臺則在接下來的10分鐘內(nèi)完成服務(wù)器的初始化、服務(wù)調(diào)度、上線等全流程。這就保證了當(dāng)流量峰值來臨時(shí)DCP平臺可以迅速調(diào)度部署公有云服務(wù)器解決私有云短時(shí)間無法迅速擴(kuò)容服務(wù)器的問題。同時(shí)公有云的按量彈性需求也可以降低大量成本,事實(shí)上此次事故中靠人工臨時(shí)增加的服務(wù)器也在幾個(gè)小時(shí)后退訂了。
微博混合云平臺DCP可以說是萬無一失,但到了史無前例、并且恰好趕在假期的流量峰值面前卻仍然因?yàn)闆]有可行的、立竿見影的預(yù)案執(zhí)行,最后還是用臨時(shí)靠人工增加服務(wù)器數(shù)量的笨方法解決了問題。所以自動(dòng)化運(yùn)維工作仍然任重而道遠(yuǎn)。
大數(shù)據(jù)時(shí)代的運(yùn)維要從這個(gè)災(zāi)難中學(xué)到什么
隨著網(wǎng)民數(shù)量的劇增和大數(shù)據(jù)時(shí)代的到來,這次的峰值將在不久的將來變成家常便飯,幾小時(shí)之內(nèi)緊急增加1000臺臨時(shí)服務(wù)器很明顯指標(biāo)不治本,運(yùn)維人員要從這個(gè)災(zāi)難中學(xué)到什么呢?
應(yīng)對流量峰值要從集群、負(fù)載均衡和分布式三個(gè)方面入手:
所謂集群,就是一組協(xié)同工作的服務(wù)實(shí)體,用以提供比單一服務(wù)實(shí)體更具擴(kuò)展性與可用性的服務(wù)平臺。集群有兩大特性——可擴(kuò)展性、高可用性都是為失效轉(zhuǎn)移這一目標(biāo)服務(wù)的。
所謂負(fù)載均衡,就是把任務(wù)分?jǐn)偟蕉鄠€(gè)操作單元上進(jìn)行執(zhí)行,是一種廉價(jià)有效透明的方法擴(kuò)展網(wǎng)絡(luò)設(shè)備和服務(wù)器的帶寬、增加吞吐量、加強(qiáng)網(wǎng)絡(luò)數(shù)據(jù)處理能力、提高網(wǎng)絡(luò)的靈活性和可用性的方法。
所謂分布式,就是將數(shù)據(jù)分散的存儲于多臺獨(dú)立的機(jī)器設(shè)備上、利用多臺存儲服務(wù)器分擔(dān)存儲負(fù)荷、利用位置服務(wù)器定位存儲信息的技術(shù)。分布式與集群的區(qū)別在于分布式是以縮短單個(gè)任務(wù)的執(zhí)行時(shí)間來提升效率的,而集群則是通過提高單位時(shí)間內(nèi)執(zhí)行的任務(wù)數(shù)來提升效率。
【51CTO原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請注明原文作者和出處為51CTO.com】