新浪微博宋琦:PHP在微博優化中的「大顯身手」

2021-01-13 CSDN技術社區

【CSDN報導】 2013中國軟體開發者大會(以下簡稱SDCC)於8月30-31日在北京新雲南皇冠假日酒店舉辦。作為CSDN和《程式設計師》雜誌傾力打造、千人規模以上的頂級技術盛會,今年SDCC 2013以「軟體定義未來」為主題,來自於國內外一線的技術精英,就大數據分析與BI、架構實踐、研發管理、IT基礎設施與運維、產品與設計、開放平臺等專題和參會者進行了深入的分享和探討。此外,32小時編程馬拉松、CTO論道論壇等量身定製的特色環節也受到了參會者的強烈關注。

31日下午的程式語言與工具專題論壇上,新浪微博主站架構師宋琦與大家分享和探討了關於PHP在新浪微博實際中的應用情況。

在進入新浪微博之前,宋琦一直在做商業產品,使用的是傳統的LAMP架構。而通常商業產品不涉及到很大流量,只是業務邏輯比較複雜。宋琦說當時他關注的主要是框架、擴展性、安全性方面的話題,對性能關注的較少。「之後選擇做微博,是因為我認為對於程式設計師來說,微博產品所帶來的技術挑戰是一般產品無法比的。在大數據和大訪問量下,任何東西都有可能成為非常棘手的問題。」宋琦說。

因為微博本身的一些特性,使得傳統的LAMP架構,傳統的框架、模板系統等在微博中變得不再適用,需要更加深入了解系統底層,才能應對更多挑戰。

微博海量數據不容小覷

宋琦列了一組數據,微博用戶數大約5.5億,假設每個人有100條關注關係,那麼總共就有550億條用戶關係,用兩個long也就是16個字節來表示一個關注關係的話,那麼單獨保存這些關注關係就需要800G的存儲空間。「以往在db裡用一個map表就解決的事,放在這個場景下就變得可笑了。」宋琦說。

那麼微博的訪問量有多大呢?宋琦說,在2013年除夕當晚,蛇年第一秒共發出近35000條微博,第一分鐘發出近73萬條微博。這個只是上行的數據量,而下行的數據量是這個的N倍還多。由此可見,這樣的數據量非常驚人。


響應速度關乎用戶體驗

在如此大的數據量和訪問量下,微博對響應速度的要求非常高。有研究數據顯示,如果一個頁面響應速度超過3秒,那麼57%的用戶就會放棄;而在登錄某網站時,若超過5秒,74%的用戶就不會再登錄;亞馬遜的主頁響應時間每延長1秒,每年就會減少16億美元的銷售額;而Google搜索結果每慢0.4秒,一天搜索量將減少800萬次。

「總之,這些數據都說明了響應速度的重要性,可以說響應速度是保障流暢用戶體驗的基礎。我們Team的主要KPI之一就是提升微博的性能。」宋琦補充道。

數據加載的優化

宋琦指出,微博有很多的配置文件,有幾十個,這些配置每一次請求都要被加載,都要重新申請內存存放這些配置。而配置文件的修改是非常少的,那麼可不可以只加載一次就可以一直使用呢?很遺憾PHP是做不到的,PHP腳本中所申請的資源在請求結束後全都會被釋放。「於是我們同樣使用PHP擴展來解決了它,我們創建了一個名叫Weibo_Conf的擴展,他在php-fpm啟動階段掃描指定的目錄,將其下的.ini文件加載到內存中,每5分鐘更新一次。這樣伺服器每一次接到請求時,不需要重新加載這些配置,而是直接取用,效率提升了不少。」宋琦介紹說。

除了配置外,還有一些需要常駐內存,而且不常變化的東西,但是這些的量更大一些,比如白名單/黑名單,或者切詞服務的字典等。這些東西以往都是放在資料庫或者MC當中,然後通過http開放接口供遠程調用。「因為他們的邏輯都比較簡單或者固定,不太常變化,我們將他們獨立出來做成單獨的C服務,用的是yar的兄弟yar-c,yar-c所做的工作就是提供一個基於C的RPC框架,幫你完成網絡和進程方面的管理,讓你可以專注於實現業務邏輯,同時更方便的是,通過PHP的yar擴展可以直接調用,也就是說PHP端不論是對於基於yar-c的socket RPC服務還是基於yar的http RPC服務,無需做出改變既可以通用。」宋琦說道。

緩存優化

