原文出处:架构之美
今天我们来简单介绍一下Oracle官方出品的数据库负载均衡利器——MySQL Router。什么是MySQL Router?
MySQL Router是一个介于应用层和DB层之间的开源的轻量级中间件,它能够将前端应用的请求分析转发给后端DB服务器处理,从而实现DB的负载均衡,可以说它是先前MySQL Proxy的替代品,我们可以在Github找到它的源码。类似的工具有360的Atlas、美团点评的DBProxy、MyCat等几种。
MySQL Router架构
使用这种架构,前端应用不用直接连接DB Server,而仅仅是连接到MySQL Router,能够很方便地实现数据库集群的扩展,接下来我们再来看看它的一些其他的主要功能。主要功能
1、自动故障转移
使用MySQL Router实现来读写分离,前端应用层不需要直连接底层DB,而是统一连接到MySQL Router。MySQL Router对前端应用层是透明的,我们不需要在代码层做任何处理。应用层会把MySQL Router一个正常的MySQL实例使用,底层DB Master挂了会自动使用Backup节点替代,十分方便。
2、DB负载均衡
MySQL中间件通过类似连接池的方式,将请求按照一定的规则分发给底层数据库,从而实现DB的读写分离、高可用。
优化单点入口
相信很多人一眼就能看出上图存在什么问题,后端的实现了高可用,但是入口却没有,MySQL Router挂了咋办?其实很简单,我们还是可以Keepalived来解决单点入口的问题,整体的架构就变为:
应用层不直接连接MySQL Router,而是连接虚拟VIP,这样就可以同时使用两个入口,避免出现入门不可用的情况,造成整个系统崩溃。性能问题
与直连的方式对比,使用DB中间件必然会带来性能的损耗,但是跟旧版的MySQL Proxy比起来,MySQL Router性能提升效果还是十分明显的,差不多已经可以媲美LVS!
转载请注明出处:架构之美