干货!MySQL DAL中间件总结
副标题[/!--empirenews.page--]
1.前言mysql作为互联网公司都会用到的数据库,如果在使用过程中出现性能问题,会采用mysql的横向扩展,使用主从复制来提高读性能,要是解决写入问题,需要进行分库分表。本文不会去介绍mysql的高可用,需要了解Mysql高可用架构相关的请戳浅谈MySQL集群高可用架构,本文主要介绍mysql的访问中间件(DAL)的一些实现方案。 2.Atlas官网:https://github.com/Qihoo360/Atlas/blob/master/README_ZH.md 2.1.atlas简介 Atlas是由 Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性。目前该项目在360公司内部得到了广泛应用,很多MySQL业务已经接入了Atlas平台,每天承载的读写请求数达几十亿条。同时,有超过50家公司在生产环境中部署了Atlas,超过800人已加入了我们的开发者交流群,并且这些数字还在不断增加。 2.2.atlas架构 Atlas是一个位于应用程序与MySQL之间中间件。在后端DB看来,Atlas相当于连接它的客户端,在前端应用看来,Atlas相当于一个DB。Atlas作为服务端与应用程序通讯,它实现了MySQL的客户端和服务端协议,同时作为客户端与MySQL通讯。它对应用程序屏蔽了DB的细节,同时为了降低MySQL负担,它还维护了连接池。 2.3.主要功能 1.读写分离 2.从库负载均衡 3.IP过滤 4.自动分表 5.DBA可平滑上下线DB 6.自动摘除宕机的DB Atlas相对于官方MySQL-Proxy的优势 1.将主流程中所有Lua代码用C重写,Lua仅用于管理接口 2.重写网络模型、线程模型 3.实现了真正意义上的连接池 4.优化了锁机制,性能提高数十倍 3.Mysql router官网:http://dev.mysql.com/doc/mysql-router/en/ 3.1.mysql router简介 MySQL Router是mysql官方发布的数据库中间件,是处于应用client和dbserver之间的轻量级代理程序,它能检测,分析和转发查询到后端数据库实例,并把结果返回给client。是mysql-proxy的一个替代品。其架构图和功能如下。 3.2.mysql router架构 1.Router实现读写分离,程序不是直接连接数据库IP,而是固定连接到mysql router。MySQL Router对前端应用是透明的。应用程序把MySQL Router当作是普通的mysql实例,把查询发给MySQL Router,而MySQL Router会把查询结果返回给前端的应用程序。 2.从数据库服务器故障,业务可以正常运行。由MySQL Router来进行自动下线不可用服务器。程序配置不需要任何修改。 3.主数据库故障,由MySQL Router来决定主从自动切换,业务可以正常访问。程序配置不需要做任何修改。 MySQL Router读写分离原理: MySQL Router接受前端应用程序请求后,根据不同的端口来区分读写,把连接读写端口的所有查询发往主库,把连接只读端口的select查询以轮询方式发往多个从库,从而实现读写分离的目的。读写返回的结果会交给MySQL Router,由MySQL Router返回给客户端的应用程序。 3.3.mysql router主要功能 MySQL Router的主要用途是读写分离,主主故障自动切换,负载均衡,连接池等。 4.Mycat官网:http://www.mycat.org.cn/ 4.1.mycat简介 Mycat是基于开源cobar演变而来,对cobar的代码进行了彻底的重构,使用NIO重构了网络模块,并且优化了Buffer内核,增强了聚合,Join等基本特性,同时兼容绝大多数数据库成为通用的数据库中间件。1.4 版本以后 完全的脱离基本cobar内核,结合Mycat集群管理、自动扩容、智能优化,成为高性能的中间件。
4.2.mycat架构 4.3.mycat主要功能
Mysql+mycat架构实战请戳Mysql+Mycat实现数据库主从同步与读写分离 5.Cobar官网:https://github.com/alibaba/cobar/wiki 5.1.cobar简介 (编辑:通化站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |