文档章节

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

凯文加内特
 凯文加内特
发布于 2015/03/02 08:42
字数 1391
阅读 153
收藏 4
点赞 0
评论 0

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


本文转载自:http://storage.it168.com/a2012/0913/1397/000001397717.shtml

共有 人打赏支持
凯文加内特
粉丝 326
博文 665
码字总数 87615
作品 0
青岛
后端工程师
【PPT分享】58同城分布式存储架构实践

文档下载地址:http://www.oschina.net/bbs/doc/493 来自 58 同城技术中心架构部的徐振华

鉴客 ⋅ 2012/04/07 ⋅ 1

58同城沈剑:好的架构源于不停地衍变,而非设计

原文网址链接:http://www.csdn.net/article/2015-10-24/2826028 摘要:对很多创业公司而言,很难在初期就预估到流量十倍、百倍以及千倍以后网站架构会是什么样的一个状况。同时,如果系统初...

数通畅联 ⋅ 2015/10/30 ⋅ 0

58同城技术委员会执行主席沈剑:好的架构是进化来的,不是设计来的

【编者按】对很多创业公司而言,随着业务的增长,网站的流量也会经历不同的阶段。从十万流量到一百万流量,再从一百万流量跨越到一千万甚至上亿的流量,网站的架构需要经历哪些变化?我们一起...

OneAPM蓝海讯通 ⋅ 2015/10/26 ⋅ 0

58同城沈剑:好的架构是进化来的,不是设计来的

好的架构不是设计出来的而是演进出来的 对很多创业公司而言,在初期的时候,我们很难在初期就预估到流量十倍以后、百倍以后、一千倍以后网站的架构会变成什么样。当然,如果在最初的时期,就...

Idea ⋅ 01/11 ⋅ 0

细谈构建高性能的网站架构以及名站架构分析一览------my note

前几天,在淘宝网站买了一本书--《构建高性能web站点》,不得不说这是我第一次真正意义上完全看完一本书,尽管曾经看过许多技术类的书。其中一个原因,就是大部分的技术类书籍偏向枯燥,即使...

crossmix ⋅ 2016/03/22 ⋅ 0

消息称58同城将赴纳斯达克IPO 已提交上市文件

6月1日消息,据消息人士透露,58同城于美国时间今日10点向纳斯达克递交上市文件,最快将于月底登陆纳斯达克。如果成功上市,将成为国内分类信息网站第一股。对此,58同城表示不予评论。 酷讯...

rigger ⋅ 2011/06/02 ⋅ 0

Argo —— 58同城开源轻量级Java Web框架

摘要:58同城开源其轻量级Java Web框架——Argo,Argo起源与58同城的内部Web框架wf(Web Framework)。目前wf支撑着58同城几乎所有的Web站点。开发者们对此次开源的反响非常强烈,几乎一天时间...

leon_lau ⋅ 2013/03/20 ⋅ 0

数据库软件架构设计些什么

一、基本概念 概念一“单库” 概念二“分片” 分片解决的是“数据量太大”的问题,也就是通常说的“水平切分”。 一旦引入分片,势必有“数据路由”的概念,哪个数据访问哪个库。 路由规则通...

懂得-奉献 ⋅ 2016/12/02 ⋅ 0

微服务架构的两大解耦利器与最佳实践

这几年,微服务架构这个术语渐成热门词汇,但它不是一个全新架构,更不是一个包治百病的架构。那么,微服务架构究竟能够解决什么问题,又带来哪些痛点? 本文将与大家谈谈这个问题,以及微服...

雪夜凋零 ⋅ 2017/07/17 ⋅ 0

业内的一些可参考的资料搜集-58同城-推送

首先,对于任何一个架构来说,都是不断演进的,一开始都不会是一个胖子。 58同城高性能移动Push推送平台架构演进之路 http://mp.weixin.qq.com/s?biz=MzA5NTkwMzkwNQ==&mid=402609571&idx=1...

强子哥哥 ⋅ 2016/03/10 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

【elasticsearch】 随笔 Date datatype

一。时间类型的本质 首先json是没有时间类型的,对于es来说,时间类型的标示可以是下面三种情况 1.一个时间格式的字符串,如:"2014-11-27T08:05:32Z","2015-01-01" or "2015/01/01 12:10:3...

xiaomin0322 ⋅ 28分钟前 ⋅ 0

阿里云资源编排ROS使用教程

阿里云资源编排ROS详细内容: 阿里云资源编排ROS使用教程 资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、...

mcy0425 ⋅ 31分钟前 ⋅ 0

适配器设计模式

1、适配器模式 把一个类的接口变换成客户端所期待的另一种接口 使原本因接口不匹配而无法在一起工作的两个类能够在一起工作 分为类的适配器模式和对象的适配器模式 2、类适配器模式 类的适配...

职业搬砖20年 ⋅ 35分钟前 ⋅ 0

npm操作报错 _stream_writable.js:61

有一天 不知道什么原因(估计和node的版本有关),无论你做什么npm的操作 都会报错/usr/local/lib/node_modules/npm/node_modules/readable-stream/lib/_stream_writable.js:61 这时候只要执...

lilugirl ⋅ 39分钟前 ⋅ 0

Eclipse安装插件的几种方式

Eclipse魅力之一就是支持可扩展的插件,来丰富自身的功能,这种方式也是建立在开源思想之上的。具体使用什么方式去安装插件,要看我们拿到的是什么。 1. 拿到的是一串URL,如http://subclips...

GordonNemo ⋅ 41分钟前 ⋅ 0

div图片叠加

css实现代码如下: <div style="position: relative;"><!--这个层为外面的父层,需设置相对位置样式--> <div style="position: absolute;"><!--子层,需设置绝对位置样式--> <i......

niithub ⋅ 42分钟前 ⋅ 0

作用域slot

如果父组件需要使用子组件中的内容怎么办,比如父组件需要控制子组件的显示 <div id="root"><child><template slot-scope="props"><h1>{{props.item}} <div>编辑</div></h1><......

金于虎 ⋅ 45分钟前 ⋅ 1

HongHu commonservice-eureka 项目构建过程

上一篇我们回顾了关于 spring cloud eureka的相关基础知识,现在我们针对于HongHu cloud的eureka项目做以下构建,整个构建的过程很简单,我会将每一步都构建过程记录下来,希望可以帮助到大家...

明理萝 ⋅ 48分钟前 ⋅ 1

xml和对象的相互转化

@Data//setter和getter方法,toString和equals,hashcode方法@EqualsAndHashCode//代表重写equals和hashcode方法@XmlAccessorType(XmlAccessType.FIELD)public class Classroom {@X......

拐美人 ⋅ 48分钟前 ⋅ 0

tableView cell的高度 分组头部尾部的高度 自适应

@property (nonatomic) CGFloat rowHeight; // default is UITableViewAutomaticDimension@property (nonatomic) CGFloat sectionHeaderHeight; // default is UITableViewA......

娜一片蓝色星海 ⋅ 49分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部