Mysql基础架构选择

单库:

一个mysql实例承担所有的数据,读写均在此节点。

2022-06-06T09:00:20.png

优点:成本低,适合千万级及以下并发读写小的应用

缺点:不具备高可用性,并发性差

读写分离:

2022-06-06T09:00:48.png

将主库的数据通过binlog日志同步到从库,再根据分片中间件做读写分流。

优点: 可通过集群mgr,mha等方案做高可用,从库在一定条件可以升级为主库,实现了一定程度的并发以及高可用

缺点: 架构复杂度提升,成本提高,需保证所有节点数据保持同步,适用于读多写少,单表不过千万的互联网应用。

分片模式:

2022-06-06T09:00:59.png

将数据通过一定的算法,分布在不同的实例

优点:能将大数据量级,如十亿级别的数量分实例存储,实现性能提升

缺点: 每个实例是数据的子集,不具备高可用性

常见的分片算法:

一 范围分片

采用如id范围的分片策略,如下图:
2022-06-06T09:01:15.png

缺点: 范围法会导致数据不均匀,例如有2.5亿数据,a库存2亿,b库只有0.5亿

优点: 适合范围检索,流水账式的数据

二 时间分片

采用某时间节点创建的数据,例如一月、二月等

缺点:无法控制均匀分布,如果时间跨度小,即便数量较少,也会日积月累产生大量的分库,时间跨度大,可能无法有效做到分片想产生的效果

优点: 适合产生均匀且易控制的数据

三 hash取余/一致性hash

2022-06-06T09:01:24.png

缺点: 扩展复杂,难以做数据迁移,如果前期考虑,成本较高,适合初期设计比较完善的项目

优点:分布均匀

四 环形hash

此算法后续补充,可先自行了解,基于环形做的索引,可以方便做扩容缩容

互联网主流架构:

2022-06-06T09:01:31.png

Last modification:June 6, 2022
If you think my article is useful to you, please feel free to appreciate