什么是Amoeba?

Amoeba(变形虫)项目,该开源框架于2008年 开始发布一款 Amoeba for Mysql软件。这个软件致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的 时候充当SQL路由功能,专注于分布式数据库代理层(Database Proxy)开发。座落与 Client、DB Server(s)之间,对客户端透明。具有负载均衡、高可用性、SQL 过滤、读写分离、可路由相关的到目标数据库、可并发请求多台数据库合并结果。 通过Amoeba你能够完成多数据源的高可用、负载均衡、数据切片的功能,目前Amoeba已在很多 企业的生产线上面使用。主要解决:

  • 降低 数据切分带来的复杂多数据库结构
  • 提供切分规则并降低 数据切分规则 给应用带来的影响
  • 降低 db 与客户端的连接数
  • 读写分离

为什么要使用Amoeba?

随着传统的数据库技术日趋成熟、计算机网络技术的飞速发展和应用范围的扩充,数据库应用 已经普遍建立于计算机网络之上。这时集中式数据库系统表现出它的不足:集中式处理,势必造成性 能瓶颈;应用程序集中在一台计算机上运行,一旦该计算机发生故障,则整个系统受到影响,可靠性 不高;集中式处理引起系统的规模和配置都不够灵活,系统的可扩充性差。在这种形势下,集中式数 据库将向分布式数据库发展。而Amoeba的透明、简易配置及多个优点使其成为分布式数据库代理产品中的优秀选择。

分布式数据库代理的相关概念

Amoeba在分布式数据库领域将致力解决数据切分,应付客户端“集中式”处理分布式数据。这里集中式是一个相对概念,客户端不需要知道某种数据的物理存储地。避免这种逻辑出现在业务端, 大大简化了客户端操作分布式数据的复杂程度。分布式数据库系统的优点:

  • 降低费用。分布式数据库在地理上可以式分布的。其系统的结构符合这种分布的要求。允许用 户在自己的本地录用、查询、维护等操作,实行局部控制,降低通信代价,避免集中式需要更高要求 的硬件设备。而且分布式数据库在单台机器上面数据量较少,其响应速度明显提升。
  • 提高系统整体可用性。避免了因为单台数据库的故障而造成全部瘫痪的后果。
  • 易于扩展处理能力和系统规模。分布式数据库系统的结构可以很容易地扩展系统,在分布式数 据库中增加一个新的节点,不影响现有系统的正常运行。这种方式比扩大集中式系统要灵活经济。在 集中式系统中扩大系统和系统升级,由于有硬件不兼容和软件改变困难等缺点,升级的代价常常是昂贵和不可行的。

Amoeba相关产品及其介绍

1、Amoeba for MySQL

Amoeba for MySQL致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的时候充当query 路由功能,专注分布式数据库proxy开发。座落与Client、DB Server(s)之间。对客户端透明。具有负载均衡、高可用性、Query过滤、读写分离、可路由相关的query到目标数据库、可并发请求多台数据库合并结果。 在Amoeba上面你能够完成多数据源的高可用、负载均衡、数据切片的功能。目前在很多企业的生产线上面使用。Amoeba for mysql对客户端程序来说,它是一个虚拟的mysql,对外提供mysql协议。客户端连接amoeba就象连接mysql一样。在amoeba内部需要配置相关的认证属性。

2、Amoeba for Aladdin

与Amoeba for MySQL 类似,客户端连接Aladdin必须用MySQL 协议,之所以用MySQL协议,主要是想借助mysql使用的广泛程度以及对各种开发语言的支持。Aladdin后端可以同时连接各种数据库。只要这些数据库提供jdbc驱动。aladdin的出现可以解决企业在数据库整合上面提供积极的帮助。使用者不需要知道后端到底使用了什么类型的数据库、数据库的物理地址什么,这些由aladdin来分析sql语句,并且获得相应的要查询的表跟条件,然后由这些规则结合这些条件进行路由到相关的物理数据库。

3、Amoeba for MongoDB

随着NoSQL的日益兴起,mongoDB作为一款nosql数据库以其优异的性能得到了广泛的关注。可以说,mongoDB填补了传统关系型数据库以及传统键值型数据库的空白,并且兼具两者优秀特质。Amoeba for MongoDB将提供与Amoeba for MySQL类似的,完全自主、可控的切分方式、并尝试完成同样的auto sharding的功能。 基于Amoeba框架,跟以往的产品一样具备心跳检测、负载均衡、故障转移、查询聚合等功能,保留了之前的配置方式,只要熟悉amoeba其中一款产品的配置,那么上手将非常容易的。

比较Amoeba及其类似产品

1、Amoeba for Mysql 与MySQL Proxy比较

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

2、Amoeba for mongoDB与mongos比较

mongodb中的数据切分有一个chunk的概念,每个chunk代表一个数据段(range),当一个chunk的大小到达了指定的数据大小,就会自动切分成两个。 Mongos是根据数据段(chunk)进行切分的,且切分依据的字段必须是一个key。而目前大多的应用中,id(尤其是用户ID)是无序化的,可能有些用户是手机号、有些是会员卡号等等。这使得proxy的range切分难以实施。 因此,虽然mongodb的mongos提供了automatic sharding的功能,但由于数据切分的不可控,常常不能满足我们的需要。 Amoeba for MongoDB提供完全自主、可控的切分方式。

Amoeba不能做什么?

  • 目前还不支持事务
  • 暂时不支持存储过程(近期会支持)
  • 不适合从amoeba导数据的场景或者对大数据量查询的query并不合适(比如一次请求返回10w以上甚至更多数据的场合)
  • 暂时不支持分库分表,amoeba目前只做到分数据库实例,每个被切分的节点需要保持库表结构一致

Amoeba的架构

Amoeba 作为DataBase Proxy的开发框架。致力于解决数据切分、读写分离。以下将为您介绍Amoeba 框架

  • Built on Java NIO

    • NIO 框架采用无阻塞模式,不像传统的Socket编程在大量并发的情况非常浪费系统资源、而且可扩展性也较差
  • Reusable Server Connection
    • Amoeba 提供与数据库连接的可重用度非常高,在Amoeba系统内所有Database Connection同时共享给所有连接到Amoeba的客户端
  • 提供读写分离、数据切分
    • 传统的读写分离技术需要通过客户端或者相关的Database Driver技术才能解决,而且客户端的配置也比较复杂
    • 单台Database 性能总是有限制的,基于Amoeba上面可以寻找一种可线性扩展的多数据支持。Amoeba为DBA提供一种非常友好的类似SQL语法的数据切分规则。
      同时客户端不用担心过多的DataBase Server会给应用带来更多的配置。
  • 支持高可用性、负责均衡
    • Amoeba 提供Database 连接的异常检测与连接恢复功能。
    • 用户可节省使用其他昂贵的负载均衡的硬件设备,Amoeba提供多台Database Server负载均衡策略(轮询、当前活动连接数量)。
  • Amoeba Sequence

参考链接:

  • http://docs.hexnova.com/amoeba/
  • https://github.com/vispractice/Amoeba-Plus-For-MySQL
  • http://sourceforge.net/projects/amoeba/

