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

科比见过

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

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

地铁工作人员见过

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

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

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

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

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

为的就是舒缓运输压力,

让地铁运行高效、有序

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

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

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

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

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

分享一篇“硬核”文章

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

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

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

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

表示层读写分离设计

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

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

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

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

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

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

数据库读写分离的设计

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

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

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

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

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

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

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

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

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

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

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

第2, 从机读取失败后再读一次主机。

第3, 也可以将关键业务读写操作全部指向数据库主机。

需要注意的是,三种方式需要相互结合

缓存层读写分离设计

针对读多写少的数据库,有一种在大型系统中非常普遍有效的方法,就是采用专用缓存数据库,将热点数据复制到缓存节点的大内存中,为大批量的读取操作更快速地提供数据,从而减轻主数据库的负载压力。这类缓存数据库读取性能非常高,通过缓存数据库节点的横向扩展后则性能更高。以MemCache为例,单节点简单查询TPS可达50000以上,多节点查询TPS则呈准线性增加。

在缓存数据库的应用过程中,热点数据管理粒度是一个非常关键的问题,粒度太大,达不到最佳的缓存效果;粒度太小,则耗费过多的系统资源。在多节点应用对缓存进行操作时,可能出现缓存失效引起性能急剧下降的问题,所以在应用平台上需要引入ZooKeeper等集群管理组件对多节点的缓存操作进行有效管理。

存储介质层读写分离设计

存储介质是数据的最终归属地,谈及IT性能优化,存储介质是个避不开的话题。由于固态硬盘(SSD)相对于机械硬盘有数百倍的性能提升,且每TB价格越来越接近机械硬盘,因此固态硬盘成为IT行业的香饽饽,几乎每一个大型应用都需要考虑使用固态硬盘。

从读写分离的角度看,目前的应用主要基于SSD缓存,但大部分SSD缓存技术仅能实现读缓存,如此高价值的SSD竟然没能作为永久存储使用,不得不说是一个遗憾。不过受戴尔易安信SC系列存储系统“读写分离”技术的启发,这个遗憾是完全能避免的。

细究该“读写分离”技术,其实现原理很容易理解。SSD分为写密集型和读密集型两种,其中,写密集型SSD的DWPD(Drive Writes per Day)通常大于10,远高于读密集型SSD,写入寿命更长,而且写入性能也高出读密集型SSD数倍。

另外,各种RAID技术如下图所示▼。

RAID 10的写惩罚要优于RAID 5数倍,所以写入性能也要高出不少。“读写分离”技术的实现原理就在于利用这两方面的差异。

一方面,写入操作时,重负载I/O写操作基于RAID10的写密集型SSD,另一方面,通过软件调度,把写密集型SSD上的数据在后台自动迁移到读密集型SSD,并将RAID10在后台自动转换成RAID5,从而使得读操作主要由基于RAID5的读密集型SSD承载。难能可贵的是这项技术不仅可以提高性能,也能兼顾到成本效益。

该技术已经被不少技术前瞻性较高的企业或组织采用。例如,华中某科技公司的邮件系统,邮箱数量上万,系统改造前,I/O延时达到10毫秒左右,已经满足不了企业对于员工体验和工作效率的需求。

架构师对整套系统进行了分析,发现写入操作占比70%左右,由于RAID5方式的写惩罚、写入操作对存储介质IOPS的消耗非常大,架构师尝试将存储改成RAID10的方式,但容量利用率又满足不了企业的实际需求。

最后,架构师通过引入戴尔易安信SC存储的读写分离技术进行优化,即采用写密集型和读密集型两种SSD,并采用RAID10和RAID5两种RAID方式动态组合,由存储系统自动完成调度。最终,系统I/O延时下降到1毫秒以内,这次优化显著提升了该公司邮件的收发效率。

总结

在“读写分离”设计思路的实际应用中,要根据不同应用系统的需求,将表示层、缓存层、数据库层和存储介质层部分结合使用,以补足薄弱环节。

从当前各行业对“读写分离”设计思路的应用来看,笔者观察到互联网行业走在最前面,政企、医疗、教育行业也都已经开始广泛引入,相信“读写分离”架构设计思路会服务于越来越多的行业和用户,进一步夯实IT系统这座摩天大楼的地基。

点击▼“了解更多”查看数字化转型方案详情

