公众号merlinsea
1、单机数据库
特点:部署的时候比较简单,在之前的开发过程中数据库都是采用的单点部署
缺陷:存在单点故障,如果数据库宕机了将导致整个业务不可用。
适用场景:对于普通的管理后台的业务场景下可以使用单机数据库,如果面对的是用户端的数据请求或者是高并发场景则不适用。
2、一主多从数据库
特点:主库提供读和写的操作,从库只提供读读操作,并且从库可以同步主库上的更改数据,做到一定程度上的分担主库读操作的压力。
缺点:由于只有一个主库,写的性能仍旧是一个瓶颈,无法水平扩展主库的写性能。
适用场景:对于面向用户端的业务必须使用主从架构的数据库,这样可以避免由于单点故障带来的隐患,同时可以分担主库的读操作压力,提高用户访问的并发量。
3、双主多从数据库
特点:为了解决一主多从架构的写性能瓶颈问题,引入了双主多从的架构模式,两个主库提供读写操作,从库只提供读操作。
缺点:由于有两个主库可以进行写操作,这导致主库之间同步数据成为了一种设计负担,尤其是考虑到数据库还必须保障高性能,这问题将更加棘手,核心是不同的用户数据写入哪一个主库是随机的,不是固定的,因此所有数据必须在多个库之间进行同步。
使用场景:在实际的高并发项目中,比较少采用多个主库的架构模式,因为不利于数据同步。
4、分库分表设计思路
特点:根据用户插入的数据的某个唯一标识字段,通过一些hash算法等方式来决定该数据是位于哪一个库的哪一个表中,这种方式最大的优势就是数据不需要在多个主库之间同步,同时也具有双主数据库中的均摊多个写操作的作用。
使用场景:在高并发场景下,都会使用分库分表的思路来解决性能瓶颈问题。
分库分表都有一些中间件框架可以使用,比如tddl、shardingsphere、mycat,sharding jdbc