存档

文章标签 ‘Memcache’

分布式数据库在豆瓣的应用-刘洪清分享-笔记整理

2010年4月11日 1 条评论

豆瓣 刘洪清分享。

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内存,主要就用于缓存处理。至于具体都缓存什么数据,这在具体项目中会有不同。

php Memcache 安装(windows环境)

2010年1月27日 没有评论

Windows下的Memcache安装
1. 下载memcache的windows稳定版,解压放某个盘下面,比如在c:\memcached
2. 在终端(也即cmd命令界面)下输入 ‘c:\memcached\memcached.exe -d install’ 安装
3. 再输入: ‘c:\memcached\memcached.exe -d start’ 启动。NOTE: 以后memcached将作为windows的一个服务每次开机时自动启动。这样服务器端已经安装完毕了。
4.下载php_memcache.dll,请自己查找对应的php版本的文件
5. 在C:\winnt\php.ini 加入一行 ‘extension=php_memcache.dll’
6.重新启动Apache,然后查看一下phpinfo,如果有memcache,那么就说明安装成功!

memcached的基本设置

-p 监听的端口
-l 连接的IP地址, 默认是本机
-d start 启动memcached服务
-d restart 重起memcached服务
-d stop|shutdown 关闭正在运行的memcached服务
-d install 安装memcached服务
-d uninstall 卸载memcached服务
-u 以的身份运行 (仅在以root运行的时候有效)
-m 最大内存使用,单位MB。默认64MB
-M 内存耗尽时返回错误,而不是删除项
-c 最大同时连接数,默认是1024
-f 块大小增长因子,默认是1.25
-n 最小分配空间,key+value+flags默认是48
-h 显示帮助

Memcache环境测试
运行下面的php文件,如果有输出This is a test!,就表示环境搭建成功。开始领略Memcache的魅力把

< ?php
$mem = new Memcache;
$mem->connect(”127.0.0.1″, 11211);
$mem->set(’key’, ‘This is a test!’, 0, 60);
$val = $mem->get(’key’);
echo $val;
?>

分类: PHP开发 标签: ,