你见过凌晨四点的北京吗?

你见过凌晨四点的洛杉矶吗?

科比见过

那是他新一天训练时间的开始

你见过凌晨四点的北京吗?

地铁工作人员见过

当第一辆列车于5点准时驶出时

它的工作人员早在一个小时前就开始了工作

迎接“高并发”时刻的到来

你见过凌晨四点的北京吗?

栏杆围成七拐八拐迷宫一般的通道

进站和出站的人流按照指定的路线前行

为的就是舒缓运输压力,

让地铁运行高效、有序

这个思路在IT系统里也有着异曲同工之妙

“读”和“写”有点像一对冤家

一块磁盘如果同时进行读和写工作,

势必会影响整体性能的发挥

因而“读写分离”思路应运而生

 

分享一篇“硬核”文章

介绍IT架构的“读写分离”设计思路

如果把公司经营比作摩天大楼,IT系统架构就相当于摩天大楼的地基,如今越来越多的IT人士开始重视系统架构设计。但架构设计非常复杂,其复杂性主要来源于IT系统的高性能、高可用、高扩展需求,而“读写分离”则是架构设计中解决这几个需求的关键设计思路之一。

读写分离原理本身非常简单,即读、写操作的实现由不同资源独立完成,但要考虑到资源分配的合理性和数据同步的时效性,读写分离技术真正用起来也并不是看着那么简单。

目前,在企业的IT架构中,读写分离设计思想的应用确实存在改善空间。笔者将尝试从四个不同层面对读写分离设计思路的应用进行整体阐述,包括表示层、数据库层、缓存层和存储介质层。

表示层读写分离设计…..

表示层是后台提供给客户端的入口,读写分离设计主要体现为动静分离。以Web为例(如下图),后台既有html、图片、JS/CSS等基本维持不变的静态页面,该部分页面以读操作为主,也有针对不同用户、不同场景进行定制化的变化页面,该部分页面需要读写结合

你见过凌晨四点的北京吗?

Web读写分离的应用,有以下多方面益处:

? 第1, 可缩短静态页面的访问路径、改善用户体验。

? 第2, 动态页面静态化,进一步改善系统性能。

? 第3, 预留更多资源用于处理访问路径更长的动态页面。

在动静分离的应用过程中,需要注意的是,页面静态化不宜过度,否则会因静态页面太大反而导致用户体验降低。

数据库读写分离的设计…..

一谈到读写分离,很多人往往最先想到数据库。随着业务的快速发展和数据的高速增长,传统关系数据库软件的性能瓶颈逐渐凸显,进而影响了扩展能力甚至可用性,这对用户来说是不可接受的。为此,数据库平台纷纷推出主从集群模式应用读写分离技术。

数据库主从集群如下图所示▼。

你见过凌晨四点的北京吗? 

简单来说,主从模式就是数据库主机负责写操作,数据库从机负责读操作,通过合理分配算法,从机可以大幅减轻主机的负载,从而提高性能。

引入数据库从机后,需要额外考虑读写操作分配和数据库连接管理,主要有应用层实现中间层实现两种方式。

>>>>

应用层实现数据库读写分离

应用层可以通过配置多数据库来源实现读写分离,在应用模块中对读写请求进行分流,对此业界有不少平台可以实现,包括Spring JDBC、Hibernet等。这种实现方式不需要额外引入中间件,因而具备策略灵活、易于调整、实现简单的特点,但该方式也增加了应用层的复杂性,包括分流、均衡、安全等方面都需要考虑。

由于扩容过程中读写分离策略变更等比较复杂,应用层读写分离主要用于小规模应用系统。

你见过凌晨四点的北京吗?>>>>

中间层实现数据库读写分离

引入中间件,也是另一种读写操作分配的实现方式,其原理是由中间层提供SQL接口供业务访问,后台读写操作由中间件统一处理。该方式能向业务屏蔽数据库节点的故障,简化业务设计,但中间件本身的性能也需要特别关注

另外,由于数据库主从之间的数据同步必然导致数据库从机缺失少量最新数据,可通过多种方式解决此类问题。以MySQL为例(MySQL Router如下图),有三种解决思路比较常见。

你见过凌晨四点的北京吗?

第1, 在数据库写入操作完成后,可以将读操作指定发给数据库主服务器。

评论

还没有任何评论,你来说两句吧

发表评论

十优工作室出品

友情链接批量出售 域名出售 温州信息港 飞库