下午58同城系統(tǒng)架構部徐振華介紹了58同城如何應用分布式存儲來應對龐大的訪問量壓力。
58同城是位于北京的分類信息網(wǎng)站,提供房產(chǎn)、招聘、黃頁、團購、交友、二手、寵物、車輛、周邊游等海量分類信息。58在google top1000全球網(wǎng)站排行版中排名在50-60左右,而支撐58同城大規(guī)模流量的都是基于58同城自主研發(fā)的技術。作為一個創(chuàng)業(yè)公司,為了應對業(yè)務快速發(fā)展,58應用開源技術實現(xiàn)后臺存儲架構。
實際上,開源的分布式存儲在技術和產(chǎn)品技術上已經(jīng)取得了巨大的突破和成就。例如Google的Dremel原理談到如何用3秒時間分析1PB數(shù)據(jù),Dremel是Google 的“交互式”數(shù)據(jù)分析系統(tǒng)。可以組建成規(guī)模上千的集群,處理PB級別的數(shù)據(jù)。一般而言磁盤的順序讀速度在100MB/s上下,在1秒內(nèi)處理1TB數(shù)據(jù)意味著至少需要1萬個磁盤的并發(fā)讀,Dremel正是通過分布式軟件實現(xiàn)大規(guī)模的磁盤并發(fā),達到不可思議的處理量。
應用開源分布式技術的Dropbox聲稱:每天要接受2億次文件上傳,用戶總數(shù)達到2500萬,估值在50億美元到100億美元之間。與此同時,某云存儲服務商官方聲明:稱因為機房中的一臺物理機本地磁盤損壞,導致部分用戶數(shù)據(jù)丟失。
58平臺正在從分類信息平臺向電子商務平臺轉(zhuǎn)型,決定了58同城應用的技術需要應對58同城的轉(zhuǎn)型需求。徐同華分享了58同城在信息系統(tǒng)架構、站內(nèi)信和統(tǒng)計數(shù)實時架構、圖形處理存儲架構與統(tǒng)計分析平臺。
談到分布式存儲的架構設計原則,徐振華談到包括幾個要點,首先需要分析需求做好平衡。一個系統(tǒng)很難十全十美,最重要是確定什么是核心的需求,什么是次要一級的需求。分析需求包括業(yè)務場景的詳細分析,是否是核心需求?容量需求多少?數(shù)據(jù)結構如何,以結構化數(shù)據(jù)為主還是非結構化數(shù)據(jù)為主,以及數(shù)據(jù)的訪問模式,讀寫比例、是否要求實時讀寫、屬于順序讀寫還是隨機讀寫。
信息對58同城至關重要,因而58同城選擇了較為成熟的架構進行信息存儲,核心系統(tǒng)選擇了mySQL,選擇方案的依據(jù)就是信息存儲系統(tǒng)對58同城極為重要,務必保證穩(wěn)定性。引入新技術往往會帶來一些風險。
站內(nèi)信和統(tǒng)計數(shù)實時架構,開始的時候統(tǒng)計數(shù)實時架構用MySQL,但很快發(fā)現(xiàn)了MySQL的寫性能瓶頸,包括58同城還嘗試過自己寫一套分布式存儲文件系統(tǒng),但發(fā)現(xiàn)維護與編寫成本過于高昂,最終,58同城選擇了mongos+auto Sharding的模式,徐同化談到,mongodb的優(yōu)勢包括穩(wěn)定、高可用、高性能、且可以線性擴展,性能表現(xiàn)好,查詢支持好等等。
圖片存儲是自主開發(fā)的文件系統(tǒng),根據(jù)頁面請求動態(tài)生成圖片位置,數(shù)據(jù)實時計算,用以滿足前端業(yè)務多樣性。架構應用了前段CDN(Squid網(wǎng)絡延時)+(LVS)+Ngix(代理,實時生成縮略圖)+httpServer(接入層,webdav,SSO)+Simple GFS(主-從模式)
徐振華介紹,58同城在進行系統(tǒng)架構時學習的對象包括google和Facebook,都是業(yè)內(nèi)先進的互聯(lián)網(wǎng)公司,且開源了自己的后臺技術。徐振華認為Facebook提供了較好的前沿方向,為58同城構架圖片架構給予了參考意義。
58同城圖片架構可以實時生成圖片,小圖放在內(nèi)存中,因為文件小、占用空間較小;較大的圖片放在SSD磁盤上,而訪問不經(jīng)常的圖片放到更為便宜的介質(zhì)上。這一套系統(tǒng)的優(yōu)勢在于:性能得到了保證,同時成本較低。
最后58同城統(tǒng)計分析平臺應用了Hadoop+zookeeper+hbase+redis+mongodb+的模式。提供了友好的用戶界面,支持多種數(shù)據(jù)源,只需要編寫部分業(yè)務代碼就可以進行運行和調(diào)度??蛇M行用戶點擊行為分析,例如按時間、區(qū)域統(tǒng)計信息點擊數(shù),分析用戶的行為模式。