58和百姓網的技術學習

王滔發表於2013-12-15

http://v.youku.com/v_show/id_XMzc4OTA4MDky.html  58使用mongdb


http://v.youku.com/v_show/id_XMzM4MDYwNTQw.html 趕集網。

http://v.youku.com/v_show/id_XMzQxNDk1MDYw.html 去哪兒網搜尋

只有最適合的。沒有最好的。

預算是1萬個併發。假設當時來了10萬個併發,導致網站打不開。怎麼應對:
做一些佇列。路由演算法。儲存領域做到擴充套件。儲存領域難的問題是擴充套件方面。水平,均勻的分散到多個節點上去。節點冗餘的必要性,容災。

58:mysql在使用,mongdb也在使用。帖子(就是釋出的資訊)排序,放在資料庫中是不能滿足需求的。
之前用的mysql。
分庫策略:按照使用者id取模,取hash值進行切分。隨機數的跳躍性較大,對資料庫影響大。
一般是以時間為基準來進行分片。當時從安全性,可控性。還是考慮了傳統的方案mysql。
帖子點選數:招聘,簡歷下載次數等。做成了一個通用性的mongdb儲存。

要考慮可控性:為什麼不用其他的nosql,偏偏選擇mongdb?因為其他系統雖然瞭解,但是不會使用。
考慮過渡性:從以前的sql轉換到mongdb不用能夠平滑過渡。思考要做到線性擴充套件,比如加一個分片,需要手動去部署。

cdn為解決問題:網路傳輸會有損害,距離越遠損害越大。有延遲。cdn是為減少網路延遲。
圖片儲存多份的問題,需要很大的資料儲存量。他們為了解決這個問題,使用者可以傳遞引數我們實時生成圖片。java 和c++



http://www.infoq.com/cn/presentations/pxl-baixing-optimize-network-speed
百姓網:
在程式中放一段程式碼。記錄每次sql查詢所用的時間。如果超過預期,則儲存下來,這樣能夠避免以後這種sql集中起來。線上上能夠把問題解決掉。
選擇機房:讓使用者來告訴我們哪個機房最好。監控使用者下載一個檔案用多久。自己寫監控程式碼。使用onload事件。這種方式能夠了解到,你這個機房,我在上海訪問的時候下載多長時間,在北京訪問的時候是多長時間。

監控一個使用者下載檔案所用的時間:在伺服器記錄一個頁面初始化時的時間 然後再記錄頁面載入完畢時的時間 相減就行了。url地址中要有個隨機數,這樣避免使用者第二次下載的時候cache住了。

多域名問題(城市),總共才10個人,不可能各個城市都去搭建機房難以維護,就比較麻煩。於是就用了兩個機房,北京和上海各一個。把配置拷貝,一模一樣的配置。主從結構。
北京伺服器不能寫,只能讀。寫程式碼的人就麻煩。統計資料問題。同步更新問題。
北京用刀鋒伺服器,所以硬體上好,避免工程師跑到北京去來回跑維護。刀鋒伺服器2萬塊錢(用三年)。
雙機房問題,南北各一個機房。再給一次機會,會選擇一個機房。

相關文章