码迷,mamicode.com
首页 > 数据库 > 详细

【一个电商网站萌发的优化思考(1)】数据库分库读写分离

时间:2015-05-19 22:52:57      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:

1. 一个手里的小项目

    最近接了一个B2C外包,据称初期用户量大概2000,并发量希望能支撑得起至少300次访问每秒。老实说,这个需求来说,用普通的架构一个好点的服务器加点优化都是卓卓有余的了。。但是在重温完《淘宝技术这十年》这本书以后,心中悸动不已,幻想都够架构出一个几万乃至上十万的并发系统,但是实习的时候是做游戏前端,平时接的项目都是小项目,基本没接触过高大上的大项目,所以想对手中这个小项目进行步步优化,看看能到什么程度(当然了,后面可能换别的项目)。

2. 项目简述

    目前项目的基本业务功能都已经完成实现,环境是LAMP,用的是一个基于国产框架Thinkphp的系统二次开发,本来习惯做的一套优化都停住了先,先跟着《淘》进行优化。而目前的项目系统服务端经过压力测试在500用户连接、200并发操作的返回时间符合理想预期(暂时未加入日志系统)。为了让目标最大化,这里把客户要求的目标用户量和并发量都乘以十倍。

    项目是一个B2C的电商系统,主要模块分为商品模块,着装搭配信息模块,用户模块,订单模块。


3. 数据库优化——主从库分离

    当前的系统数据库访问就是最简单的一个库,读写都在上面,优点就是简单。。缺点也很明显,就是数据库访问的瓶颈。因此,第一步的优化就是考虑主从分库(如下图)。进行主从库分离后主要有以下优点:

    1. 读写效率得到提升,因为写操作比读操作更加消耗资源,分开后互不干扰 

    2. 存储容量增加,可多个从库存储不同表数据,通过数据访问层决定在哪个库读取,这里也带出联合查询等等的问题,这是后话。

    3. 数据安全性,有了从库的备份,也使得数据的安全性有一定的保证,当然了,定时备份还是必不可少的。

    技术分享

4. 实际分析

    从项目上来看,抛开日志系统来说,频繁的写操作主要集中在用户的评论和购买时候生成的订单信息,而主要的读操作就集中在商品信息、评论信息、订单信息、搭配文章信息,用户信息在用户行为角度考虑的话在B2C系统上读取频率相对较少。因此这里的设计是,一个主数据库:存储所有的信息数据,负责各种的写操作;从数据库1:负责存储订单信息、评论信息和搭配文章信息;从数据库2:负责存储商品信息。


5. 实现过程

   // 通过搜索资料,MySQL就自带了主从库分库的功能,因为硬件设备的缺乏,这里的实验就把两个从库放在一个服务器上,换个端口。

  // 主要的实现明天实验过后再更新 


【一个电商网站萌发的优化思考(1)】数据库分库读写分离

标签:

原文地址:http://my.oschina.net/u/203607/blog/417009

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!