集中式数据架构将数据存储在单个计算机的数据库系统中,数据管理被某个站点或中心站点集中控制,所有用户以直接或远程方式操作该数据库,进行数据处理,这种方式的优点是简单、易维护而且开发成本低;缺点是用户的操作都集中在这一台服务器上,容易导致性能瓶颈, 出现单点故障,可用性差。
随着系统用户数量的增加,业务的不断拓展,分布式数据架构成了一个更合适的选择。分布式数据架构中,业务数据位于不同地理位置、不同操作系统的数据库服务器上,这些数据库服务器通过网络连接在一起,具有较高的性能和可扩展性,缺点是结构复杂、运行成本高且维护困难。
读写分离架构是一种常见的分布式数据架构,它利用了数据库的复制技术,将读和写分布在不同的处理节点上,从而达到提高可用性和扩展性的目的,避免集中式存储的单点故障问题。
常见的做法是利用MySQL Replication技术,主服务器承担写操作,将数据变化复制到多台从服务器上,并承担读的操作。这种架构适合读取操作频繁的应用类型,通过增加从服务器的数量,读的性能可以线性增长。为了避免主服务器的单点故障,集群一般都会采用两台主服务器做双机热备,所以整个集群的读和写的可用性都非常高。读写分离架构的缺陷在于,不管是主服务器还是从服务器,每个节点都必须保存完整的数据,如果在数据量很大的情况下,集群的扩展能力还是受限于单个节点的存储能力。
读写分离架构应用非常广泛,很多系统都采用数据库加缓存的读写分离架构,通过缓存来应对用户大量、频繁的读操作。常见的缓存系统有 Memcached和 Redis,它们都能存储键值型数据,Redis支持更多的数据类型,而且支持数据的持久化。通常的做法是:应用的读请求会首先访问缓存,如果命中则返回,如果没有命中,则会去数据库中读取,并将数据加载到缓存中。