在互联网项目中,当业务规模越来越大,数据越来越多,随之而来的就是数据库压力会越来越大。慢慢就会发现,数据库层可能已经成为了整个系统的关键点和性能瓶颈了,因此实现数据层的高可用就成为了我们项目中经常要解决的问题。
本文我们就来聊一聊如何实现数据存储层的高可用方案。在保障数据层的高性能与高稳定方面,最容易想到的方式就是对数据进行分片、多份、冗余等,很多架构的本质其实也是基于这几点来实现的。
这里先不看细节,即先不管底层数据源是什么数据库,我们先只聊架构方案,因为无论底层是关系型数据库,还是NoSQL数据库,无论是 Mysql 还是 Redis、MongoDB,我们在架构设计上都是相通的。
大体上,单中心双机的常见方案有以下这些:
-
一主一备的架构(主备式)
-
一主一从的架构(主从式)
-
互为主从的架构(主主式)
以上方案从上至下,依次是从简单到复杂,从基础到丰富。下面我们来具体看看:
一、一主一备的架构(主备式)
主备式架构是双机部署中最简单的一种架构了,几乎市面上所有的数据库系统都会自带这个主备功能。
如图,
其思路也特别的简单:将数据库部署到两台机器,其中一台机器