Amoeba是一个类似MySQL Proxy的分布式数据库中间代理层软件,是由陈思儒开发的一个开源的java项目。其主要功能包括读写分离,垂直分库,水平分库等,经过测试,发现其功能和稳定性都非常的不错,如果需要构架分布式数据库环境,采用Amoeba是一个不错的方案。目前Amoeba一共包括For aladdin,For MySQL和For Oracle三个版本,本文主要关注For MySQL版本的一个读写分离实现。实际上垂直切分和水平切分的架构也相差不大,改动几个配置就可以轻松实现。

下图是一个采用Amoeba的读写分离技术结合MySQL的Master-Slave Replication的一个分布式系统的架构:

Amoeba处于在应用和数据库之间,扮演一个中介的角色,将应用传递过来的SQL语句经过分析后,将写的语句交给Master库执行,将读的语句路由到Slave库执行(当然也可以到Master读,这个完全看配置)。Amoeba实现了简单的负载均衡(采用轮询算法)和Failover。如果配置了多个读的库,则任何一个读的库出现宕机,不会导致整个系统故障,Amoeba能自动将读请求路由到其他可用的库上,当然,写还是单点的依赖于Master数据库的,这个需要通过数据库的切换,或者水平分割等技术来提升Master库的可用性。

Amoeba可以在不同机器上启动多个,并且做同样的配置来进行水平扩展,以分担压力和提升可用性,可以将Amoeba和MySQL装在同一台机器,也可以装在不同的机器上,Amoeba本身不做数据缓存,所以对于内存消耗很少,主要是CPU占用。对于应用来说,图中的三个Amoeba就是三台一模一样的MySQL数据库,连接其中任何一台都是可以的,所以需要在应用端有一个Load balance和Failover的机制,需要连接数据库时从三台中随机挑选一台即可,如果其他任何一台出现故障,则可以自动Failover到剩余的可用机器上。MySQL的JDBC驱动从connector-j 3.17版本起已经提供了这样的负载均衡和故障切换的功能,那么剩下的事情对于应用来说就很简单了,不需要做太多的改动就能搭建一套高可用的MySQL分布式数据库环境,何乐而不为?

参考链接:
Amoeba开发者博客
Amoeba下载
Amoeba文档
垃圾广告上关于Amoeba的讨论贴

<!--

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/1384/viewspace-611257/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/1384/viewspace-611257/

[江枫]用Amoeba构架MySQL分布式数据库环境相关推荐

  1. 【纯干货】Amoeba实现MySQL主从同步与读写分离

    [纯干货]Amoeba实现MySQL主从同步与读写分离 一.简介 amoeba简介 Amoeba(变形虫)项目,该开源框架于2008年开始发布一款 Amoeba for Mysql软件.这个软件致力于 ...

  2. 阿里开源Mysql分布式中间件:Cobar

    这几天研究了下Cobar, Cobar是阿里巴巴研发的关系型数据的分布式处理系统(Amoeba的升级版,该产品成功替代了原先基于Oracle的数据存储方案,目前已经接管了3000+个MySQL数据库的 ...

  3. amoeba for mysql配置_Amoeba for mysql 读写分离

    Amoeba(变形虫)项目 http://docs.hexnova.com/amoeba/ ,该开源框架于2008年 开始发布一款 Amoeba for Mysql软件.这个软件致力于MySQL的分布 ...

  4. Amoeba for MySQL

    Amoeba for MySQL Amoeba for MySQL致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的时候充当query 路由功能,专注 分布式数据库 proxy ...

  5. amoeba mysql_使用Amoeba 实现MySQL DB 读写分离

    Amoeba(变形虫)项目是一个开源框架,于2008年开始发布一款 Amoeba for MySQL软件: 这个软件致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的时候充当SQ ...

  6. mysql分布式写入_分布式系统知识点七:mysql读写分离简介(转载)

    本系列为网上收集转载分布式相关知识点系列文章,并非原创.如果侵权,请联系我删除!!! 1.  背景 我们一般应用对数据库而言都是"读多写少",也就说对数据库读取数据的压力比较大,有 ...

  7. amoeba for mysql配置_amoeba-mysql配置安装(收集整理)

    本文收集整理自: 一.Amoeba 是什么 Amoeba(变形虫)项目,专注 分布式数据库 proxy 开发.座落与Client.DB Server(s)之间.对客户端透明.具有负载均衡.高可用性.s ...

  8. 使用amoeba配置mysql读写分离

    一,背景介绍: Amoeba(变形虫)项目,专注 分布式数据库 proxy 开发.座落与Client.DB Server(s)之间.对客户端透明.具有负载均衡.高可用性.sql过滤.读写分离.可路由相 ...

  9. Amoeba实现mysql主从读写分离

    Amoeba实现mysql主从读写分离 这段在网上看了下关于amoeba的文章,总体感觉好像要比mysql-proxy好的多,也参考了不少的资料,此文章可能与其他文章作者会有雷同的地方,请谅解,但是此 ...

  10. MySQL分布式事务(XA事务)

    MySQL分布式事务(XA事务) 官网:https://dev.mysql.com/doc/refman/5.7/en/xa.html 1.什么是分布式事务 分布式事务就是指事务的参与者.支持事务的服 ...

最新文章

  1. 管理虚拟机的艺术——有备无患
  2. 【Flask】路由和URL
  3. 面向对象和面向过程的区别_面向过程和面向对象的区别
  4. 图的建立-邻接表表示(C语言)
  5. Abstract Self-Balancing Binary Search Tree
  6. Atitit.木马病毒websql的原理跟个设计
  7. 【impala】impala的shell命令使用
  8. Python如何从一个文件中调用另一个文件的类
  9. win7的配置要求详解
  10. 书------编程书(FoxPro)
  11. 2018华为软件精英挑战赛个人总结
  12. Excel文件解密软件
  13. python回车和换行的区别_换行\ n与回车\ r的区别
  14. 亚马逊自然语言NLP 商品评论智能分析 demo及开发过程 【1 总体API介绍】【持续更新中】
  15. rtx3080和rtx3080ti性能差距 rtx3080和rtx3080ti 参数对比哪个好
  16. 淘宝模块中宝贝跳转链接
  17. html预览pdf文件
  18. 什么是计算机?计算机硬件详细介绍和参数解读[2]
  19. iOS疯狂详解之启动分层引导动画
  20. camunda如何插入以及获取流程审批

热门文章

  1. Excel入门(一)
  2. postgres使用with计算占比,同比和环比
  3. 小白windows内网离线部署宝塔面板
  4. 完美解决Pyqt5 调用软键盘适用于触摸屏
  5. JAVA WEB_HTML的初步(2)
  6. arcengine 加载地图不显示_Devexpress使用后arcengine地图加载不能全图显示
  7. 面矢量栅格化(python)
  8. 527. Word Abbreviation
  9. Java学习手册:大疆创新2020届校园招聘——软件类岗位B卷题一
  10. Android网易云信无脑接入(IM+音视频)【网易云信】