大型网站架构演进(5)数据库读写分离

  在使用缓存后,使大部分的数据读操作访问都可以不通过数据库就能完成,但是仍有一部分读操作(包括未命中缓存的,和缓存过期的)和全部的写操作需要访问数据库,当网站的访问量继续增加后,数据库会因为负载压力过高导致成为网站的性能瓶颈。

  目前大部分的主流数据库都提供了主从热血功能,通过配置两台数据库的主从关系,可以将一台数据库服务器的数据同步到另一台服务器上,网站利用数据库的这一功能,可以实现数据库的读写分离,从而改善数据库的负载压力。

  应用服务器在写数据的时候,访问主数据库,主数据库通过主从复制机制将数据更新同步到从数据库,这样当应用服务器读数据的时候,就可以通过从数据库获得数据,为了便于应用程序访问读写分离后的数据库,通常在应用服务器端用专门的数据访问模块(也叫数据访问层),使数据库读写分离对应用透明。

数据库读写分离

架构如下图:

总结:数据库读写分离缓解了数据库的压力,但同时会带来两个问题:

1,数据同步的问题。一般利用数据库自带的数据复制机制解决,可以参考:http://note.youdao.com/noteshare?id=1245e28ab69dc951bb9df9f53e9abc16&sub=E1F1B4AAEB9140D6B37B1998163DBD0B

2,应用程序对于数据源选择的问题。对于应用程序来说,后面的写操作全部要走主库,而读操作要走从库。这些操作一般通过中间件数据访问层来完成。

时间: 2024-12-03 14:47:24

大型网站架构演进(5)数据库读写分离的相关文章

大型网站架构演进(2)数据库与应用服务器分离

随着用户量和并发数的增加,单台服务器出现了性能问题,此时必须要将应用程序和数据库分离,分离后整个网站变成三台服务器了:应用服务器(或称web服务器),数据库服务器和文件服务器.这三台服务器对服务器的配置要求是不一样的,应用服务器需要处理大量的业务逻辑,所以需要更快更强大的CPU,数据库服务器需要快速磁盘检索和数据缓存,所以需要更快的硬盘(现在一般使用SSD)和更大的内存,文件服务器需要存储大量用户上传的文件,所以需要更大容量的硬盘. 数据库与应用服务器分离的架构 数据库与应用服务器分离后明显提升

大型网站架构演进(3)使用缓存改善网站性能

原文:大型网站架构演进(3)使用缓存改善网站性能 网站的访问也是遵循二八定律:80%的业务访问集中在20%的数据上,如果我们把这20%的数据做缓存,是不是可以减轻数据库的访问压力呢?在项目开发过程中,我们通常将一些基础信息缓存起来,比如商旅系统中的国家,城市,航空公司,机场和航站楼信息. 使用缓存改善网站性能 缓存一般分为两种,本地缓存和分布式缓存,本地缓存指的是应用服务器的本机缓存,分布式缓存一般指专门的缓存服务器,比如memcached和redis.下图是使用缓存后网站的架构: 总结: 使用

大型网站架构演进(4)使用应用服务器集群

原文:大型网站架构演进(4)使用应用服务器集群 使用应用服务器集群是解决高并发的常用手段,当一台应用服务器的处理能力不足时,不要企图更换配置更高的服务器,对于大型网站而言,不管多么强大的服务器,都满足不了持续增长的业务需求,在这种情况下,更好的做法是增加一台应用服务器去分担原来服务器的压力.因为这样使得系统的可扩展和可伸缩性更好. 使用应用服务器集群 架构如下图: 总结: 使用应用服务器集群后,应用服务器这一层的高并发问题就解决了,但是高并发的压力就转移到数据库了,所以后面要继续优化架构去解决数

大型网站架构演进(8)业务拆分

大型网站为了应对日益复杂的业务需求,通过使用分而治之的手段将整个网站的业务分成不同的产品线,然后交给不同的开发团队负责.这样一方面方便应用的扩展和维护,同时不同的应用对应不同的数据库,也减小了原来所有业务数据都在一个数据库的压力. 业务拆分 原来一个网站拆分成多个不同的应用后,每个应用都是独立部署维护,系统之间的通讯一般使用消息队列中间件来完成,所以更新后的架构如下图:

大型网站架构演进(1)单机网站

初始阶段的网站一般访问量都很小(QPS<500),此时只需要一台服务器就足够,应用程序,数据库和文件都放在这一台服务器上.如果是.net的话,通常操作系统使用windows server,应用程序开发使用asp.net,然后应用程序部署在IIS上,数据库使用sql server. 单机网站 单机网站的架构非常简单,如下图: 单机网站架构的好处是开发需求,发布版本和部署非常快,但是存在以下问题: 1,可以支持的并发访问量比较小,一般QPS在500以下. 2,不易扩展和维护,修改一个小地方就需要编译

大型网站架构系列

原文:大型网站架构系列 这个系统总结了在搭建大型网站的过程中,对于架构的搭建,以及选择支撑架构实现的中间件的相关经验. 大型网站架构演进(1)单机网站 大型网站架构演进(2)数据库与应用服务器分离 大型网站架构演进(3)使用缓存改善网站性能 大型网站架构演进(4)使用应用服务器集群 大型网站架构演进(5)数据库读写分离 大型网站架构演进(6)使用NoSQL和搜索引擎 大型网站架构演进(7)数据库拆分 大型网站架构演进(8)业务拆分 大型网站架构演进(9)服务化 中间件(1)分布式缓存 中间件(2

读书笔记1: 大型网站架构演化

大型网站系统的特点 高并发,大流量,PV巨大 高可用,7*24 海量数据,P级别 用户分布广泛,网络情况复杂,不同运营商 安全环境恶劣,黑客攻击 需求快速变更,发布频繁,快速跟进市场,需求变更快 渐进式发展,从小网站一步一步进化 ? 大型网站架构的演化历程 初始阶段网站架构,一台服务器, 一台Server就部署-应用程序.数据库.文件等所有资源都集中在一台Server上,典型案例:基于LAMP架构的PHP网站 应用服务和数据库服务分离, 三台Server平天下-业务发展,单台不再适应业务的发展,

大型网站架构演化历程

大型网站的挑战主要来自庞大的用户,高并发的访问和海量数据,任何简单的业务一旦需要处理数以P计的数据和面对数以亿计的用户,问题就会变得棘手.大型网站架构主要就是解决这类问题. 本文内容大部分来自<大型网站技术架构>,这本书很值得一看,强烈推荐. 大型网站系统的特点 高并发,大流量 需要面对高并发用户,大流量访问.Google 日均 PV 35 亿,日 IP 访问数 3 亿:腾讯 QQ 的最大在线用户数 1.4 亿(2011年数据). 高可用 系统 7 x 24 小时不间断服务. 海量数据 需要存

【转载】大型网站架构的演进

参考 http://www.cnblogs.com/leefreeman/p/3993449.html 一个成熟的大型网站(如淘宝.京东等)的系统架构并不是开始设计就具备完整的高性能.高可用.安全等特性. 成熟的系统架构是随业务扩展而完善出来的,并不是一蹴而就:不同业务特征的系统,会有各自的侧重点,例如淘宝,要解决海量的商品信息的搜索.下单.支付,例如腾讯,要解决数亿的用户实时消息传输,百度它要处理海量的搜索请求,他们都有各自的业务特性,系统架构也有所不同. 一.最开始的网站架构 应用程序.数据