下午58同城系統(tǒng)架構(gòu)部徐振華介紹了58同城如何應(yīng)用分布式存儲(chǔ)來(lái)應(yīng)對(duì)龐大的訪問(wèn)量壓力。

58同城是位于北京的分類(lèi)信息網(wǎng)站,提供房產(chǎn)、招聘、黃頁(yè)、團(tuán)購(gòu)、交友、二手、寵物、車(chē)輛、周邊游等海量分類(lèi)信息。58在google top1000全球網(wǎng)站排行版中排名在50-60左右,而支撐58同城大規(guī)模流量的都是基于58同城自主研發(fā)的技術(shù)。作為一個(gè)創(chuàng)業(yè)公司,為了應(yīng)對(duì)業(yè)務(wù)快速發(fā)展,58應(yīng)用開(kāi)源技術(shù)實(shí)現(xiàn)后臺(tái)存儲(chǔ)架構(gòu)。

實(shí)際上,開(kāi)源的分布式存儲(chǔ)在技術(shù)和產(chǎn)品技術(shù)上已經(jīng)取得了巨大的突破和成就。例如Google的Dremel原理談到如何用3秒時(shí)間分析1PB數(shù)據(jù),Dremel是Google 的“交互式”數(shù)據(jù)分析系統(tǒng)??梢越M建成規(guī)模上千的集群,處理PB級(jí)別的數(shù)據(jù)。一般而言磁盤(pán)的順序讀速度在100MB/s上下,在1秒內(nèi)處理1TB數(shù)據(jù)意味著至少需要1萬(wàn)個(gè)磁盤(pán)的并發(fā)讀,Dremel正是通過(guò)分布式軟件實(shí)現(xiàn)大規(guī)模的磁盤(pán)并發(fā),達(dá)到不可思議的處理量。

應(yīng)用開(kāi)源分布式技術(shù)的Dropbox聲稱:每天要接受2億次文件上傳,用戶總數(shù)達(dá)到2500萬(wàn),估值在50億美元到100億美元之間。與此同時(shí),某云存儲(chǔ)服務(wù)商官方聲明:稱因?yàn)闄C(jī)房中的一臺(tái)物理機(jī)本地磁盤(pán)損壞,導(dǎo)致部分用戶數(shù)據(jù)丟失。

58平臺(tái)正在從分類(lèi)信息平臺(tái)向電子商務(wù)平臺(tái)轉(zhuǎn)型,決定了58同城應(yīng)用的技術(shù)需要應(yīng)對(duì)58同城的轉(zhuǎn)型需求。徐同華分享了58同城在信息系統(tǒng)架構(gòu)、站內(nèi)信和統(tǒng)計(jì)數(shù)實(shí)時(shí)架構(gòu)、圖形處理存儲(chǔ)架構(gòu)與統(tǒng)計(jì)分析平臺(tái)。

談到分布式存儲(chǔ)的架構(gòu)設(shè)計(jì)原則,徐振華談到包括幾個(gè)要點(diǎn),首先需要分析需求做好平衡。一個(gè)系統(tǒng)很難十全十美,最重要是確定什么是核心的需求,什么是次要一級(jí)的需求。分析需求包括業(yè)務(wù)場(chǎng)景的詳細(xì)分析,是否是核心需求?容量需求多少?數(shù)據(jù)結(jié)構(gòu)如何,以結(jié)構(gòu)化數(shù)據(jù)為主還是非結(jié)構(gòu)化數(shù)據(jù)為主,以及數(shù)據(jù)的訪問(wèn)模式,讀寫(xiě)比例、是否要求實(shí)時(shí)讀寫(xiě)、屬于順序讀寫(xiě)還是隨機(jī)讀寫(xiě)。

信息對(duì)58同城至關(guān)重要,因而58同城選擇了較為成熟的架構(gòu)進(jìn)行信息存儲(chǔ),核心系統(tǒng)選擇了mySQL,選擇方案的依據(jù)就是信息存儲(chǔ)系統(tǒng)對(duì)58同城極為重要,務(wù)必保證穩(wěn)定性。引入新技術(shù)往往會(huì)帶來(lái)一些風(fēng)險(xiǎn)。

站內(nèi)信和統(tǒng)計(jì)數(shù)實(shí)時(shí)架構(gòu),開(kāi)始的時(shí)候統(tǒng)計(jì)數(shù)實(shí)時(shí)架構(gòu)用MySQL,但很快發(fā)現(xiàn)了MySQL的寫(xiě)性能瓶頸,包括58同城還嘗試過(guò)自己寫(xiě)一套分布式存儲(chǔ)文件系統(tǒng),但發(fā)現(xiàn)維護(hù)與編寫(xiě)成本過(guò)于高昂,最終,58同城選擇了mongos+auto Sharding的模式,徐同化談到,mongodb的優(yōu)勢(shì)包括穩(wěn)定、高可用、高性能、且可以線性擴(kuò)展,性能表現(xiàn)好,查詢支持好等等。

圖片存儲(chǔ)是自主開(kāi)發(fā)的文件系統(tǒng),根據(jù)頁(yè)面請(qǐng)求動(dòng)態(tài)生成圖片位置,數(shù)據(jù)實(shí)時(shí)計(jì)算,用以滿足前端業(yè)務(wù)多樣性。架構(gòu)應(yīng)用了前段CDN(Squid網(wǎng)絡(luò)延時(shí))+(LVS)+Ngix(代理,實(shí)時(shí)生成縮略圖)+httpServer(接入層,webdav,SSO)+Simple GFS(主-從模式)

徐振華介紹,58同城在進(jìn)行系統(tǒng)架構(gòu)時(shí)學(xué)習(xí)的對(duì)象包括google和Facebook,都是業(yè)內(nèi)先進(jìn)的互聯(lián)網(wǎng)公司,且開(kāi)源了自己的后臺(tái)技術(shù)。徐振華認(rèn)為Facebook提供了較好的前沿方向,為58同城構(gòu)架圖片架構(gòu)給予了參考意義。

58同城圖片架構(gòu)可以實(shí)時(shí)生成圖片,小圖放在內(nèi)存中,因?yàn)槲募?、占用空間較小;較大的圖片放在SSD磁盤(pán)上,而訪問(wèn)不經(jīng)常的圖片放到更為便宜的介質(zhì)上。這一套系統(tǒng)的優(yōu)勢(shì)在于:性能得到了保證,同時(shí)成本較低。

最后58同城統(tǒng)計(jì)分析平臺(tái)應(yīng)用了Hadoop+zookeeper+hbase+redis+mongodb+的模式。提供了友好的用戶界面,支持多種數(shù)據(jù)源,只需要編寫(xiě)部分業(yè)務(wù)代碼就可以進(jìn)行運(yùn)行和調(diào)度。可進(jìn)行用戶點(diǎn)擊行為分析,例如按時(shí)間、區(qū)域統(tǒng)計(jì)信息點(diǎn)擊數(shù),分析用戶的行為模式。

分享到

wangguang

相關(guān)推薦