有了docker虚拟机,我们就利用虚拟机平台部署数据库集群,本文章重点讲述数据库集群的方案和各自的特点,平时我们在开发的过程中都是使用单节点数据库实例,谈不上高性能、高可用。
-
单节点数据库疾病
- 大型互联网用户群体庞大,所以框架必须要特殊设计
- 单节点的数据库无法满足性能上的要求
- 单节点的数据库没有冗余数据,无法满足高可用
-
单节点MySQL的性能瓶颈
- 2016年春节微信红包巨大业务量,数据承受巨大负载
-
常见的集群方案
-
1 Replication
在Replication的集群里面,A节点写入的数据不一定保证分发到集群的其他节点上,即在A节点写入的数据,B节点查不到(弱一致性);因为弱一致的特点无法存储高价值数据。
-
2 PXC(Percona XtraDB Cluster)
存储数据较慢,但是能保证A节点写入的数据分发到集群的其他节点上(强一致性),如淘宝,所以说它很成熟、
稳定。
-
PXC原理
- 在PXC中任何一个数据库节点都是可读可写的,如在第一个节点里面写入数据,在其他节点就能读取这条数据。
- 建议PXC使用PerconaServer(MySQL改进版,性能提升很大)
-
PXC方案与Replication方案的对比
- 1 PXC集群示意图(它的集群是双向的!)
- 2 Replication 集群示意图(同步是单向的,如果在Slave节点写入数据,是不会同步到Master节点)
-
PXC的数据强一致性
- 同时复制,事务在所有集群节点,要么同时提交,要么不提交
- Replication采用异步复制,无法保证数据的一致性
-
不同集群效果展示
- 1 Aplication
1)复制
2)弱一致性
- 2 PXC
1)双向同步
2)强一致性性(如果没有分发成功,写入失败)
-
总结
PXC是在其他节点写入成功才算是提交成功,Replication的异步同步机制不同,不管同步成功不成功,直接返回客户端写入成功的结果!