你见过凌晨四点的北京吗?相关推荐

  1. 你见过凌晨四点破解密码的john吗?

    " 凌晨四点 " , 一个很有意义的代名词!这几个字最初是在科比的训练场上留下来的话!很励志.很艰辛,同时我们也为科比的不幸而感到惋惜~ 前人给我们留下的不只是回忆,更多的是精神上 ...

  2. 龙族幻想东京机器人一次_龙族幻想凌晨四点的东京异闻怎么完成 凌晨四点的东京异闻攻略[多图]...

    龙族幻想凌晨四点的东京是游戏里的一个异闻任务,有很多玩家都还不知道这个异闻任务要怎么做,下面安族小编带大家来看一下凌晨四点的东京异闻攻略. 龙族幻想凌晨四点的东京机器人位置 名称:凌晨四点的东京 简介 ...

  3. 战队基地_走a怪凌晨四点被赶出训练基地,粉丝礼物还被战队瓜分

    不少熟悉LPL,熟悉RNG的好兄弟应该都还记得,一个天才ad:走a怪. 曾经的走a怪是最被LPL寄予希望的天才,当年和阿水.iboy齐名. 却因为一些个人原因,从RNG一队被下放到二队,最后离开RNG ...

  4. 看一眼凌晨四点的哈佛,就会明白中国缺什么

    看一眼凌晨四点的哈佛,就会明白中国缺什么! 小数老师专栏 2015-09-21 18:08:59 高考经验 阅读(6125) 评论(1) 声明:本文由入驻搜狐媒体平台的作者撰写,除搜狐官方账号外,观点 ...

  5. 龙族幻想最新东京机器人位置_龙族幻想凌晨四点的东京机器人位置在哪?

    龙族幻想凌晨四点的东京异闻怎么触发?凌晨四点的东京需要找到机器人,集齐是个机器人就能完成任务,这次小编分享的就是凌晨四点的东京异闻的玩法攻略,下面是凌晨四点的东京机器人的坐标位置,大家可以根据攻略前去 ...

  6. 龙族幻想东京机器人一次_龙族幻想凌晨四点的东京机器人坐标-机器人刷新点_6137游戏网...

    龙族幻想凌晨四点的东京机器人在哪,机器人怎么找,机器人刷新点,机器人坐标还不清楚的玩家赶快和小编一起看看吧! 异闻攻略 1.触发地点:校长室左边柱子.注意,触发条件没有限制,全天都可以 2.开箱子获得 ...

  7. 龙族幻想东京机器人一次_龙族幻想凌晨四点的东京机器人位置在哪?

    龙族幻想凌晨四点的东京异闻怎么触发?凌晨四点的东京需要找到机器人,集齐是个机器人就能完成任务,这次小编分享的就是凌晨四点的东京异闻的玩法攻略,下面是凌晨四点的东京机器人的坐标位置,大家可以根据攻略前去 ...

  8. 哈佛大学图书馆凌晨四点的景象

    这是哈佛大学图书馆凌晨四点的景象-- 馆训: 1.现在睡觉的话会做梦而现在学习的话会让梦实现 This moment will nap, you will have a dream; But this ...

  9. 一线城市的这些人,凌晨四点都在做什么?

    在中国,无论哪座城市,凌晨十二点就是夜生活的开始,渐渐的灯光渐亮,逐渐逐渐照亮了每个人朦胧的面庞.街上人头涌动,吃个宵夜都还会要排起长龙:大都市中通讯.医疗.警备,多少人在灯火通明的大楼里彻夜加班:乡 ...

  10. 哈佛大学凌晨四点情形

    差距-- 在网上看到这篇文章,觉得很有感触, 或许这再一次印证任何人每一次的成功背后都有不为人知的付出和汗水. 哈佛老师经常给学生这样的告诫:如果你想在进入社会后,在任何时候任何场合下都能得心应手并且 ...

最新文章

  1. 前端常用插件、工具类库汇总(上)
  2. 今年世界杯的广告有毒,创意总监都该被fire
  3. Visual Studio 2010安装教程
  4. RabbitMQ消费者代码
  5. 浅谈MySQL的七种锁
  6. 微信小程序开发系列二:微信小程序的视图设计
  7. 【caffe-Windows】mnist实例编译之model的使用-matlab
  8. JEECG - 基于代码生成器的J2EE智能开发框架 续六: JEECG 前台页面和后台交互讲解
  9. eclipse生成boolean型变量的getter是is开头
  10. 设计模式必须遵守的六大原则
  11. 国产企业级服务器操作系统排名,国产操作系统那个最好排名
  12. MegaRAID Storage Manager RAID管理工具基本操作
  13. 支持python的云虚拟主机_云虚拟主机运行python(能运行python的主机)
  14. 开机输入用户名密码时弹出被调用对象已与其客户端断开连接解决方法
  15. 【IJCAI 2016】Modularity Based Community Detection with Deep Learning 阅读小记
  16. 订阅新闻联播文字标题到邮箱
  17. Python正则表达式写法
  18. HTML复习之基础标签
  19. PTA 4 回溯法解整数拆分
  20. VS2015许可证过期

热门文章

  1. 行列式与矩阵相关的内容学习
  2. 微信图片怎么删除?微信聊天图片批量删除只需要用这2招…
  3. android activity是什么呢
  4. html 转 pug 在线,pug - HTML模板引擎安装器
  5. 使用VMware虚拟机通过Panabit抓取爱快虚拟机PPPoE报文
  6. 实现流程管理的五个步骤
  7. 镜像加速器——使用加速器可以提升获取Docker官方镜像的速度
  8. 红帽子linux命令界面,红帽子_Linux_命令全解
  9. OpenCASCADE:Qt OCCT 概览示例
  10. android 设置启动画面,修改Android开机画面