暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【AntDB高可用性方案设计与最佳实践】各种高可用架构介绍

北陌 2024-04-24
44

如何做到高可用呢?方法很简单,那就是冗余。通俗地讲,就是双保险机制。背后的理论基础是概率论。假设某个服务器的可用性是 99%(故障率 1%),那么两个服务器的可用性就是 1-0.01×0.01=99.99%。可以看到,冗余对可用性的提升是指数级的。再冗余一个服务器,可用性就达到 6 个 9 了。

2.5.2 节讲过 CAP 理论,即 CAP 三者不可兼得, 提高其中任意两者的同时,必然要牺牲第三者。(推荐阅读文章《分布式系统缘起及理论》)。CAP 理论如图 6-1 所示。

图 6-1 CAP 理论图

用冗余提升可用性,本质上是在追求 AP。冗余越多,解决 C 的成本就越高。其中最大的成本是时间成本,时间成本在技术上不可接受的。程序员提起高可用系统,经常会再加一个词“高并发”。高并发就体现了技术对时间的追求。正是这些不可兼得的矛盾,才让架构师在面对不同业务场景时,需要做不同的技术取舍。

冗余的架构设计有三种模式:双主(Master & Master)、主备(Master & Co-Master)和主从(Master & Slave)。冗余架构如图 6-2 所示。

图 6-2 冗余架构设计

双主架构模式中,两台服务器是平等关系,同时对外提供读写服务,客户端任选一台即可。双主架构模式是可用性最好的,但是这种架构的一致性处理比较困难,需要两台服务器进行双向数据同步。一旦它们之间的通信断开,就形成了网络分区,这种分区会带来脑裂(brain-split)问题,并且系统对此无解, 必须人工介入。所以在架构设计时极少选择双主架构模式。

主备架构模式中,两台服务器不再是平等关系。主服务器承担所有的读写请求,备服务器只有在主服务器不可用时才取而代之。主备服务器之间虽然也存在两个方向的数据同步,但跟双主模式不同,它们不会同时发生。正常情况下只存在主服务器向备服务器同步数据。主服务器不可用的时间段内,数据会写到备服务器。当主服务器恢复后,才需要由备服务器向主服务器同步数据。

在此期间,会双写数据到主备服务器,防止主服务器同时再向备服务器同步数据。主备服务器比较容易实现,缺点是备服务器在绝大部分时间是一种资源浪费。一般数据库系统在部署时会考虑主备架构。

主从架构模式其实不是主要解决高可用问题的,更多地是为了实现读写分离,来解决高并发问题。实际场景中通常不是一主一备,而是一主多备架构, 因为大部分应用都是读多写少。主服务器处理写请求,备服务器处理读请求。由于存在多备,读服务的可用性远高于写服务。另外,写服务会存在单点故障。这个问题可以通过集群动态选主来解决:当主节点不可用时,集群自动选出一台新的主服务器。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论