您的位置:首页 > 数据库 > MySQL

Amoeba for Mysql

2015-10-09 09:34 323 查看
Amoeba 是什么?

目前对于这个软件的定位是专注数据库数据切分,作为数据库代理。.目前已经对mysql进行代理,是基于对特定数据库软件的协议进行分析,因此对前端的数据库客户端来说,不管客户端采用jdbc、odbc、或者client tool都不影响,是完全透明的一层。

amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy。它集中地响应应用的请求,依据用户事先设置的规则,将SQL请求发送到特定的数据库上执行。基于此可以实现负载均衡、读写分离、高可用性等需求。与MySQL官方的MySQL Proxy相比,作者强调的是amoeba配置的方便(基于XML的配置文件,用SQLJEP语法书写规则,比基于lua脚本的MySQL Proxy简单)。

amoeba相当于一个SQL请求的路由器,目的是为负载均衡、读写分离、高可用性提供机制,而不是完全实现它们。用户需要结合使用MySQL的 Replication等机制来实现副本同步等功能。amoeba对底层数据库连接管理和路由实现也采用了可插拨的机制,第三方可以开发更高级的策略类来替代作者的实现。这个程序总体上比较符合KISS的思想。

amoeba主要解决以下问题:

a). 数据切分后复杂数据源整合

b). 提供数据切分规则并降低数据切分规则给数据库带来的影响

c). 降低数据库与客户端连接

d). 读写分离路由

主要降低数据切分带来的复杂多数据库结构、数据切分规则给应用带来的影响,利用MMM双主复制架构+Amoeba代理,可以实现对MySQL的高可用性和高性能。

目前amoeba 实现了 mysql 数据库的相关技术。

Amoeba for mysql相关:

适用:

mysql 4.1或者以上版本(mysql 协议版本:10)

暂时不支持事务、DDL语句目前只会分配给默认的数据库执行

运行环境:

至少需要运行 mysql 4.1以上 服务一个;

Java 1.5或 以上版本

中文文档地址: http://amoeba.sourceforge.net/amoeba.pdf
文件下载: http://www.sourceforge.net/projects/amoeba
====================================================================

Amoeba for mysql 跟 mysql 官方的 proxy有什么区别:

amoeba for mysql主要是针对数据切分方面。

在 mysql proxy 上面如果想要读写分离并且读集群、写集群机器比较多情况下,用mysql proxy 需要相当大的工作量,目前mysql proxy没有现成的 lua脚本。mysql proxy根本没有配置文件,lua脚本就是它的全部,当然可以是相当方便的。那么同样这种东西需要编写。大量的lua脚本才能完成一个复杂的配置。amoeba目标是走产品化这条路。只需要进行相关的配置就可以满足需求。



读写分离结构如下:



Master: server1 (可读写)

slaves:server2、server3、server4(3个平等的数据库。只读/负载均衡)

amoeba提供读写分离pool相关配置。并且提供负载均衡配置。

可配置server2、server3、server4形成一个虚拟的 virtualSlave,该配置提供负载均衡、failOver、故障恢复功能

可同时将sql 并发分发到多台服务器、然后将结果合并再反馈给客户端,而且amoeba内部现成采用无阻塞模式,工作线程是不会等待的,并发请求多台 database server情况下,客户端等待的时间基本上面是性能最差的那台 database server+amoeba内部解析协议的时间
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: