MySQL数据库集群解决方案详解

20 篇文章 0 订阅
14 篇文章 2 订阅

目录

读写分离

中间件方案优化读写分离

负载均衡解决集群中间件的问题

PXC集群架构解决主从弱一致性的问题

混合模式解决PXC性能下降的问题


 

读写分离

 

一般而言,数据库都是“读多写少”,“读写分离”的思路是数据库集群中采用一个主库负责写入数据,其他都是从库负责读取数据。· 

 

读写分离有以下三点要求

  • 读库和写库数据必须一致
  • 写数据必须写到写库
  • 读数据必须从读库中读

 

架构图 

特点

1.数据库从之前的单节点变成了多节点提供服务

2.主节点数据和从节点数据做了同步

3.应用程序需要连接到2个数据库节点,并在程序内部实现判断读写操作

 

读写分离存在的问题

1.应用程序需要连接到多个节点,对应用程序而言开发变得复杂

2.主从同步异步实现,具有弱一致性。也就是说当你刚写主,马上读从,可能读不到。或者主从同步数据因为网络等原因丢失导致主从数据库数据不一致

 

解决方案

1.针对第一个问题,在java代码编写时可以通过SpringAop思想解决。本质是引入了一个中间件

2.针对第二个问题我们可以把集群模式优化为PXC集群解决

 

 

中间件方案优化读写分离

 

采取单纯的读写分离在代码中就得增加判断,根据不同条件连接不同节点,这使得应用程序复杂度大大提升,因此我们引入了中间件解决问题,常见的中间件是MyCat

 

架构

 

特点

  • 应用程序只需要连接到中间件即可,无需连接多个数据库节点
  • 应用程序无需区分读写操作,对中间件直接进行读写操作即可
  • 在中间件中进行区分读写操作,读发送到从节点,写发送到主节点

 

引入中间件存在的问题

中间件的性能成为了系统的瓶颈,中间件挂了将是灾难。

 

架构改造

 

 集群中间件存在的问题

中间件的性能提升了,但应用程序依然需要连接到2个中间件,又为应用程序带来了复杂度

 

 

负载均衡解决集群中间件的问题

 

为了解决客户端对接多个中间件的问题,我们继续进行架构优化。在应用程序和中间件之间增加proxy带来,由代理完成负载均衡的功能,应用程序只需要对接到proxy即可

至此,主从复制架构的高可用架构才算是搭建完成。

 

 

PXC集群架构解决主从弱一致性的问题

 

在前面的架构中,都是基于MySQL的主从架构, 主从架构的弱一致性问题并没有解决,如果在需要强一致性的需求中,显然这种架构是不能应对的。

PXC提供了读写强一致性的功能,可以保证数据在任何一个节点写入的同时可以同步到其他节点,也就意味着可以随时从任何节点进行读取操作。

PXC相比纯主从架构性能有所下降,但保证了数据的一致性!

 

 

混合模式解决PXC性能下降的问题

 

在前面的PXC架构中,虽然实现了事务的强一致性,但是这种强一致性是通过牺牲性能换来的,如果在某些业务场景下,只专注读写的性能,没有强一致性的需求,那么使用PXC就不合适了。

所以,在我们的系统架构中,需要将这两种方式综合起来,这样才是一个较为完善的架构。

需要强一致性就走pxc这套,不需要强一致性就走中间件集群这套 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值