我從Node.js的角度來看這裏,普遍的共識似乎是它爲IO綁定用例而閃耀。我並沒有試圖建立下一個Facebook/Twitter,但我的問題是社交網站通常I/O綁定或CPU綁定?由於社交網絡可以涵蓋如此廣泛的背景,我將進一步指定我特別關注聊天,即時消息,跟蹤用戶和狀態更新等功能。對於這些類型的事情,瓶頸通常發生在CPU或IO端?社交網站,如Facebook和Twitter的CPU或IO綁定?
-1
A
回答
3
我是一個網站的主要工程師,每月活躍用戶數爲20萬。我們肯定是I/O綁定的,很少(如果曾經)擔心應用服務器的性能。
縮放CPU非常簡單。您在網絡上啓動一個新節點並將其添加到我們的負載均衡器的可用池中。另一方面,擴展I/O是非常棘手和昂貴的,因爲數據必須保持可尋址性和合理的一致性。
在讀取方面,您可以通過支持複製進行擴展。這需要編寫能夠容忍複製延遲的軟件 - 數據從寫入數據庫移動到讀取數據庫所需的時間。我們有4臺讀取服務器用於1臺寫入服務器,並且在高負載下,延遲可能是幾秒鐘。我們選擇實現具有回寫緩存的I/O訪問,其中緩存由memcached和一系列高RAM服務器供電。
在寫入端,爲了維持併發寫入的數量,數據分片是必需的。這意味着你不能使用表連接,並且你在整個碎片中失去原子性。同樣,你的軟件必須容忍這一點。另外,在處理大量二進制數據(如照片圖片)時,大規模網站通常會使用爲優化文件系統I/O而優化的CDN。
我的觀點是,對於典型的社交網站來說,花更多的時間和金錢來縮放I/O與CPU之間的關係。
相關問題
- 1. 如何通過寶石登出社交網站OmniAuth Facebook/Twitter
- 2. alertdialog分享到社交網絡如Facebook或Twitter
- 3. 如何將Twitter和Facebook社交媒體按鈕添加到我的網站?
- 4. facebook的社交插件網站
- 5. 社交登錄Facebook,Twitter和Google
- 6. 如何在社交網站2.1.3中從社交網站註銷?
- 7. 將內容推送到像facebook,twitter linkedin,youtube和vimeo等社交網站
- 8. 使用ASP.NET或PHP的社交網站
- 9. 如何製作自定義Facebook,Twitter和其他社交網絡按鈕
- 10. 通過Android社交網絡使用Facebook和Twitter
- 11. 其他網站上的Facebook洞察和社交插件
- 12. 如何在facebook,google等社交網站上分享網址?
- 13. 社交網站的引導
- 14. 安全的社交網站
- 15. 如何與我的網站(php)和Facebook或Twitter通信?
- 16. Android,如何過濾只有Facebook和Twitter的社交分享?
- 17. Facebook和其他社交網站在科爾多瓦實施3.3.0
- 18. 我想在laravel 4.2社交網站google和facebook
- 19. 社交網站網站按鈕庫
- 20. 識別來自社交網絡的流量(Facebook,Twitter,Google +)
- 21. Blackberry是否有任何Java SDK連接到社交網站(Facebook Twitter除外)
- 22. 社交網站的Joomla VS笨社交網絡
- 23. 對社交網站建模
- 24. 社交網站發展
- 25. Django社交網站與heroku
- 26. 整合與社交網站
- 27. Apache mpm爲社交網站
- 28. 如何通過截圖分享Facebook和Twitter(社交框架)?
- 29. 連接我們的網站和社交網站
- 30. 使用ASP.NET的社交網絡網站