分布式数据库系统的事务控制。
以mysql为例,主要有两种方案。
一种是应用程序来保证。
一种是mysql中间件来进行事务控制。
一,MySQL集群基于中间件实现的事务控制
中间件其实很多,我们这里看一个常用的。
Mycat
遵守Mysql原生协议,跨语言,跨数据库的通用中间件代理。
基于心跳的自动故障切换,支持读写分离,支持 MySQL 一双主多从,以及一主多从
有效管理数据源连接,基于数据分库,而不是分表的模式。
基于 NIO 实现,有效管理线程,高并发问题。
支持数据的多片自动路由与聚合,支持 sum , count , max 等常用的聚合函数。
支持2表 join,甚至基于 caltlet 的多表 join。
支持通过全局表,ER 关系的分片策略,实现了高效的多表 join 查询。
支持多租户方案。
支持分布式事务(弱xa)
支持全局序列号,解决分布式下的主键生成问题。
分片规则丰富,插件化开发,易于扩展。
强大的 web,命令行监控。
支持前端作为 MySQL 通用代理,后端 JDBC 方式支持 Oracle、DB2、SQL Server 、 mongodb 、巨杉。
集群基于 ZooKeeper 管理,在线升级,扩容,智能优化,大数据处理(2.0开发版)。
二,什么是MySQL集群
MySQL集群是一个无共享的(shared-nothing)、分布式节点架构的存储方案,其目的是提供容错性和高性能。
数据更新使用读已提交隔离级别(read-committedisolation)来保证所有节点数据的一致性,使用两阶段提交机制(two-phasedcommit)保证所有节点都有相同的数据(如果任何一个写操作失败,则更新失败)。
无共享的对等节点使得某台服务器上的更新操作在其他服务器上立即可见。传播更新使用一种复杂的通信机制,这一机制专用来提供跨网络的高吞吐量。
通过多个MySQL服务器分配负载,从而最大程度的达到高性能,通过在不同位置存储数据保证高可用性和冗余。
网友评论