zoukankan      html  css  js  c++  java
  • 基于Amoba实现mysql主从读写分离

    一、Amoeba简介     
         Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy。它集中地响应应用的请求,依据用户事先设置的规则,将SQL请求发送到特定的数据库上执行。基于此可以实现负载均衡、读写分离、高可用性等需求。与MySQL官方的MySQL Proxy相比,作者强调的是amoeba配置的方便(基于XML的配置文件,用SQLJEP语法书写规则,比基于lua脚本的MySQL Proxy简单)。
         Amoeba相当于一个SQL请求的路由器,目的是为负载均衡、读写分离、高可用性提供机制,而不是完全实现它们。用户需要结合使用MySQL的 Replication等机制来实现副本同步等功能。amoeba对底层数据库连接管理和路由实现也采用了可插拨的机制,第三方可以开发更高级的策略类来替代作者的实现。这个程序总体上比较符合KISS原则的思想。目前 Amoeba 已在很多 企业的生产线上面使用。
    二、Amoeba解决的问题及目前存在的劣势:
    1.主要解决的问题:
      (1). 数据切分后复杂数据源整合
      (2). 提供数据切分规则并降低数据切分规则给数据库带来的影响
      (3). 降低数据库与客户端连接
      (4). 读写分离路由
    2.劣势:
      (1).目前还不支持事务
      (2).暂时不支持存储过程(近期会支持)
      (3).不适合从amoeba导数据的场景或者对大数据量查询的query并不合适(比如一次请求返回10w以上甚至更多数据的场合)
      (4).暂时不支持分库分表,amoeba目前只做到分数据库实例,每个被切分的节点需要保持库表结构一致
    三、为什么要用Amoeba
     目前要实现mysql的主从读写分离,主要有以下几种方案:
    •  通过程序实现,网上很多现成的代码,比较复杂,如果添加从服务器要更改多台服务器的代码
    • 通过mysql-proxy来实现,由于mysql-proxy的主从读写分离是通过lua脚本来实现,目前lua的脚本的开发跟不上节奏,而写没有完美的现成的脚本,因此导致用于生产环境的话风险比较大,据网上很多人说mysql-proxy的性能不高
    • 自己开发接口实现,这种方案门槛高,开发成本高,不是一般的小公司能承担得起
    •  利用阿里巴巴的开源项目Amoeba来实现,具有负载均衡、高可用性、sql过滤、读写分离、可路由相关的query到目标数据库,并且安装配置非常简单

    四、方案架构图

     Amoeba的安装配置可以参考:http://634871.blog.51cto.com/624871/1335129

  • 相关阅读:
    Android模拟器安装程序及上传音乐并播放
    Android .classpath文件的作用
    eclipse常用快捷键
    使用Eclipse开发Android源码
    android模拟器环境选择媒体文件,解决"No media found"
    Android模拟器使用SD卡
    string.xml文件需要转译字符”’”
    播放器设计方案
    PHP文件系统文件上传
    PHP文件系统文件下载
  • 原文地址:https://www.cnblogs.com/moonandstar08/p/6481413.html
Copyright © 2011-2022 走看看