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