# 18.7.2 流量控制

18.7.2.1 探测和统计

18.7.2.2 组复制限制

组复制确保事务仅在组中的大多数成员收到并同意并发发送的所有事务之间的相对顺序后才提交。如果对组的写入总数不超过组中任何成员的写入容量,则此方法效果很好。如果确实如此,并且某些成员的写入吞吐量低于其他成员,特别是低于写入者成员,则这些成员可能开始落后于写入者。

让一些成员落后于该组会带来一些问题后果,特别是对这些成员的读取可能会将非常旧的数据外化。根据成员落后的原因,组中的其他成员可能必须保存或多或少的复制上下文才能满足来自慢速成员的潜在数据传输请求。

然而,复制协议中有一种机制可以避免在应用事务方面,快速成员和慢速成员之间的距离过大。这被称为流量控制机制。它试图解决几个目标:

  1. 保持成员足够接近,以使成员之间的缓冲和去同步成为一个小问题;

  2. 快速适应不断变化的条件,例如不同的工作量或组中更多的作者;

  3. 让每个成员公平分享可用的写入容量;

  4. 不减少超过严格必要的吞吐量,以避免浪费资源。

    鉴于 Group Replication 的设计,是否限制的决定可以考虑两个工作队列来决定:(一世)认证队列;(二)并在二进制日志上应用程序队列。每当这些队列之一的大小超过用户定义的阈值时,就会触发限制机制。只配置:*(一世)是否在验证者或应用程序级别进行流量控制,或两者兼而有之;和(二)*每个队列的阈值是多少。

    流量控制依赖于两个基本机制:

  5. 监视成员以收集有关所有组成员的吞吐量和队列大小的一些统计数据,以对每个成员应承受的最大写入压力做出有根据的猜测;

  6. 限制试图在每个时刻超出其可用容量的公平份额的成员。