论坛首页 Java企业应用论坛

Amoeba for mysql 0.31发布(读写分离、负载均衡、Failover、数据切分)

浏览 76311 次
该帖已经被评为良好帖
作者 正文
   发表时间:2008-05-05  
你的意思就是client 通过jdbc 链接 2台amoeba,通过jdbc进行负载均衡(connect-j)?amoeba本身没有负载均衡的机制?2个amoeba链接2个db,他们之间的数据同步还需要mysql自己的master slave,那么需要amoeba这个干嘛呢?你要确保2台服务器确实同步,就不能利用master、slave,master、slave也是异步的。
0 请登录后投票
   发表时间:2008-05-05  
对于我们的应用是否健康稳定都需要在任何一层有一个备份、故障转移。

这些其实很多产品都具备这一点的,amoeba它的亮点是在于数据切分。一个可以在上面寻找一种可线性扩展的数据切分方式。这个在目前的我所见到的产品都没有这种便利功能的。有些需要写自己的sql。或者通过客户端来实现,给客户端带来相当的复杂度。

amoeba内部除了解析mysql协议,还需要解析sql,收集有用的where条件 与规则进行交集运算。
0 请登录后投票
   发表时间:2008-05-05  
csrcom 写道
对于我们的应用是否健康稳定都需要在任何一层有一个备份、故障转移。

这些其实很多产品都具备这一点的,amoeba它的亮点是在于数据切分。一个可以在上面寻找一种可线性扩展的数据切分方式。这个在目前的我所见到的产品都没有这种便利功能的。有些需要写自己的sql。或者通过客户端来实现,给客户端带来相当的复杂度。

amoeba内部除了解析mysql协议,还需要解析sql,收集有用的where条件 与规则进行交集运算。


也就是说其实负载均衡什么是幌子,真真的在于一个sql切分功能?我看到你的描述,你的负载均衡其实是connect-j提供的,不是amoeba自己的。而且amoeba自己不能做到数据同步,同步还需要mysql自己的master slave机制,并且mysql自己的master/slave其实是异步的。
0 请登录后投票
   发表时间:2008-05-05  
每一层都需要有这种机制,在amoeba内部也具有负载均衡。
amoeba提供一个抽象的dbServer,在那个里面就具有这种负载均衡,故障转移。

0 请登录后投票
   发表时间:2008-05-05  
csrcom 写道
每一层都需要有这种机制,在amoeba内部也具有负载均衡。
amoeba提供一个抽象的dbServer,在那个里面就具有这种负载均衡,故障转移。



那么如果我不用connect-j驱动或者connect j的版本太低,是不是amoeba就不能提供负载均衡和fail over的机制,是不是这样?

我对于这个东西基本了解了,你们是通过connect-J本身来做load balance的,没有connectJ,你们这个产品就不能做了,所以正确的理解是你们这个产品优势在于数据切分或者说sql切分,其他的例如数据同步,fail over需要mysql自己的同步,还有connect J的load balance。

0 请登录后投票
   发表时间:2008-05-05  
任何软件实现一种功能都有它的目的。 比如异步的数据同步不愧是一种好的选择。
如果是同步那么这种性能是难以让人接受的。

何况在大型企业里面可能会有一种树状的db 比如 想类似sun的 ldap。它提供了可以是N层的db结构,master->hub->hub....->slave(master可读写、hub可读可用于数据复制、slave只读)这种结构你能让它同步复制嘛?

无疑异步复制会更让人接受。

软件不代表一种方案,一种方案可能需要多种软件的协助来完成。
0 请登录后投票
   发表时间:2008-05-05  
自身的failover是无论如何是无法做到的..没有外部的力量你怎么去做呢?

起码需要告知客户端有多少个东西你可以使用。

因此failover机制需要靠近使用端才能完成的.当然每一层都需要有一个failover机制

0 请登录后投票
   发表时间:2008-05-05  
csrcom 写道
自身的failover是无论如何是无法做到的..没有外部的力量你怎么去做呢?

起码需要告知客户端有多少个东西你可以使用。

因此failover机制需要靠近使用端才能完成的.当然每一层都需要有一个failover机制



我说的是amebo自身,2者之间不能实现fail over,要通过第三方,amebo自己应该可以做到这点。不然就失去意义了。你可以说所有的fail over都可以通过lvs进行实现。
0 请登录后投票
   发表时间:2008-05-05  
我知道你的需求, 你知道google是如何做这些事情嘛?

对于普通的服务一台机器就够了,为了备份,需要将数据额外存放到另外一台设备。这2台全部成功以后才告知客户端这次交易是ok的,否则将失败。

企业数据丢失情况肯定存在,除了软件提供了一些故障恢复功能以外。一些非人力无法解决的问题是需要工程师手工进行修复。
0 请登录后投票
   发表时间:2008-05-05  
为什么非要自身实现呢?

其实你想要表达的是amoeba它应该提供一个driver,而这个driver他是为了多台amoeba 负载均衡、failover的。

为什么我还需要实现这种机制呢? mysql connector-j已经提供了这种机制。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics