这几个月我用java开发了mysql proxy。采用解析mysql 协议。对客户端完全透明。
性能比mysql 官方上面的proxy低5%。
支持高并发。目前具备功能:
1、读写分离。
2、Data merge。多数据库并发执行sql,合并结果。
3、负载均衡(ROUND ROBIN、WEIGHT BASED)
4、failover等支持。
5、query rout,根据sql语句可制定规则(利用Jboss Drools)来路由到具体的mysql real server。
不支持跨越数据库进行join、排序等问题

解决方案 »

  1.   

    PROXY也就是做这个用的,加其他的功能显得很不专业。
      

  2.   

     多谢 yueliangdao0608 回复
      

  3.   

    试验了MYSQL PROXY。可以去看看。以后将抽空把所有的功能都试一下。
      

  4.   

    你好,我用了下MYSQL-PROXY,没发现有DATA MERGE这个功能,请问是你自己写的一个.LUA添加的吗?
    这样的话是不是像分布式数据库那样了,要建一个全局表来记录各个数据库上的表?这样的话那MYSQL-PROXY就成了一个分布式数据库的中间件了?
    在MYSQL-PROXY下各个数据库是采用MASTER-SLAVE来保证各个数据库的一致的吗?
      

  5.   

    其实,我开发是 amoeba for mysql 也是属于mysql proxy类似的软件下载地址: http://www.sourceforge.net/projects/amoeba
    中文文档: http://amoeba.sourceforge.net/doc
    相关讨论: http://www.javaeye.com/topic/188598
      

  6.   

    其实,我开发是 amoeba for mysql 也是属于mysql proxy类似的软件下载地址: http://www.sourceforge.net/projects/amoeba
    中文文档: http://amoeba.sourceforge.net/doc
    相关讨论: http://www.javaeye.com/topic/188598
      

  7.   

    谢谢楼主的回复
    能推荐一些数据库中间件产品吗?(开源的最好)及相关的资源.你是采用了什么策略来保证DATA MERGE的正常执行?比如在一个数据库迟迟不能给予AMOEBA的查询返回结果?(二段式提交?)可以给我些文档参考吗?
      

  8.   

    消耗的时间基本上是=最迟返回的结果的那台机器所消耗的时间。
    任何一台数据库访问异常结果都只返回异常数据包不推荐用在返回大数据量的场面,因为在java里面 32位系统最多内存只能设置1.5G 合并结果是比较浪费内存的.amoeba目前暂时不支持事务。