星期二, 十一月 11, 2008

说两句分布式cache和CAP理论

今天有同事在internal maillist发布了两款自行研发的分布式cache系统。之余,讲到两套系统各有侧重,因为焦点是下面这个问题无法得到完善的解决:

    A、B、C、D四台Cache服务器,如果A宕机,所有Hash给A的请求自动切换到B;如果A恢复,这些请求切换回A。但如果A又宕机,那么这些请求又 将切换到B,这时就存在B中数据不是最新数据的可能。

我的理解和回复是:

根据分布式系统的CAP theorem,一致性、高可用性和可分割性(有人翻译成分区容忍性)三者永远不可兼得。分布式cache系统和其他分布式系统一样都受这个理论 的约束,也就是说,咱们这个系统首先肯定要满足高可用(持续服务能力),然后因为要应对网站的高负荷,必然要满足可分割性,这样一来,由CAP theorem可以推知,该系统必然要在一致性上有所损失,也就是你的邮件斜体字部分所提到的"存在不是最新数据的可能"。这个应该讲是无法消除的,只能 通过其他方法(一般是应用层的方案)去避免,因为这是理论上的极限。

在分布式数据仓库系统中,这个问题也是一样的:银行系统(以及支付宝这样的系统)应该讲是对这三者要求都十分苛刻的系统(相对而言,他们优选CA,所以银 行划账挺繁 琐的,哈哈),所以解决方案很贵、技术含量很高,哈哈。

理解不对的,欢迎大家共同探讨。

没有评论: