用 Python 和 MongoDB 構建千萬級用戶的後台靠譜嗎?
01-26
可以, 只要你做好去中心化(可以並行), 支撐多少規模的用戶都可以. 說是不行的,
一個是成本太高, 收益太低, 比如銀行有錢可以上oracle存儲什麼的, 網站除非有收入一般不成,
一個是性能達不到, 比如twitter做實時的通訊, 如果你弄個非同步的架構或者sql, 等發到都不知道多久了, 還有就是瓶頸, 如果只用一台機器來響應, 再牛的機器和程序都頂不住哇. 算一下, 千萬用戶訪問頻率一天50pv, 那麼1秒 5787 響應, 峰值算10倍就是5萬, 用幾十台機器應該夠.這跟python和mongodb關係不大,和你的業務和架構有關。就看你設計的架構能不能承載這個數量級的用戶。
你用什麼都能做千萬級用戶的後台
1. 所謂的千萬級用戶,還是有很多種不同的。大概的,可以根據讀寫頻率的比例來劃分,如讀多寫少(資訊類)、讀多寫多(社交類)、讀少寫多(記錄類,如用戶行為追蹤等)2. 既然樓主問的是python和mongodb,我先正面的回答一下。 python的問題在於純cpu運算性能低以及多線程的GIL限制,前者對於一般應用基本沒影響(絕大部分的CRUD服務瓶頸都在IO);後者有必要時完全可以通過多進程方式繞過。
mongodb的問題在於無法完成複雜的多表連接查詢。但這點在千萬級海量服務中,本來就應該避免的,而且mongodb自帶的replicationset、GridFS等分散式機制很適合用于海量服務中。
3. 樓上也很多朋友提到關鍵是架構設計,這點我也萬分贊同。設計海量服務系統,很重要的一點是「大系統小做」、「分而治之」,換句時髦點的說法叫「微服務」。縱向的把不同的業務模塊拆分開來,根據不同的業務特點選用最適用的技術(有的可以定時緩存放棄強一致性,有的需要嚴格的ACID保障;有的做簡單CRUD用python這種腳本語言杠杠的;有的比如做大規模的圖片處理等燒CPU業務果斷上C/C++);橫向把海量數據分區存放,保證單個節點(表/庫/機器/集群)數據操作性能可控。這是最考驗架構師功力的地方,也是後台開發這個行當的魅力所在Mongodb吃內存很嚴重,如果內存不夠,查詢速度會低於mysql,建議深思
這跟語言沒有關係,我公司用python+Mysql處理近億條數據記錄
建議去查一下豆瓣的架構。
這個和語言關係不大的。架構要好!
MongoDB不適合做後台業務邏輯
推薦閱讀:
※微軟校園Hackathon南京站 無駭客 不青春
※煎蛋段子爬蟲prototype
※MongoDB的安裝和配置
※MongoDB 存儲引擎 mongorocks 原理解析