眾所周知,對於訪問量巨大的服務來說,緩存是必不可少的,而微博是一個重度依賴緩存的應用。宋琦指出,微博前端展現的數據全部依賴於開放平臺,開放平臺提供的是基於http的RESTFul的接口,響應速度一般,所以為了提速同時降低對開放平臺造成的負載,微博大量的使用了MC來緩存數據。「但是用MC也不是輕輕鬆鬆就能滿足我們需要的。我們做個計算,假設我們每臺伺服器上開啟128個php-fpm,總共100臺伺服器,如果每個請求響應時間是1秒,從請求開始就連接MC並且等到請求結束後才自動釋放,那麼每一臺MC上至少有上萬的連接,實際微博的量比這個還要大的多,這樣MC的效率就會慢下來,同時增加了PHP處理請求的耗時,又進一步加劇了連接佔用的情況,很容易造成雪崩效應。」宋琦指出。


針對此問題,宋琦展示了兩種解決方案:

一種是引入一個proxy來代理對MC的訪問,twitter採用的是這種方案,通過代理,php-fpm與proxy、proxy與MC之間都可以維持長連接,並且請求可以在proxy上做合併。twitter開源了他們的這個代理twemproxy。可以看到在加入twemproxy之後,MC集群的連接數大大降低了。

但是在加入了一層proxy之後,因為要通過一層twemproxy,會使得MC請求的響應變慢,於是採用了另外一個方案:增加一層緩存做成多級緩存。


首先通過會話保持,讓一個用戶的每一次訪問都落到固定的一臺機器上,然後我們在前端機的本地開啟一個本地緩存,用它來擋在MC集群之前,降低對MC的訪問。這層本地緩存的實際命中率大概在60%~70%左右,這些請求只需要從本地緩存中獲取數據,就不需要走網絡從MC集群上獲取數據。   

(文/蒲婧 責編/魏兵)

本文為CSDN原創文章,未經允許不得轉載,如需轉載請聯繫market#csdn.net(#換成@)

