這次beta沙龍請了高春輝的團隊來講他們的經驗。本來我是希望老高講,不過他說最近的系統主要是許超前在帶人開發,所以實際的演講人是許超前。
國內最早讓大家意識到網站的發展階段的文檔大概就是于敦德翻譯的livejournal發展歷程的ppt。這次許超前的演講非常類似livejournal的那篇。
手機之家用了7年時間,發展到1000萬以上用戶,3000萬以上帖子,1.1tb附件,每天780萬以上的pv這個規模。這個數字雖然比不上大型互聯網公司,但是對一個只有幾個人的技術團隊,已經是一個很令人驕傲的數字了。
livejournal在發展中一邊用著開源軟件,一邊造輪子,最后造出來了memcached這個簡單而強大的工具,最終成了這一代網站開發離不開的東西。
這次演講有意思的部分就是從memcached相關的事情開始的。
一 關于memcached的應用和管理。
memcached確實是個簡單,好用,見效快的東西。不過簡單也有簡單的問題,程序員各有各的習慣,結果導致key很不規范,用什么方式的都有。這個問題恐怕用過memcached的人都深有體會。當然,用開發規范來限制程序員的行為是一個辦法,但這不是技術的方法。技術的方法,是增加一個層。于是手機之家開發了一個cache管理器,把程序員和memcached隔離開,由這個層來統一管理緩存。
這是個不錯的思想。當key被一個中間層接管了之后,事實上就可以給被緩存的對象實現更復雜的結構了。memcached是扁平的,只有一層。數據保存的方法仍然可以保持一層,但是通過對key的結構設計,就可以實現多層的結構,甚至在層和層之間實現繼承關系,或是樹結構。手機之家稱之為namespace。通過這種方式,可以批量的管理和控制緩存對象。
換言之,索引結構可以復雜,但存放對象本身的地方是個key-value型的。friendfeed關于mysql應用的文檔也提到了這種方法。用這種方法,可以在一個比較小的索引庫中進行各種操作,無論是遍歷還是查找,甚至處理一個節點下所有的值。最終得到key-value庫的key。這個思路應該可以用于很多地方。
手機之家在cache上下的功夫很多,演講稿中很多頁是在講cache系統的演變。對他們的應用方式來說,如果cache被擊穿了,所有的壓力到達了數據庫,那么性能就會急劇下降,所以對cache的管理變的尤其重要。手機之家的這種嘗試確實解決了很多問題。
二 仍然和cache有關
完成了前面說的cache管理器,他們還想更近一步,把數據訪問,緩存,尤其是對庫的切分整個包裝起來,給程序員一個透明的接口。這樣程序員不用關心到底存在多少個庫,怎么分布,是否需要從cache中取數據等等細節問題。
這也是個常見問題。所有從數據庫取數據的地方都要先從memcached讀一次,代碼很難看,也很羅嗦。這個包裝完成之后,這就是一個能提高生產力的工具了。直接有效,也確實節約了開發成本。這個被他們稱做dal,很俗的名字啊:d
三 這樣用java
php用來做以上的2個部件,效果并不好,效率很低。事實上php就不是干這個用的。最后他們用java+nio實現了一個性能不錯的服務。把所有問題都解決了。
用在網頁上java/jsp確實不如jsp,但是用來做服務器還是很合適的。我詢問過他們是否在gc的時候遇到性能問題,答案是目前還沒有。如果穩妥起見,對于這種方案,我更愿意采用c,不過考慮到團隊情況,和java程序員比c更容易找到,手機之家用java來開發也是一個折中方案。
總結手機之家經驗分享的意義,我覺得在于,我們很少有機會看到一個網站從0做到接近千萬的pv。就算在一個大的互聯網工作過,所看到也只不過是冰山一角,很難有操刀動手的機會。手機之家的成長用了7年,老高始終在帶著團隊做優化。這種經驗很難獲得。
我們常常講,做網站好像爬山,一個陡坡,一個緩坡。我見過很多網站在50萬pv之下就被技術卡住了。很多很多的公司,就在某一次上坡的時候死了。
沙龍結束后,晚上,我和老高在gtalk上又聊了很久。我覺得他們做出來的這套方案,對很多公司都有幫助。至少跨越幾個困難階段。這就好像memcached帶來的,在沒有memcached的時候,很多網站抗不住10萬這個級別的pv,有了memcached,哪怕用的很糟糕,50萬這個級別也能到了。老高這個方案或許能讓很多網站進入"百萬俱樂部"。
說起來做互聯網,中國人比外國人難很多。我們面對的用戶規模比他們大的多,但是廣告價值小的多。我們做一個網站,可能在第一年就碰上了第一次性能極限,但這時候錢還沒有影。外國人可能3年才到達,但是人家已經賺了不少錢,也有足夠的資源來解決問題。對中國的互聯網來說,有一些這種解決方案確實很有幫助。
當然,未來還是未知的。老高和手機之家是如何期待這個產品的未來的?是開源,還是做解決方案?不管怎么說,至少我相信,他們做一個不錯的輪子,應該不至于只給自己用。
新聞熱點
疑難解答