`
gaojingsong
  • 浏览: 1183058 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

【Mysql数据库之Amoeba介绍】

阅读更多

一、Amoeba介绍

Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy。它集中地响应应用的请求,依据用户事先设置的规则,将SQL请求发送到特定的数据库上执行。基于此可以实现负载均衡、读写分离、高可用性等需求。与MySQL官方的MySQL Proxy相比,作者强调的是amoeba配置的方便(基于XML的配置文件,用SQLJEP语法书写规则,比基于lua脚本的MySQL Proxy简单)。

Amoeba相当于一个SQL请求的路由器,目的是为负载均衡、读写分离、高可用性提供机制,而不是完全实现它们。用户需要结合使用MySQL的 Replication等机制来实现副本同步等功能。amoeba对底层数据库连接管理和路由实现也采用了可插拨的机制,第三方可以开发更高级的策略类来替代作者的实现。这个程序总体上比较符合KISS原则的思想。

 

 

估计使用MySQL Proxy的很多数据库技术人员都已经熟悉了,前不久国内也有开发者发布了一个Amoeba(变形虫)项目,这个项目专注分布式数据库Proxy开发,引起了数据库社区广泛的关注

 

为什么叫Amoeba呢?其实这个想法我是突然想到的,Amoeba的中文意思是“变形虫”,Amoeba被设想为数据库代理的开发框架,它可以为符合Amoeba框架的任何数据库开发代理层。因此也比较象“变形虫”一样能够变成目标数据库的代理层软件。

 

二、Amoeba优势

Amoeba主要解决以下问题:

a). 数据切分后复杂数据源整合

b). 提供数据切分规则并降低数据切分规则给数据库带来的影响

c). 降低数据库与客户端连接

d). 读写分离路由

 

三、Amoeba不足

a)、目前还不支持事务

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

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

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

 

 

 

Amoeba for MySQL:被代理的只有MySQL数据库,需要分析MySQL网络协议,它的代价比Aladdin会小很多,而且性能也较高;

Amoeba for Aladdin:被代理的可以是目前提供JDBC驱动的所有数据库,这些数据库可以同时并存于Amoeba for Aladdin后端。

 

 

四、如何实现mysql读写分离                                                                     

通常来说有两种方式:    

1,应用程序层实现                                                                                                            

2,中间件层实现  

 

应用层实现

应用层实现是指在应用程序内部及连接器中实现读写分离。

例如:

com.mysql.jdbc.replicationdriver

mysqlnd_ms

优点:

程序内部实现读写分离,安装即可使用

减少部署难度。

访问压力在一定级别以下,性能很好。

缺点:

架构一旦调整,代码要更这变, 不够灵活。

难以实现高级应用,如自动分库,分表

无法适用于更大型的应用场景。

目前还不支持事务

 

中间件层实现:

中间件层实现是指外部中间件程序实现读写分离

mysql-proxy

amoeba

TDDL(TAObao)

CObar(alibaba)

Atlas(qihoo360)

优点:

架构设计上更加灵活、

读库的负载均衡

可在程序上实现一些高级控制,failover,流量控制

依靠一些技术可以实现mysql性能提升,如连接池

对业务代码侵入性少

缺点:

需要有一定的开发实力和运维团队的支持

  • 大小: 125.5 KB
  • 大小: 102.6 KB
0
0
分享到:
评论

相关推荐

    MySQL搭建Amoeba_读写分离.docx

    在本文中,我们将详细介绍如何使用 Amoeba 实现 MySQL 读写分离的配置过程。Amoeba 是一个基于 MySQL 的 proxy,能够集中地响应应用的请求,并根据用户事先设置的规则,将 SQL 请求发送到特定的数据库上执行,从而...

    DBA MySQL数据库工程师(2021版)视频教程

    DBA MySQL数据库工程师(2021版)视频教程 课程大纲: 第1章 MySQL简介及安装 第2章 MySQL基础管理 第3章 SQL语句基础应用 第4章 索引的基本管理 第5章 存储引擎 第6章 日志管理 第7章 备份恢复 第8章 主从复制基础 ...

    amoeba[1]分布式数据库解决方案.pdf

    本文将详细介绍Amoeba这一分布式数据库Proxy解决方案的核心理念、架构特点及其应用场景。 #### 分布式数据库系统的优点 分布式数据库系统相比传统的集中式数据库系统拥有诸多优势: 1. **成本效益**:通过地理上...

    MySQL数据库简介.doc

    MySQL数据库简介 MySQL数据库简介 MySQL是一个开放源代码的关系型数据库管理系统,使用最常用的数据库管理语言—结构化查询语言(SQL)进行数据库管理。 MySQL数据库系统的优势有很多,如速度、可靠性和适应性等。...

    Amoeba的使用及单机多MySQL数据库的配置(特别说明).pdf

    Amoeba是一种开源的数据库中间件,主要用于MySQL数据库的分布式数据层解决方案。它可以实现数据库的读写分离、查询路由、故障转移、负载均衡等功能。Amoeba通过代理的形式,使得客户端应用程序与数据库服务器之间的...

    用amoeba配置mysql代理.pdf

    Amoeba是一种分布式数据库中间件,用于MySQL数据库的高可用性和负载均衡。它可以在多个MySQL主节点之间进行数据复制,并且可以动态地调整数据分片,以提高系统的读写性能和容错性。以下是使用Amoeba配置MySQL代理的...

    amoeba-mysql-binary-2.2.0.tar

    总的来说,这个压缩包文件集合提供了搭建一个基于Amoeba的分布式MySQL数据库环境所需的基础组件,包括Amoeba自身、CMake(可能用于编译Amoeba或其他依赖)、JDK(用于Amoeba或MySQL的编译和运行时环境),以及MySQL...

    Amoeba学习资料

    在MySQL等传统关系型数据库无法满足大规模数据存储和高并发访问需求时,Amoeba应运而生,为解决这些问题提供了一种有效的解决方案。 **Amoeba的工作原理** Amoeba通过透明分片技术将一个大的数据库逻辑上划分为多个...

    amoeba-mysql-binary

    "amoeba-mysql-binary" 是一个与MySQL数据库相关的开源项目,其主要功能是提供一种分布式解决方案,用于扩展MySQL服务器的能力,提升数据库的可扩展性和可用性。Amoeba这个名字来源于生物学中的变形虫,寓意该系统...

    Amoeba的使用及单机多MySQL数据库的配置(特别说明)[归纳].pdf

    下面我们将详细探讨Amoeba的配置及其在单机多MySQL数据库环境中的应用。 首先,Amoeba作为介于应用程序和数据库之间的中介,通过接收应用程序的SQL语句,然后根据配置文件将其路由到相应的数据库实例进行处理。这种...

    amoeba集群文档+Amoeba使用指南pdf+mysql主从同步

    标题中的“amoeba集群文档+Amoeba使用指南pdf+mysql主从同步”是指一系列关于Amoeba中间件和MySQL数据库集群的知识资源,包括Amoeba的集群部署、使用方法以及MySQL的主从同步策略。这些文档将帮助读者理解如何构建高...

    amoeba-mysql-3.0.5-RC-distribution.zip

    2. **MySQL Binaries**:Amoeba 与 MySQL 数据库紧密集成,因此压缩包中会包含MySQL的二进制文件,如 mysqld(MySQL服务器进程)、mysql客户端工具等,以便用户可以配置和管理数据库实例。 3. **配置文件**:Amoeba...

    Amoeba+mysql 读写分离 Keepalived+mysql

    Amoeba 是一个分布式数据库中间件,主要用于MySQL的读写分离。它的主要作用是将读操作分发到多个从库,从而减轻主库的压力,提高系统整体的读取性能。Amoeba 通过透明的方式工作,应用程序无需修改即可直接连接到...

    amoeba-mysql

    【标题】"amoeba-mysql" 是一个针对MySQL数据库的分布式解决方案,旨在处理大规模数据切分和优化客户端对分布式数据的处理方式。Amoeba这个名字来源于其生物学特性,即能够分裂和扩展,这正是该软件在数据库领域的...

    amoeba_mysql读写分离部署说明.docx

    Amoeba 是一款专为 MySQL 设计的中间件,用于实现数据库的读写分离和负载均衡。它的主要功能是接收应用程序的 SQL 请求,根据预设规则将这些请求转发到合适的 MySQL 实例上执行,从而提高系统的可扩展性和可用性。...

    MySQL数据库简介.pdf

    总之,MySQL数据库因其开源、强大、经济和适应性强的特点,成为Web应用中首选的数据库系统之一。随着技术的不断演进,MySQL在高可用性、扩展性和性能方面提供了更多的解决方案,以满足不同规模和复杂性的业务需求。

    amoeba-aladdin-0.5.zip_Amoeba for Aladdin_MYSQL_aladdin_amoeba

    Amoeba是一个分布式数据库中间件,它能将一个单一的MySQL数据库实例转化为分布式集群,以实现数据的水平扩展和高可用性。而Aladdin则可能是用于管理和优化这种集群的工具或框架。 描述中提到"mysql集群,可以实现...

Global site tag (gtag.js) - Google Analytics