Amoeba:开源的分布式数据库Porxy解决方案相关推荐

  1. Mycat分布式数据库架构解决方案--搭建MySQL读写分离环境--一主多从

    Mycat分布式数据库架构解决方案--搭建MySQL读写分离环境--一主多从 参考文章: (1)Mycat分布式数据库架构解决方案--搭建MySQL读写分离环境--一主多从 (2)https://ww ...

  2. 开源的分布式数据库中间件系统Mycat和阿里巴巴Cobar的对比

    mycat 不得不说的缘分 原创 2016年04月15日 15:48:17 27834 1,愕然回首,它在灯火阑珊处 关于mysql集群中间件,以前写在应用程序里面,由开发人员实现,在配置文件里面写多 ...

  3. 重磅!分布式数据库解决方案Apache ShardingSphere毕业成为顶级项目

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 全球最大的开源软件基金会 Apache 软件基金会(以下简称 Ap ...

  4. 分布式数据库解决方案Apache ShardingSphere毕业成为顶级项目

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | 公众号「ShardingSphere官微」 全 ...

  5. java中间件_Java技术分享:一致性更强的分布式数据库中间件

    分布式数据库中间件 ShardingSphere 将 Sea t a 分布式事务能力进行整合,旨在打造一致性更强的分布式 数据库中间件 . 背景 数据库领域,分布式事务的实现主要包含:两阶段的 XA ...

  6. jdbc取款怎样限制条件_京东张亮:我们是怎样打造一款分布式数据库的

    我们是怎样打造一款分布式数据库的 作者 | 张亮 关系型数据库在过去数十年的数据库领域一直占据着绝对主导的地位,它所带来的稳定性.安全性和易用性,成为了构建现代化系统的基石.随着的互联网高速发展,构架 ...

  7. 厉害了,分布式数据库中间件ShardingSphere毕业成为Apache顶级项目!

    全球最大的开源软件基金会 Apache 软件基金会(以下简称 Apache)于北京时间 2020年4 月 15 日宣布 Apache ShardingSphere毕业成为 Apache 顶级项目. S ...

  8. 分布式数据库中间件Sharding-JDBC介绍

    前文中介绍了分布式数据库中间件Mycat的一些特性,作为对比本文简要介绍Sharding-JDBC的一些特性以及分片的实现原理,进行对比分析以了解. 1.ShardingSphere介绍 Shardi ...

  9. 阿里Mycat 和京东ShardingSphere:分布式数据库中间件哪家强?

    文章目录 Mycat ShardingSphere Sharding-JDBC Sharding-Proxy Sharding-Sidecar 混合架构 总结 大家好!我是只谈技术不剪发的 Tony ...

  10. 云原生在京东丨ASF顶级分布式数据库中间件项目——Apache ShardingSphere

    云妹导读: 不知不觉[云原生在京东]已经进行了两期,在先前<云原生在京东丨揭秘五大云原生项目在京东的落地实践>和<云原生在京东丨最适合云原生的分布式存储平台--ChubaoFS> ...

最新文章

  1. 用户控件中动态加入脚本引用
  2. 数学(莫比乌斯反演):HAOI 2011 问题B
  3. 量子计算101:浅谈其需求、前景和现实
  4. iisapp 查看PID所对应的IIS应用程序池及详细介绍
  5. QA专题阅读小组 | 每周一起读 #09
  6. NAS DIY的设计和实施过程-5-Openfiler篇
  7. LINUX下载编译wabt(反编译wasm)
  8. The Art of Memory Forensics-Windows取证(Virut样本取证)
  9. delphi2007安装说明(备忘)
  10. 使用X-Scan进行漏洞扫描的基本操作演示
  11. 基于CATIA V5实现无图纸制造
  12. 算数平均数、中位数、众数和几何平均数
  13. html ur是什么意思_url是什么意思?
  14. HDU4699:Editor
  15. [CF1504E]Travelling Salesman Problem
  16. 解密阿里云IoT物联网平台MQTT Access Server核心架构
  17. 德云一哥岳云鹏,准备录制河南和东方卫视节目,央视春晚还参加吗
  18. 技术人的七大必备特质
  19. 学习系列--最优学习内容选择
  20. PMP续证流程(PMI)

热门文章

  1. 寻宝游戏(DFS+动态规划)
  2. nuvoton uboo2013引导流程 1 - 配置
  3. 001_扎马步_初识hadoop
  4. 浅谈前端开发必备知识点及未来发展方向
  5. 英语知识系列:单词中元音字母发音规律
  6. Python爬取奇书网(用Python下载小说到本地)
  7. andriod中3g模块没有mac地址的原因
  8. 12. JLINK在线调试+软件调试方法与技巧
  9. Visual Studio 番茄助手 安装问题
  10. 二极管介绍及参数选择