Amoeba介绍
Amoeba(变形虫)项目,该开源框架于2008年 开始发布一款 Amoeba for Mysql软件。这个软件致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的 时候充当SQL路由功能,专注于分布式数据库代理层(Database Proxy)开发。座落与 Client、DB Server(s)之间,对客户端透明。具有负载均衡、高可用性、SQL 过滤、读写分离、可路由相关的到目标数据库、可并发请求多台数据库合并结果。 通过Amoeba你能够完成多数据源的高可用、负载均衡、数据切片的功能,目前Amoeba已在很多 企业的生产线上面使用。
项目地址:http://amoeba.meidusa.com
文档 http://docs.hexnova.com/amoeba/ 源码http://sourceforge.net/users/meidusa 基于AVA开发
架构图
切分(Sharding)实例
水平切分
<?xml version="1.0" encoding="gbk"?>
<!DOCTYPE amoeba:rule SYSTEM "rule.dtd">
<amoeba:rule xmlns:amoeba="http://amoeba.meidusa.com/">
...
<tableRule name="MESSAGE" schema="test" defaultPools="blogdb-1,blogdb-2">1
<rule name="rule1">
<parameters>ID</parameters>2
<expression><![CDATA[ abs(hash(id)) mod 2 = 0 ]]></expression>3
<defaultPools>blogdb-1</defaultPools>4
</rule>
<rule name="rule2">
<parameters>ID</parameters>
<expression><![CDATA[ abs(hash(id)) mod 2 = 1 ]]></expression>
<defaultPools>blogdb-2</defaultPools>
</rule>
</tableRule>
...
</amoeba:rule>
垂直切分
<?xml version="1.0" encoding="gbk"?>
<!DOCTYPE amoeba:rule SYSTEM "rule.dtd">
<amoeba:rule xmlns:amoeba="http://amoeba.meidusa.com/">
...
<tableRule name="USER" schema="test" defaultPools="userdb"/>1
<tableRule name="MESSAGE" schema="test" defaultPools="blogdb"/>
<tableRule name="EVENT" schema="test" defaultPools="blogdb"/>
...
</amoeba:rule>