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