這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
編者按:本文是楊武明在 2 月 27 日在 Gopher 北京聚會演講基礎上整理而成。轉載請註明來自高可用架構公眾號「ArchNotes」。
楊武明,熊貓 TV 首席架構師,曾擔任奇虎 360 PC 網遊技術架構負責人,前新浪微博平台資深後端開發、技術專家。對大型互連網架構有豐富的實踐經驗,擅長後端基礎服務與組件開發,尤其高效能、高並發、大資料業務情境。
熊貓 TV 是一家ApsaraVideo for Live平台,先介紹下我們系統啟動並執行環境,下面這 6 大服務只是我們幾十個服務中的一部分,由於並發量與重要性比較高,所以成為 golang 小試牛刀的首批高效能高並發服務。
把大服務拆細, 然後服務化獨立部署,更容易簡化部署,也容易單點細節最佳化與升級。多數服務的能力是通用的,如平滑重啟、多機房部署等。
關於線上服務,如果 1000 萬使用者線上,即使每 30 秒一次線上 http 發送打點,那麼也有每秒 30 萬+的介面 qps。
Golang 提供的 http server 效能非常好,一個普通工程師如果做到單虛機支撐 1w - 2w 每秒的請求量,那麼只需要 10 - 20 台後台伺服器了。
用其他非高效能語言,需要的機器能需要多翻好幾倍; C++ 效能足夠,但對工程師要求很高。
房間服務是主要服務, 需要核心保障,所以對房間服務裡面的版塊,進行了再細粒度的拆分。
對房間資訊變更頻繁的內容也採用隔離儲存區 (Isolated Storage),如人數計數等欄位,這樣的缺點是每次去房間資訊會多帶來一次額外的訪問人數服務的成本。這也是架構設計需要權衡點之一。
禮物系統是多數ApsaraVideo for Live平台的標配,國內有禮物消費習慣的土豪不少,高峰期送禮物的並發量很大,尤其很多土豪對刷的時候。
禮物系統對一致性要求略高,所以存一份資料建多條索引也是一種選擇,也可以降低對事務的依賴。
彈幕互動方式是一個很不錯的體驗,更偏年輕化,大量使用者喜歡通過這種方式與主播互動。
國內網路狀況比較複雜,最好根據使用者位置選擇就近對應電訊廠商的單線機房接入彈幕Message Service,讓彈幕更及時。也可以用 BGP 機房,但網路頻寬價格會比單線貴不少。
對於大房間,彈幕訊息量特別大,主播與使用者都看不過來, 在產品策略層面可以做一些體驗上的最佳化。
ApsaraVideo for Live體驗是整體平台最關鍵點,視訊 CDN 是一種讓使用者就近擷取所需流媒體的技術,且解決延時、卡頓等問題。 從技術角度不要只依賴某一 CDN 供應商或線路,業內很多ApsaraVideo for Live平台都做了拉流線路互備,推流後視頻(轉碼、轉寄)叢集也是一個可最佳化的點,做互推是冗餘了部分推流資源,但對最佳化直播流的體驗與高可用性顯而易見。
包含自由商務邏輯的介面代理服務, 是很多公司都有的一個公用服務,可以把公司內網服務低成本的提供來外網來使用。不過需要考慮好外網安全性原則,包括授權認證、服務關係映射、頻率限制、業務資源隔離等。
能看到最後肯定是對我們技術及業務感興趣的朋友,熊貓 TV 技術團隊正在招聘 Golang 工程師,全部配備高配電腦與 DELL 雙屏大螢幕顯示器,並提供有挑戰性的技術環境。感興趣朋友請掃碼進入(同時也有大量 PHP、前端、營運、DBA 等技術崗位)。
以上就是本次分享的主要內容,點擊閱讀原文可以下載 PPT。
更多瞭解楊武明:從3000元月薪碼農到首席架構師的經曆
轉載本文請註明來自高可用架構 「ArchNotes」公眾號及包含以下二維碼。
查看原文:http://www.zoues.com/2016/10/20/golang%e5%9c%a8%e8%a7%86%e9%a2%91%e7%9b%b4%e6%92%ad%e5%b9%b3%e5%8f%b0%e7%9a%84%e9%ab%98%e6%80%a7%e8%83%bd%e5%ae%9e%e8%b7%b5%ef%bc%88%e5%90%abppt%e4%b8%8b%e8%bd%bd%ef%bc%89/