新浪微博溫情:基于微服務(wù)的微博直播互動架構(gòu)設(shè)計經(jīng)驗分享
原創(chuàng)【51CTO.com原創(chuàng)稿件】2017年12月01日-02日,由51CTO主辦的WOTD全球軟件開發(fā)技術(shù)峰會將在深圳中州萬豪酒店隆重舉行。本次峰會以軟件開發(fā)為主題,數(shù)十位專家級嘉賓將帶來多場精彩的技術(shù)內(nèi)容分享。屆時,新浪微博研發(fā)中心平臺高級系統(tǒng)研發(fā)工程師溫情將在微服務(wù)與容器技術(shù)專場帶來主題為"基于Docker的微博直播互動微服務(wù)架構(gòu)"的精彩演講,屆時他將與來賓分享如何利用當下的技術(shù)熱門話題‘微服務(wù)’,設(shè)計出一個穩(wěn)定的支持百萬在線的微博直播互動微服務(wù)架構(gòu)。51CTO誠邀您蒞臨大會,與我們共享技術(shù)帶來的喜悅。
會前,51CTO記者采訪了溫情,針對微服務(wù)架構(gòu)應(yīng)用,微博直播互動微服務(wù)架構(gòu)設(shè)計等內(nèi)容分享了自己的經(jīng)驗。
【講師簡介】
微博-研發(fā)中心平臺高級系統(tǒng)研發(fā)工程師溫情
溫情,微博研發(fā)中心平臺高級系統(tǒng)研發(fā)工程師,從事微博視頻和通訊相關(guān)系統(tǒng)的研發(fā)。當前負責微博直播消息互動系統(tǒng)的研發(fā)。個人推崇高可用,可彈性伸縮,低耦合的微服務(wù)架構(gòu)設(shè)計。技術(shù)上擅長消息通訊方向,針對系統(tǒng)應(yīng)對突增流量和高并發(fā)方面有豐富的實踐經(jīng)驗。
我們?yōu)槭裁葱枰⒎?wù)架構(gòu)?
微服務(wù)(MicroServices)架構(gòu)是當前互聯(lián)網(wǎng)業(yè)界的一個技術(shù)熱點,我們究竟為什么需要微服務(wù)架構(gòu)?它能解決哪些問題?
對此,溫情認為,微服務(wù)架構(gòu)可以解決兩大難題:
一方面,在一個系統(tǒng)功能比較單一的情況下,用單體式的方式進行開發(fā)部署是沒有問題的,但是隨著業(yè)務(wù)需求增多,復(fù)雜度增高,任何一次小需求的變更都需要進行打包上線、測試、部署,導(dǎo)致開發(fā)團隊難以進行敏捷開發(fā),每次添加新功能和修復(fù)bug都會變得非常耗時。一個應(yīng)用越復(fù)雜,依賴的資源越多,啟動速度越慢,難以實現(xiàn)快速擴展。
另一方面,隨著開發(fā)人員越來越多,維護同一個應(yīng)用,任何一個人的嚴重bug,例如內(nèi)存泄漏等問題,都會導(dǎo)致整個服務(wù)不可用。
而微服務(wù)架構(gòu)可以解決這些問題,所以微服務(wù)架構(gòu)應(yīng)運而生了。
微服務(wù)架構(gòu)的優(yōu)勢與不足
事物的存在是具有兩面性的,微服務(wù)架構(gòu)也一樣,存在著優(yōu)勢和不足。溫情表示,微服務(wù)架構(gòu)的優(yōu)勢與不足表現(xiàn)的都很明顯。
優(yōu)勢在于:***,通過服務(wù)劃分的方式,解決了復(fù)雜性問題。第二,每個微服務(wù)獨立開發(fā),不同的開發(fā)團隊可以用不同的語言,不同的技術(shù)實現(xiàn)。第三,每個微服務(wù)獨立部署,獨立擴展,減少服務(wù)之間依賴,同時不同服務(wù)的類型是不同的,有些是內(nèi)存性,有些是CPU性,可根據(jù)服務(wù)類型選擇不同類型的服務(wù)器。
不足在于:***,相互依賴的服務(wù)之間的通信問題,可能會因為網(wǎng)絡(luò)等因素而增加新的開銷。第二,微服務(wù)拆分后,服務(wù)規(guī)模的增加,提高了運維的難度。第三,任何請求,在依賴的服務(wù)中都可能出錯,排查問題的難度增加。
溫情建議,雖然微服務(wù)架構(gòu)有著很明顯的優(yōu)勢,但是企業(yè)還需根據(jù)實際情況來考慮是否應(yīng)用微服務(wù)。尤其在企業(yè)系統(tǒng)復(fù)雜度不高,業(yè)務(wù)不復(fù)雜的場景下,盡量還是用單體式開發(fā)。而千萬不要為了“微服務(wù)”而強行進行微服務(wù)化。微服務(wù)不僅僅對開發(fā)人員提出了新的要求,同時也需要更加強大的運維團隊支持。在系統(tǒng)復(fù)雜度不高的場景下,引入微服務(wù),可能會成倍地增加維護的成本。同時也可能會引起難以快速響應(yīng)需求,線上問題難以快速定位等問題。
微博直播互動微服務(wù)架構(gòu)設(shè)計需要注意的那些細節(jié)
談及微博直播互動微服務(wù)架構(gòu)的設(shè)計,溫情以目前正負責的微博識別消息互動系統(tǒng)的研發(fā)項目為例,對架構(gòu)設(shè)計需要注意的細節(jié)等問題進行了深入的分析解讀。
微博直播消息互動系統(tǒng)是一個相對比較復(fù)雜的系統(tǒng),在設(shè)計上有很多特殊的需求。首先,在微服務(wù)化過程中,研發(fā)團隊會比較注意核心服務(wù)和非核心服務(wù)的劃分,從而在服務(wù)遇到瓶頸時,可以通過降級的方式保證核心業(yè)務(wù)不受影響。其次,對容易瓶頸的服務(wù)進行劃分,減少對其他服務(wù)的依賴,使服務(wù)更加輕量化,從而實現(xiàn)服務(wù)快速擴展。第三,微博的服務(wù)常常會面臨流量激增的問題,微博直播互動系統(tǒng)同樣面臨這樣的問題,甚至激增的特性更加明顯。在流量激增時,僅靠人工方式無法快速擴展服務(wù),所以需要實現(xiàn)服務(wù)的自動化彈性伸縮。
微服務(wù)架構(gòu)設(shè)計主要分為三個步驟:微服務(wù)的劃分、微服務(wù)間的通信、微服務(wù)的部署。對設(shè)計的整個過程中的這三個環(huán)節(jié)中,有很多需要注意的細節(jié)。
對于微服務(wù)的劃分,需要注意服務(wù)劃分的粒度,切莫一開始就過于細粒度。而是根據(jù)服務(wù)和需求的的發(fā)展,在恰當?shù)臅r候,對復(fù)雜度較高的服務(wù)進行拆分,將同一類功能的服務(wù)進行歸類劃分。舉例來說,對于直播互動這個系統(tǒng),服務(wù)的難點在于長期維護與用戶的長連,并持續(xù)推送消息。一個10w人同時在線的房間,每秒有10個人評論,那推送的消息量將會是100w條/s。因此,推送服務(wù)也是最容易出現(xiàn)瓶頸和最需要快速擴容的服務(wù)。那么,在微服務(wù)劃分時,需盡量地使推送服務(wù)輕量化,減少對其他服務(wù)的依賴,加快擴容速度。
對于微服務(wù)間的通信,需要注意的是服務(wù)依賴的問題。例如:一個服務(wù)A,它同步依賴的服務(wù)B平均耗時1s,這就會導(dǎo)致服務(wù)A的平均響應(yīng)時間至少是1s。
對于微服務(wù)的部署,需要注意兩點:一是,快速擴容時,依賴的資源和服務(wù)需要一起擴容,其中包括負載均衡、緩存,甚至是DB,否則服務(wù)仍會遇到瓶頸。二是,在升級服務(wù)時,依賴服務(wù)之間的上線問題。
WOT峰會演講內(nèi)容提前知
在本屆峰會,溫情將為大家?guī)碛嘘P(guān)微博直播互動微服務(wù)架構(gòu)設(shè)計的主題演講。
采訪中,他向記者介紹,本次演講將著重介紹在微服務(wù)化過程中,如何解決微服務(wù)粒度劃分,微服務(wù)通信以及微服務(wù)部署等方面問題。在架構(gòu)設(shè)計中,如何通過利用Docker化技術(shù),解決混合云平臺引入的環(huán)境差異問題,實現(xiàn)服務(wù)更加快速地部署和擴展。對于直播波峰波谷明顯,以及微博特色的流量激增等特性,直播互動服務(wù)利用混合云的可彈性伸縮特性,搭建出一套自動化的可彈性伸縮服務(wù),既解決了峰值應(yīng)對問題,又實現(xiàn)了成本***化。
【51CTO原創(chuàng)稿件,合作站點轉(zhuǎn)載請注明原文作者和出處為51CTO.com】