原文地址:http://liriguang.iteye.com/blog/693474
今天看了周兆兆写的“又拍网架构中的分库设计”从受益不少,又拍网是一个照片分享社区,从2005年6月至今积累了260万用户,1.1亿张照片,目前的日访问量为200多万,一个网站经过精心经营一定有很大的改进。下面是“又拍网架构中的分库设计”几个要点。
尽量用开源产品
开源,免费都是我们最喜欢听的产品,无论在哪个技术领域。现在很多大型电子商务公司都大量使用开源产品,淘宝就是一个典型范例。现在好多web2网站都使用开源的,包括原来接触过豆瓣网架构,手机之家的架构,facebook架构等都是用大量开源产品又拍主要使用:包括MySQL、PHP、nginx、Python、memcached、redis、Solr、Hadoop和RabbitMQ等等。又拍网的服务器端开发语言主要是PHP和Python,其中PHP用于编写Web逻辑(通过HTTP和用户直接打交道), 而Python则主要用于开发内部服务和后台任务。在客户端则使用了大量的Javascript, 主要使用MooTools这个JS框架。 另外,把图片处理过程从PHP进程里独立出来变成一个服务。这个服务基于nginx,但是是作为nginx的一个模块而开放REST API。
数据库分库
通过主从数据库,分解压力,其实又拍从库主要是做备份。其实他们大可以做读写分离来减轻压力。不过使用了memcached来减轻压力,还是不错的选择。把相对变化比较小的query数据放到memcached中。
我到建议他们开发独立的搜索引擎系统。
数据水平划分
数据垂直划分很简单,把数据安装业务分开,又拍使用的按功能模块拆分,比如可以将群组相关表和照片相关表存放在不同的数据库中,这种方式多个数据库之间的表结构不同。
水平划分
水平划分是将原来一个库的数据划分到多个不同的数据库中,每个库的表结构完全一样。在文档中题了几种划分方式:按照奇偶ID;按照id大小范围,一定范围在一个库;建立映射关系表,又拍就是采用了该方法。通过memcached保存关系表来提高访问速度。
其实水平划分规则还有很多,也可以采取“Memcached Consistent Hashin”方法。还可以通过数字取取模等。
又拍总结了几条水平划分后出现的问题:不能执行跨库的关联查询;不能保证数据的一致/完整性;所有查询必须提供数据库线索;自增ID不能唯一。其实我倒不觉得是问题,根据业务的可以容忍度来做相应的处理就达到比较好的效果了。
在文档中没有提及图片是怎么存储的,我想又拍应该也开发了和豆瓣网差不多的图片存储系统(豆瓣使用doubanfs)。
看完又拍架构文章后受益不少,任何一个成功的网站都是通过技术人员不断耕耘,用加班和熬夜换来的成果,有苦有乐,从中获取的不是切身不能体会。
感谢周兆兆的分享,文档地址:http://www.infoq.com/cn/articles/yupoo-partition-database
分享到:
相关推荐
由于是pdf的无法复制!所以简介就免了!很不错的!
讲解了在数据库压力较大的web 2.0网站中如何实现分库设计的思路,有参考价值
架构设计架构设计架构设计架构设计架构设计架构设计架构设计架构设计架构设计架构设计架构设计架构设计架构设计架构设计架构设计架构设计架构设计架构设计架构设计架构设计架构设计架构设计架构设计架构设计架构设计...
在不同的架构设计方法中出现的软件架构视图种类很多,本文介绍最常用的两种架构视图——逻辑架构视图和物理架构视图,并通过具体案例的分析说明如何运用它们进行架构设计。当观察和描述事物大局的时候,逻辑架构和...
华为出品-安全架构设计方法指南,...华为安全架构设计方法流程示意图,安全架构设计方法支撑能力,安全架构设计原则,架构级安全威胁分析,安全架构设计的知识库,安全方案设计的抽象模型,安全方案设计的优秀实践等
系统架构设计程序员向架构师转型之路
又拍网架构中的消息_任务系统
本书从基本原理入手,介绍软件架构设计过程中涉及的一些概念、流程、方法、用到的工作产品及可重用的资源,从第6章开始,通过介绍一个具体的案例来阐述如 何定义需求、创建逻辑架构、创建物理架构。在第10章“进阶”...
软件 架构 设计 指南软件 架构 设计 指南
软考系统架构设计师(高级)学习笔记汇总 系统架构设计师考试大纲 系统架构设计师考试大纲和复习指南 系统架构设计师课程大纲 系统架构设计师:浅谈架构 系统架构设计师:软件架构师之路 系统架构设计师复习笔记 系统...
前段时间整理的数据仓库方面模型设计预计架构、元数据的分享
网络架构课程设计,某中学校园网设计文档全,网络架构课程设计,某中学校园网设计文档全。
web信息架构读书笔记,自己总结的,共享下
适读人群 :适合软件架构师和想成为软件架构师的人阅读 1.软件架构是一个热点话题。本书通过.NET的架构来剖析架构设计,既具有代表性,也具有实用性。 2.上一版是同类书中的畅销品,累计印刷9553,译者陈黎夫在...
SAAS架构设计模式SAAS架构设计模式SAAS架构设计模式
数据仓库架构设计文档
运营商数字化转型的目标在于为其企业客户、消费者提供ROADS (Realtime, On-Demand, All online, DIY, Social)体验,这需要通过端到端协同整体架构才能够实现,需要在各个环节都实现敏捷,自动化和智能化。...