58同城徐振华:58同城分布式存储架构

2012年9月13日,由盛拓传媒旗下的IT168、ChinaUnix、ITPUB联合主办为期三天(2012年9月13日~2012年9月15日)的第四届中国系统架构师大会于在北京永泰福朋喜来登酒店隆重召开。来自百度、淘宝、腾讯、IBM、新浪、网易、奇虎360等IT巨头的讲师分享了业界最先进的技术经验与趋势。

58同城徐同华:58同城分布式存储架构

下午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+的模式。提供了友好的用户界面,支持多种数据源,只需要编写部分业务代码就可以进行运行和调度。可进行用户点击行为分析,例如按时间、区域统计信息点击数,分析用户的行为模式。