相關焦點

  • 新浪微博:平臺中的「平臺」
    「幸運」的是,新浪微博籠絡住的最重要一批粉絲是「飯圈」粉絲,而這一批人是各類用戶群體中黏性最強的一群人。頭部的新浪微博,平臺中的「平臺」從2009年起的11年來,微博經歷過門戶大戰,戰勝了搜狐微博、網易微博,以及騰訊微博等一眾競爭對手;登上了納斯達克的舞臺後,新浪微博遇到了微信的強力競爭,但最終雙方都找到了各自不盡相同的優勢和應用場景;隨後新浪微博通過下沉戰役,收穫了低線城市用戶,進一步鞏固了行業地位
  • 為什麼當年騰訊微博失敗了,而新浪微博卻是越做越火?
    說到現在年輕人最喜歡的東西,微博無疑是能排在前面的,無論是學生黨還是工作族,一旦有閒暇時間,都是拿起手機刷刷刷。但是說起微博的話,大家可能第一反應都是新浪微博了,其實當年還有另一個微博,這個微博曾經還是新浪的最強之敵,那就是騰訊微博了。
  • 新浪微博致歉
    昨晚(11月18日),針對App違法違規收集使用個人信息治理工作組(下稱「工作組」)通報的微博APP「個人信息收集使用」方面的問題,新浪微博社區管理官方微博@微博管理員 進行了說明,並稱深表歉意。微博表示,微博正在梳理SDK使用情況,並將在隱私政策中進行披露。
  • 新浪微博如何修改單條微博的標籤
    進入新浪微博「我的收藏」在每條微博的倒數第二行點擊「筆」狀圖標,即可修改原有標籤或添加新標籤。   新浪微博是一個由新浪網推出,提供微型博客服務的類Twitter網站。用戶可以通過網頁、WAP頁面、手機簡訊、彩信發布消息或上傳圖片。新浪可以把微博理解為「微型博客」或者「一句話博客」。
  • 騰訊微博為什麼會被新浪微博打敗?
    騰訊微博為什麼會被新浪微博打敗,還會被騰訊重啟嗎?要是每個產品都讓騰訊做成了,那還得了?對於騰訊微博出來蠻早的,在新浪微博出來不久後就出來了,我記得後來微信公眾號出來還支持騰訊微博認證,目前我的公眾號還顯示著騰訊微博認證的字樣,而騰訊微博在2013年之後就開始陸續準備撤退計劃,2013年11月19日據傳,騰訊微博內部已開始調整,部分員工將被轉崗到其他團隊。
  • 新浪微博發布2010年度微博盤點榜
    12月29日早間消息,新浪微博今日發布了2010年度微博盤點榜。這份榜單由年度微博熱詞、年度微博表情、年度最火爆轉發、年度最熱視頻和年度最溫暖微博五大部分組成,全方位反映了過去年一年中網民的生活百態,也引領著網絡的最新流行趨勢。
  • 新浪微博網頁版
    新浪微博網頁版軟體介紹:新浪微博是一款潮人必備的微博手機客戶端,在新浪微博你能隨時隨地的了解一些有趣的資訊,超多明星在微博發布動態,加關注即可與你喜愛的明星互動。
  • 新浪微博
    2020-09-17 11:54 |新浪微博
  • 「眼觀」新浪微博沒有未來
    最近,新浪微博因為限流演出消息的事情,遭到音樂圈的一頓炮轟。面對老狼、周雲蓬、左小祖咒、葉蓓等知名音樂人的聲討,微博客服和微博音樂均迅速作出回應,表示將立即開展開啟規則復盤和優化工作。微博音樂還不忘藉機宣傳一下全新音樂人扶持計劃,表示將幫扶音樂新人,創造更優質音樂土壤與環境。至此,事情算是得到了妥善解決。然而圍繞微博的商業模式、盈利手段和算法問題的討論卻遠沒有結束。
  • 聚投訴網友投訴新浪微博:新浪微博註銷需要手持身份證拍照
    2019年11月19日 19:48,滕女士發起對新浪微博的投訴。截止發稿前,新浪微博有效投訴1163次。
  • 新浪微博如何收藏話題
    新浪微博的用戶在登錄微博後,當找到感興趣的話題時,可以將該話題收藏起來,以便日後查看。 在收藏話題後,在微博首頁右側會顯示收藏話題模塊。  新浪微博是一個由新浪網推出,提供微型博客服務的類Twitter網站。用戶可以通過網頁、WAP頁面、手機簡訊、彩信發布消息或上傳圖片。新浪可以把微博理解為「微型博客」或者「一句話博客」。
  • 新浪微博發布全新音樂產品
    《新浪微博發布全新音樂產品》文章已經歸檔,不再展示相關內容,編輯建議你查看最新於此相關的內容:微博:本次遊戲動漫清理不再針對同性戀內容【TechWeb報導】4月16日消息,新浪微博日前宣布將清理涉黃的、宣揚血腥暴力、同性戀題材的漫畫及短視頻內容
  • 翟大林新浪微博
    https://weibo.com/u/1161459683翟大林新浪微博
  • 《新浪微博》下載視頻保存位置
    很多小夥伴在手機新浪微博中下載了視頻後,找不到視頻保存在了什麼地方。那麼手機微博緩存的視頻在哪裡呢?下面小編來為大家介紹一下新浪微博下載視頻的保存位置,一起來看看。 很多小夥伴在手機新浪微博中下載了視頻後,找不到視頻保存在了什麼地方。
  • 新浪微博為何無法成功發布
    新浪微博無法成功發布有以下幾種情況: 1、違反網絡使用安全規則  如果發布內容違反了《新浪微博社區管理規定(試行)》或相關法規政策,微博則無法成功發布;2、網址包含不安全連結>  為了給廣大網友提供一個純淨的網絡環境,如果輸入的網址不符合相關法律法規的要求,疑似不安全連結,則無法成功發布;3、含有人身攻擊  發布的信息中可能會對其他用戶造成不好影響或涉及人身攻擊,不適合在微博發布和傳播。
  • 新浪微博:是如何一步步把自己作死的
    若涉及版權問題,煩請所有者於後臺留言,我們將在第一時間處理。謝謝支持!【編者按】在乾爹阿里搞年中大促的前幾天,新浪微博把該促銷頁面做成了微博皮膚,這般全面「跪舔」的姿態令人唏噓不已,新浪微博是怎樣把自己作死的呢?當我6月17日打開瀏覽器的新浪微博的時候,瞬間震驚了,以為自己點錯了網站,進入了一個電商大促頁面。
  • 感恩新浪微博,虎嗅微博認證帳號成了「不存在」的暱稱
    #最新更新# 上午還在說虎嗅發的正常內容被微博屏蔽,就在下午2點左右,虎嗅君發現微博上虎嗅的主頁已經不存在了,點擊可以直接跳轉404,大家可以一試哦~通過發布時間和閱讀量對比,虎嗅君(#一秒變柯南#)判斷新浪微博的人工屏蔽操作時間,在今天上午在9:49分到11:00之間。
  • 騰訊微博已死,新浪微博憑什麼獨佔賽道十餘年?
    在成立之初,新浪微博延續博客的優勢,邀請了大量的明星、名人加入開設帳號,並強化他們和普通用戶之間的互動。藉助這些明星和名人的影響力和流量,新浪微博在短時間內便積攢起來了很旺的人氣。次年,網易、搜狐、騰訊全部入場,推出自家的微博,開始了一場微博大戰,當時最亮眼的要數晚於新浪微博 8 個多月出生的騰訊微博。
  • 聚投訴網友投訴新浪微博:新浪微博帳號被盜,無處申述,客服中心也沒...
    2019年10月28日 17:31,林先生發起對新浪微博的投訴。截止發稿前,新浪微博有效投訴1149次。
  • 新浪微博如何設置籤名檔
    您可以在微博首頁找到 帳號-我的工具-籤名檔 根據您的需要選擇用途,獲得代碼之後就可以將代碼複製到需要添加到的地方即可,籤名檔會將您的微博內容及時顯示出來,您可以通過籤名檔和好友一起分享您的新鮮事。