高可用解决方案:同城双活?异地双活?异地多活?怎么实现?
有状态服务后台服务可以划分为两类 , 有状态和无状态 。高可用对于无状态的应用来说是比较简单的 , 无状态的应用 , 只需要通过F5或者任何代理的方式就可以很好的解决 。后文描述的主要是针对有状态的服务进行分析 。服务端进行状态维护主要是通过磁盘或内存进行保存 , 比如MySQL数据库 , redis等内存数据库 。除了这两种类型的维护方式 , 还有jvm的内存的状态维持 , 但jvm的状态生命周期通常很短 。
高可用的一些解决方案高可用 , 从发展来看 , 大致经过了这几个过程:
- 冷备
- 双机热备
- 同城双活
- 异地双活
- 异地多活
冷备冷备 , 通过停止数据库对外服务的能力 , 通过文件拷贝的方式将数据快速进行备份归档的操作方式 。简而言之 , 冷备 , 就是复制粘贴 , 在linux上通过cp命令就可以很快完成 。可以通过人为操作 , 或者定时脚本进行 。有如下好处:
- 简单
- 快速备份(相对于其他备份方式)
- 快速恢复 。只需要将备份文件拷贝回工作目录即完成恢复过程(亦或者修改数据库的配置 , 直接将备份的目录修改为数据库工作目录) 。更甚 , 通过两次mv命令就可瞬间完成恢复 。
- 可以按照时间点恢复 。比如 , 几天前发生的拼多多优惠券漏洞被人刷掉很多钱 , 可以根据前一个时间点进行还原 , “挽回损失” 。
- 服务需要停机 。n个9肯定无法做到了 。然后 , 以前我们的停机冷备是在凌晨没有人使用的时候进行 , 但是现在很多的互联网应用已经是面向全球了 , 所以 , 任何时候都是有人在使用的 。
- 数据丢失 。如果不采取措施 , 那么在完成了数据恢复后 , 备份时间点到还原时间内的数据会丢失 。传统的做法 , 是冷备还原以后 , 通过数据库日志手动恢复数据 。比如通过redo日志 , 更甚者 , 我还曾经通过业务日志去手动回放请求恢复数据 。恢复是极大的体力活 , 错误率高 , 恢复时间长 。
- 冷备是全量备份 。全量备份会造成磁盘空间浪费 , 以及容量不足的问题 , 只能通过将备份拷贝到其他移动设备上解决 。所以 , 整个备份过程的时间其实更长了 。想象一下每天拷贝几个T的数据到移动硬盘上 , 需要多少移动硬盘和时间 。并且 , 全量备份是无法定制化的 , 比如只备份某一些表 , 是无法做到的 。
双机热备热备 , 和冷备比起来 , 主要的差别是不用停机 , 一边备份一边提供服务 。但还原的时候还是需要停机的 。由于我们讨论的是和存储相关的 , 所以不将共享磁盘的方式看作双机热备 。
Active/Standby模式相当于1主1从 , 主节点对外提供服务 , 从节点作为backup 。通过一些手段将数据从主节点同步到从节点 , 当故障发生时 , 将从节点设置为工作节点 。数据同步的方式可以是偏软件层面 , 也可以是偏硬件层面的 。偏软件层面的 , 比如mysql的master/slave方式 , 通过同步binlog的方式;sqlserver的订阅复制方式 。偏硬件层面 , 通过扇区和磁盘的拦截等镜像技术 , 将数据拷贝到另外的磁盘 。偏硬件的方式 , 也被叫做数据级灾备;偏软件的 , 被叫做应用级灾备 。后文谈得更多的是应用级灾备 。
双机互备本质上还是Active/Standby , 只是互为主从而已 。双机互备并不能工作于同一个业务 , 只是在服务器角度来看 , 更好的压榨了可用的资源 。比如 , 两个业务分别有库A和B , 通过两个机器P和Q进行部署 。那么对于A业务 , P主Q从 , 对于B业务 , Q主P从 。整体上看起来是两个机器互为主备 。这种架构下 , 读写分离是很好的 , 单写多读 , 减少冲突又提高了效率 。
推荐阅读
- 曼松茶区史话,曼松古树为何价高
- 教师|公立教师稳定,私立教师收入高,一年15-30万,告诉你毕业后或者转行当老师到底有多香
- 北方酥油茶介绍,酥油茶中的高原风情
- 志当存高远的意思是什么?
- 年底高速什么时候最堵 每年春节高速什么时候最堵
- 别具特色的高原茶文化,布朗山古茶山
- 如何增高身高
- 快速提高记忆力的方法
- 什么方法可以长高? 什么方法长高最有效的方法
- 百寿图青花瓷茶具,古代茶具元代青花瓷茶具艺术造型达到了定高度