Amoeba for mysql 0.31发布(读写分离、负载均衡、Failover、数据切分)
Amoeba 座落与Client、Database Server(s)之间。 具有负载均衡、高可用性、sql过滤、可承受高并发、读写分离、Query Route(解析sql query语句,并且根据条件与预先设定的规则,请求到指定的目标数据库。可并发请求多台数据库合并结果)、对客户端透明。
主要降低 数据切分带来的复杂多数据库结构、数据切分规则 给应用带来的影响。
能够轻易实现读写分离
Failover
负载均衡。
能够帮助解决数据切分问题
目前amoeba 实现了 mysql 数据库的相关技术。
适用:
mysql 4.1或者以上版本(mysql 协议版本:10)
暂时不支持事务、DDL语句目前只会分配给默认的数据库执行
运行环境:
至少需要运行 mysql 4.1以上 服务一个;
Java 1.5或 以上版本
中文文档地址: http://amoeba.sourceforge.net/amoeba.pdf
amoeba 未来发展方向: http://amoeba.sourceforge.net/amoeba-big-picture.pdf
文件下载: http://www.sourceforge.net/projects/amoeba
amoeba 开发者博客: http://amoeba.meidusa.com 74 楼 zgia 2008-10-23 数据库做垂直或者水平切分后,请问Amoeb是如何处理join查询的?
比如blog在ServerA,user在ServerB。
多谢。 75 楼 csrcom 2008-10-23 amoeba 目前不解决这类问题,因为代价实在太大了,因此请大家需要好好切分你们得数据,避免跨数据库进行join,这也是让数据库架构可线性扩容得基础。 76 楼 leeqianjun 2008-11-10 有没有一个简单调用的例子 77 楼 luckaway 2008-11-10 我已经在使用amoeba了!
78 楼 dreampursuer 2008-11-11 已经在试用了,读写分离使用挺简单的。
不过目前我们有这样的一个需求,不知是否直接就能使用。
比如我们的数据库中有d_sh,d_bj,d_gz等数据库,这些数据库中的表结构都一样,比如这些数据库内都有一个表为t表,这个表中没有city字段,是否可以建立一个虚拟的字段city,当select * from t where city='bj'时自动查询的是d_bj库中的表t. 79 楼 csrcom 2008-11-12 leeqianjun 写道有没有一个简单调用的例子
使用amoeba for mysql 其实非常简单的,
1. 首先要把amoeba 当作 mysql 来看待.
2. 要在amoeba配置文件(amoeba.xml)中配置目标的 mysql
3. 启动amoeba( bin目录下面有windows 的bat脚本 跟 linux的shell 脚本).
4. 应用程序或者客户端连接 amoeba 跟 连接 mysql的方式一样
80 楼 csrcom 2008-11-12 dreampursuer 写道已经在试用了,读写分离使用挺简单的。
不过目前我们有这样的一个需求,不知是否直接就能使用。
比如我们的数据库中有d_sh,d_bj,d_gz等数据库,这些数据库中的表结构都一样,比如这些数据库内都有一个表为t表,这个表中没有city字段,是否可以建立一个虚拟的字段city,当select * from t where city='bj'时自动查询的是d_bj库中的表t.
这个不行哦,因为amoeba现在不会重新进行sql重写。会将这条sql原样发送给mysql ,这样mysql肯定会返回错误的信息的 81 楼 wym0291 2009-01-13 请教以下现实问题:
1.如何支持应用服务器提供的数据源?
2.如何支持事务?
3.如何与hibernate或ibates集成?
4.如何与spirng集成? 82 楼 csrcom 2009-01-21 其实你谈的几个问题,关心的是应用层面的问题。
你把amoeba独立运行,它对你的应用程序是完全透明的,就把它当作虚拟的mysql。
而amoeba关心的是你如何设计数据切分规则。把这个具体的数据切分放到amoeba上面。应用程序不需要关心具体的数据切分了。
这样对你的应用来说更加简单了。
事务未来将会支持的。
83 楼 sdh5724 2009-02-06 老陈, 赶紧写啊。 NND, 我们等不及了。
目前我们FOR ORACLE的测试下来, 效果还不错。上线 8个SERVER压力很很很小。 高峰期能挡住4W SQL/S 哈哈哈。 84 楼 myreligion 2009-02-06 不错,希望下次项目能够用上。
对于您的系统,提几个建议供参考,呵呵:
1. 如何解决Amoeba自身的单点问题?不能你当了,大家都完了。
2. 性能如何?测试数据什么样?
3. 如何处理事务?
4. 不光是mysql-proxy了,比ojdbc强多少?
85 楼 yefeng 2009-02-13 提个建议的,你文档里面,怎么没有API 86 楼 csrcom 2009-02-16 老刘,最近如何? 87 楼 csrcom 2009-02-16 myreligion 你好,
1、amoeba 的负载均衡可以通过硬件设备、还有mysql提供的驱动这一层来解决负载均衡、HA。
2、amoeba安装在普通的服务器硬件上面,自身可以支持4K以上并发连接,每秒大概能处理1w以上的sql请求,但不太适合每次请求有几十w条结果数据返回的sql。
3、目前暂时不支持事务,未来将会支持
4、除了mysql-proxy,目前个人没有专门与其他产品比较过 88 楼 csrcom 2009-02-16 yefeng ,文档里面的确没有api docs。下一版本将amoeba 核心的 api文档附上。
多谢提醒 89 楼 sdh5724 2009-02-16 csrcom 写道myreligion 你好,
1、amoeba 的负载均衡可以通过硬件设备、还有mysql提供的驱动这一层来解决负载均衡、HA。
2、amoeba安装在普通的服务器硬件上面,自身可以支持4K以上并发连接,每秒大概能处理1w以上的sql请求,但不太适合每次请求有几十w条结果数据返回的sql。
3、目前暂时不支持事务,未来将会支持
4、除了mysql-proxy,目前个人没有专门与其他产品比较过]
如果没有硬件负载均衡, 可以使用LINUX LVS, 有兴趣可以看看, 是草根系统的解决办法。
90 楼 sdh5724 2009-02-16 csrcom 写道老刘,最近如何?
最近开始搞安全, 还有性能, 还可以, 接下来, 我也要介入ameoba的开发, 现在缺乏监控, 统计等等功能, 也许性能上还要进一步加强, 还有ameoba也许会做一个 in-vm [独立能管理多库的driver?] 的jar包, 以支持那些对SERVER生厌的人。 对了, 你最近有做代码提交么? 91 楼 lujiang080800 2009-02-24 “ztka你没明白我的意思....
client端使用mysql jdbc driver,通过配置jdbc:mysql://192.168.1.2:8066,192.168.1.3:8066/test (可支持多台mysql或者amoeba)
客户端连接的是2台amoeba。即使挂了1台amoeba,那么客户端来会自动连接到另外一台amoeba/mysql。
对应用来说它不知道后面是否是真实的mysql server。因为amoeba是解析mysql协议的。”
上面的是JDBC方式,如果是ODBC方式怎么让它(可支持多台mysql或者amoeba)
92 楼 grantbb 2009-04-23 amoeba非常好的理念,一些大到一定规模的网站都可以用。
准备在我们这里用一下。
支持。 93 楼 grantbb 2009-04-24 看过amoeba的文档之后,有几个问题请教一下:
1.假如我要用到线上环境,那么做水平拆分,应该要求现在的应用就要不能用 join 那些要进行水平拆分的表。
2.如果水平拆分后,数据在写入的时候,是如何进行处理的?主要是insert的时候,是由那块决定写入那张表中?
希望能够得到答复,谢谢。