主动/只读池模式

在主动/只读池模式中,将所有写入指向主节点。根据应用程序的需要,读取则可以被发送到主节点或只读池。只读池可以实现读取密集型应用程序的读水平扩展。

配置

在理想情况下,至少要有一个副本(最好是两个)与主节点服务器具有相同的配置同样地,当需要故障切换到其中一个副本时,该副本应该有足够的容量支撑业务的流量。

如果随着时间的推移,只读池在持续增长,则可以让副本用不同的硬件配置来优化成本。在这种情况下,可以尝试将流量进行加权,运行在更好的硬件配置的副本上可以承担更多的流量。如果故障切换的目标副本上有 32 个CPU核,其他副本有 8 个核,则可以向 32 核的节点发送 4 倍以上的流量,以确保资源被充分利用。

冗余

在只读池中的服务器数量应满足先前提出的要求,还需要至少一台服务器可以充当故障切换的目标。此外,还需要有足够的节点来支撑读流量,以及用于节点故障的小缓冲区

对于读取,最有效的使用率参考指标是 CPU 使用率,因此,目标池中每个节点的使用率应该在 50%~60%。随着 CPU 使用率的增加,节点会花费更多的时间在工作和延迟之间进行上下文切换,尝试在满足应用程序期望的延迟和使用率之间找到适当的平衡。

提示

在使用读取池的时候,应用程序必须对延迟读取有一定的容忍度,因为你永远无法保证在源服务器上完成的写入已被复制到副本上。

可能还需要一种方法来识别那些复制延迟太大的节点,并根据需要将其踢出只读池。

最后更新于