当前位置:首页 » Mysql技术教程

【Amoeba for MySQL 】

2017-12-20 08:20 本站整理 浏览(3)

Amoeba(变形虫)项目,该开源框架于2008年 开始发布一款 Amoeba forMysql软件。这个软件致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的时候充当SQL路由功能,专注于分布式数据库代理层(Database Proxy)开发。

 

Amoeba for MySQL致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的时候充当query 路由功能,专注 分布式数据库 proxy 开发。座落与Client、DB Server(s)之间。对客户端透明。具有负载均衡、高可用性、Query过滤、读写分离、可路由相关的query到目标数据库、可并发请求多台数据库合并结果。 在Amoeba上面你能够完成多数据源的高可用、负载均衡、数据切片的功能。


 

Amoeba主要解决:

• 降低 数据切分带来的复杂多数据库结构

• 提供切分规则并降低 数据切分规则 给应用带来的影响

• 降低db 与客户端的连接数

• 读写分离

 

切分(Sharding)并不是特定数据库产品所附属的功能,而是在具体技术细节之上的抽象处理。是水平扩展(Scale Out)的解决方案,主要目的是解决单节点数据库服务器的能力限制,以及整个应用其架构的可扩展性(Scalability)。

 

切分主要有两种方式:水平切分(Horizental Sharding)和垂直切分(Vertical Sharding)。水平切分所指的是通过一系列的切分规则将数据水平分布到不同的DB或table中,在通过相应的DB路由 或者table路由规则找到需要查询的具体的DB或者table以进行Query操作,比如根据用户ID将用户表切分到多台数据库上。垂直切分指的是按业务、产品切分,将不同类型的数据且分到不同的服务器上,通过数据库代理疏通程序与多个数据库的通讯、降低应用的复杂度。

 

读写分离简单的说是把对数据库读和写的操作分开对应不同的数据库服务器,这样能有效地减轻数据库压力,也能减轻io压力。主数据库提供写操作,从数据库提供读操作,这样既避免了主数据库服务器(Master)的过载,也有效地利用了从数据库服务器(Slave)的资源。

 

 

那么Amoeba for mysql 对客户端程序来它是一个虚拟的mysql,对外提供mysql协议。客户端连接amoeba就象连接mysql一样。在amoeba内部需要配置相关的认证属性。

 

 

Amoeba不能做什么?

•目前还不支持事务

•暂时不支持存储过程(近期会支持)

•不适合从amoeba导数据的场景或者对大数据量查询的query并不合适(比如一次请求返回10w以上甚至更多数据的场合)

•暂时不支持分库分表,amoeba目前只做到分数据库实例,每个被切分的节点需要保持库表结构一致