May28

分布式数据库在豆瓣的应用

Author: 刘洪清  Click: 5530   Date: 2010.05.28 @ 00:17:53 am Category: 架构

豆瓣 刘洪清分享。

Linux + Nginx + mysql + python 平台。

每天有1000万小组话题,1600万组照片,200G结构化数据,800G文本,10T图片,2T日志,6T音乐,2T各种备份数据。

针对这些数据,我们需要考虑。

1、  可靠性。(持久性,一致性)

2、  可用性。

3、  伸缩性。

4、  性能。

5、  成本。

将这些数据再进行分类,可以分为结构化数据(关系,广播等),小文件(图片,文章,音乐等),大文件(备份,日志等)。

一、结构化数据。

(一)、特点。

1、结构固定。

2、可按条件查询

3、记录小而且多。

4、数据之间有关联。

5、可以批量查询。

(二)管理。采用mysql管理。

1、结构化存储。

2、多索引。

3、支持事务等。

(三)mysql实践一。

1、使用InnoDB引擎。

2、使用基本查询,外部join。(将join放在逻辑层去处理,这样大大提高了mysql查询的效率。)

3、通过memcache降低服务器端压力。

4、分库,分表(垂直分表)。

5、分离文本字段。

(四)mysql实践二

1、Master(RW)  ßà  Master(备份)  à  Slave(容错)

2、双SCSI硬盘做Raid0

3、半自动Fail Over

4、多实例混合部署。

二、小文件处理。

(一)、特点

1、访问方式:get set delete

2、高可用。Fail-Over

3、大空间:10K-5M 增长快。

4、用户数据,很重要。

5、基本无修改,一致性要求低。

6、随机访问,高并发,大量IO操作。

(二)单机存储。

1、reiserfs。

2、本地,远程,WEBDAV,NFS

3、目录结构。

4、用rsync备份即可。

(三)多级存储。

1、MogileFS

2、瓶颈是 Tracker(Mysql)

3、数据迁移比较慢。

(四)BeansDB

1、Hash存储,不需要中心节点。

2、数据库存储,TokyoCabimet.

3、每个区间对应多个节点。

4、复制:客户端写多次。

5、依次读取,直到有数据。

6、Hash Tree ,快速同步。

7、扩容方法:

A、拷贝数据。

B、调整配置。

C、同步数据。

8、性能

目前5台服务器,4T*3 数据,1.5T*3 文件。 可以用1年多。

三、大文件处理。

(一)、特点

1、文件大,数量少,比较重要。

2、线上服务产生,在操作时,不能影响线上使用。

3、一次生成,无需修改。

4、定时或者偶尔访问。

(二)比较少时,单机管理,定时打包,rsync备份。

(三)比较多时。

1、类FS系统

2、MooseFS

(四)MooseFS

1、C实现,轻量,简洁,高效,稳定。

2、FOSE客户端,操作方便

3、按文件/目录拷贝数据。

4、web监视界面。

5、单Master,多MasterLog,手动操作。

(五)日志数据分析

1、导入到数据仓库。InfoBright,KDB+

2、Hadoop

针对以上三类文件,再总结下。

200G结构化数据 — Mysql管理。

800G文件,10T图片,6T音乐  — BeansDB管理。

2T日志,2T备份  —- InfoBright  MFS

补充:

1、  针对文件管理,涉及到全文检索,豆瓣采用了“虾片”。

2、  其每个DB有3个服务器,一个是线上服务,一个做数据备份,一个做容错。

3、  其线上服务器,40G内存,主要用于做缓存处理。

4、  Master1(读和写)+Master2(Master1的备份) + slave ,这样的结构决定了,Master1或者Master2将要承受很大的压力。如何缓解这个压力,有一个很重要的功课,就是缓存。豆瓣这个master1有40G内存,主要就用于缓存处理。至于具体都缓存什么数据,这在具体项目中会有不同。



TAG:   豆瓣

    评论
    • 提交

    分类

    标签

    归档

    最新评论

    Abyss在00:04:28评论了
    Linux中ramdisk,tmpfs,ramfs的介绍与性能测试
    shallwe99在10:21:17评论了
    【原创】如何在微信小程序开发中正确的使用vant ui组件
    默一在09:04:53评论了
    Berkeley DB 由浅入深【转自架构师杨建】
    Memory在14:09:22评论了
    【原创】最佳PHP框架选择(phalcon,yaf,laravel,thinkphp,yii)
    leo在17:57:04评论了
    shell中使用while循环ssh的注意事项

    我看过的书

    链接

    其他

    访问本站种子 本站平均热度:7908 c° 本站链接数:29 个 本站标签数:460 个 本站被评论次数:94 次