mysql中间件有哪些?

mysql-proxy是官方提供的mysql中间件产品,可以实现负载均衡、读写分离、故障转移等,但不支持大数据量,性能较差。
下面介绍几个可以替代它们的MySQL开源中间件产品,Atlas、cobar、tddl。
让我们来看看它们各自的优势和新特点。
AtlasAtlas是由奇虎360Web平台部基础设施团队开发和维护的基于MySQL协议的数据中间层项目。
它基于mysql-proxy0.8.2版本,进行了优化并添加了一些新功能。
360内部使用Atlas来运行其mysql业务,每天处理数十亿的读写请求。
Altas架构:Atlas位于应用程序和MySQL之间。
它实现了MySQL客户端和服务器协议,作为服务器与应用程序通信,作为客户端与MySQL通信。
它向应用程序屏蔽了DB细节,并且为了减轻MySQL的负担,它还维护了一个连接池。
以下是整体架构,大家可以参考一下。
LVS前端做负载均衡,两台Alta做HA,防止单点故障。

干货!MySqlDAL中间件总结

在数据库管理领域,MySQLDAL中间件应用已经成为提高数据库性能和效率的关键技术。
下面是MySQLDAL中间件的总结,包括Atlas、MySQLRouter、Mycat、Cobar、Amoeba、MySQLProxy等。
1.**前言**MySQL是互联网公司常用的数据库。
对其性能进行优化的需求,催生了各种中间件来解决高并发、读写分离、负载均衡等问题。
本文主要关注MySQL访问中间件(DAL)的实现。
2.**Atlas**Atlas是360公司开发的一个基于MySQL协议的数据中间层项目。
相对MySQL正式版做了很多功能改进和优化。
它在内部得到广泛应用,支持大型企业,每天处理数亿个请求,并已成为许多公司生产环境的重要组成部分。
3.**MySQLRouter**MySQLRouter是MySQL官方推出的一款轻量级代理程序。
它用于在应用程序和数据库之间转发查询并执行读写分离等功能。
它是MySQL-Proxy的替代方案。
4.**Mycat**Mycat是基于Cobar开发的。
经过改造和优化,具有高性能和高可用性。
它支持数据库集群管理、自动伸缩和智能优化,已成为广泛使用的中间件解决方案。
5.**Cobar**Cobar作为提供分布式数据库服务的中间件,实现了传统数据库的线性扩展,适用于高并发的场景。
不过,MyCat后来被用作替代版本。

自2013年起,Cobar已停止更新。
6.**Amoeba**Amoeba项目致力于MySQL分布式数据库前端代理层的开发,提供负载均衡、高可用、SQL过滤等功能,但目前该项目已停止维护。
7.**MySQLProxy**MySQLProxy充当连接池,用于将应用程序请求转发到数据库,支持负载均衡、读写分离等功能。
自从MySQLRouter出现以来,MySQLProxy就一直处于停机维护状态。
8、**客户端分片**直接在客户端进行分库分表,简化了中间件的使用,提高了性能,但灵活性有限。
9.**后记**在生产环境中,应该使用Atlas和Mycat作为中间件,客户端分段在特定情况下也有优势。
MySQLRouter和其他一些中间件陷入更新困境,因此您应该谨慎使用它们或寻找替代方案。

分库分表:中间件最全方案对比

分库分表是互联网企业数据管理的重要策略,一旦数据规模达到一定阶段,可以通过将数据分散存储在不同的数据库实例中来提高系统性能和可扩展性。
以MySQL为例,水平分区技术对单个表进行分区,减少B+树索引的深度,提高查询速度,同时通过单独的数据库实现负载均衡,减轻单个数据库的压力。
库表分区技术主要分为两类:应用层依赖中间件和代理中间件。
应用层依赖类中间件,如TDDL、sharding-jdbc、TSharding、CTrip-DAL等,其特点是与应用层紧密耦合,必须依赖应用层特定的jar包。
这些中间件重新实现了JDBCAPI,如DataSource、PrepareStatement等,使得应用层在不从根本上改变业务代码的情况下,可以实现分库分表的能力。
其主要工作流程包括SQL解析、SQL重写、SQL保存等。
最后通过传统方式执行SQL,将结果集合并返回给应用层。
这类中间件的优点是不需要额外部署,只需要与应用连接一起发布即可。
但缺点是不能跨语言,限制了使用范围。
ShardingSphere是一个分布式数据库解决方案,由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar组成。
ShardingSphere提供适合不同语言、容器和云原生环境的标准化数据分片、分布式事务和数据库治理功能。
Sharding-JDBC定位为轻量级Java框架,无需额外部署即可提供扩展的JDBC功能。
Sharding-Proxy作为透明的数据库代理,为MySQL协议提供封装服务,支持异构语言访问。
Sharding-Sidecar(待开发)预计将成为Kubernetes或Mesos的云原生数据库代理,提供分布式数据访问应用程序和数据库的交互式管理。
在混合架构中,OLTP(在线事务处理)和OLAP(在线分析处理)是数据处理的主要分类。
OLTP系统注重数据库内存效率和并发操作,而OLAP系统注重数据分析和SQL执行性能。
ShardingSphere通过混合Sharding-JDBC和Sharding-Proxy,采用统一的注册中心配置分片策略,支持灵活构建适合各种场景的应用系统。
中间层代理软件,如Amoeba、Cobar、Mycat等,通过在应用程序和数据库之间放置代理层来实现MySQL标准协议转发,支持多种编程语言。
Mycat是一个开源数据库系统,提供以下服务器功能MySQL协议,实现分表分库,支持与多个MySQL服务器通信或使用JDBC协议与其他数据库通信。
这类中间件在技术实现上与应用层依赖中间件类似,但强调标准协议兼容性,并且易于在所有语言中使用。
选择分库分表技术时,应综合考虑产品功能、可扩展性、成熟度以及实际应用情况。
应用层依赖类中间件适合与应用紧耦合的场景,而中间件代理类中间件则提供更广泛的跨语言支持。
最终的选择应该基于具体的业务需求和技术栈考虑。
在上述过程中,ShardingSphere因其功能全面、跨语言支持和成熟度而成为值得推荐的中间件解决方案。