跟產品、運營的合作的一些技術原則
移動端海量服務的特點
移動新聞類服務有幾個特點:
新聞是基礎需求之一,使用頻率屬於次高階別,比通訊類服務低,比電商類服務高。有些很重要的新聞,雖然使用者不一定要看細節,但必須要知道這件事,所以要 push 給所有的使用者。
覆蓋面廣,不同的人群、地域、運營商都要覆蓋到。
突發性強,尤其是重大新聞爆發時,瞬間 push 的流量是日常流量的好幾倍,對服務質量的要求也很高。
下面從產品、技術、運營這三個層面分享一下我們的感受。
產品
聚焦核心需求,少即是多:我們從非常小的產品長起來,最初要做的比較小,功能少,現在的專題、直播、**、離線都是後來加的。一開始是因為人和 資源有限,必須逼迫自己要去聚焦最核心的需求;隨著發展慢慢就會覺得很多東西可以做,但像是新聞這種基礎性的服務,使用者對產品是有預期的,他會預期乙個新 聞類客戶端能夠滿足他的什麼需求,所以,一定要把基礎需求做到極致,之後才能考慮做別的,否則做了效果也不好。
開發
快速迭代,小步快跑(動態運營的開發模式):非常多子系統和功能都是這麼做的,這是非移動網際網路就已經認同的原則。
快和穩定超過精巧性。這個和乾乾淨淨做系統也是符合的,這樣做出來的東西,下一步演化、debug 問題都很輕鬆。
快、允許出錯。這一點可能跟上面說不要隨便加東西有些矛盾,說到底還是乙個度的問題。大方向是一定要把握的,不能亂放;但是細節調整是可以更快的放出去。執行乙個版本要可以很快的糾正,這就是說你心裡要有糾正的預期,放出去之前就要把功能開關都做進去。
運營
快速灰度。我們的新聞客戶端做比較快速的灰度,比如常規灰度是按周,這邊則是按天甚至小時來做灰度。為什麼這樣做呢,第一,我們產品客戶端本身 的迭代速度比較快,一般4~6 周就有乙個東西出去;第二,乙個功能放出去如果不能很快灰度到一定數量級,就看不出表現,因為我們的技術功能跟運營商分布、網路穩定性有關,灰度太小,即 使放到 20%,這 20% 裡面又有 20% 的波動,誤差太大,真實的效果就看不出來。所以我們的策略就是快速推出去,實在出問題就回滾,責任我這邊擔著。
有損服務。要分清哪些業務可以有損,哪些必須無損,另外無損也有嚴格的和非嚴格的。有損服務這塊下面我會詳細介紹。
扛住再優化。這個不需要多說。
立體監控。很早以前我們是按**的監控級別,可能是 5 分鐘抓一次資料,這樣到移動端就不行了,可能監控出來有問題的時候就早已經崩潰了,回頭看監控資料也不知道什麼時間來的峰值、峰值到了多少。現在我們是按 5 秒的監控級別。
下面介紹乙個有損服務例項,就是我們突發新聞 push 的一次經驗。
突發新聞的特點是瞬間峰值極高,這點跟其他億級產品有一些不同。比如馬航失聯的新聞,我們推送 ios 客戶端在千萬級,android 客戶端千萬級,傳送時長 2 分鐘,點選率大約在 25%。我們還配了頭圖專題和**直播。實際上這裡面還有個情況,就是我們北方節點的部分使用者沒有 push 到,因為北方節點有三分之一的機器配置比其他機器低一些,但我們 push 的時候沒有調整分配規則,就導致這三分之一的機器死掉了,流量跑到剩下的三分之二的機器上,又把這三分之二也搞崩潰了。中間我們導流北方使用者到深圳節點, 後來深圳節點無法承擔全國流量,又導回了北方。總之都這樣下來,最終我們的訪問量是 7 倍於日常的訪問流量,以及 3 倍於日常的介面呼叫數。
對於本次新聞,我們制定了如下的有損服務規則:
重點介面重點保障,次要介面有損保障:28 原則,用 60-70% 的資源保證 20% 的重要介面。另外就是緊急降級,把**直播自動重新整理、下拉自動重新整理等造成不必要的資源請求的功能取消。
快取前移,分布化,用大量 memcache。前端 proxy 快取,後面是 mc 集群,解決超熱 key 問題和大 key(>200k)的問題。另外設定了 5 秒的 timeout,相當於是有損服務。
優化 tcp 協議,提高 tcp 初始化擁塞視窗大小(從 3 改到 10),減少 rtt,提高資料傳輸速度。
容量模型,介面設定最大連線數,通過預知及早拒絕,防止雪崩。現在已經有一些預知能力。
apc 快取,高併發時底層頁靜態化以降低後台請求。另外就是分區域保障,一線城市做為重點,二線城市提供有損服務。
對於新聞客戶端未來的挑戰,我覺得有兩點:
羅強 騰訊新聞如何處理海量商業化資料?
這部分詳細地講解整個資料上報體系。目前資料上報會根據資料來源進行分類上報。資料來源主要分為四大類 實時計算架構整體上選擇lamda架構,ods層到dwd層資料的處理,實時和離線部分是公用的,也體現了流批一體的概念。下面就分模組介紹實時計算部分的整體架構。dwd dwd層的設計是為了減少下游頻繁對od...
騰訊新聞中心首頁改版啦
我們先來看看改版前後的首屏效果 從對比圖上來看,主要有以下的變化 我們來看看兩個頁面中頭部資訊的設定 舊頁面 新頁面 主要的變化有 頁面從html4.01的宣告改為了html5的宣告 字元編碼從gb2312改為utf 8 優先使用 ie 最新版本和 chrome 前幾個做的改版頁面,只是在原頁面上進...
仿騰訊專題新聞年份記事滑動JS效果
title.innerhtml jsondata pointindex title 改變日期及標題的位置,此處減去的數字,可根據實際樣式調整 date.style.left pointindex 1 timepointleftcur 25 px titletop.style.left pointin...