数据流水线有时会出现发布流量激增的情况。流量高峰 这可能会让订阅者感到应接不暇。避免流量激增的一个简单方法是动态增加 Pub/Sub 订阅者资源,以处理更多消息。不过,此解决方案可能会增加费用或无法立即生效。例如,您可能需要许多虚拟机。
订阅者端的流控制让订阅者能够以 提取哪些消息因此,流控制无需 增加费用或增加订阅人数。
流控制是 Pub/Sub 高级客户端库中提供的一项功能。在使用 低层级客户端库。
如果需要实施流控制,则表明消息是在 速率要高于消耗速率如果此情形是持续存在的状态,而不是消息量瞬时峰值,请考虑增加订阅者客户端实例的数量。
流控制配置
借助流量控制,您可以配置为未完成请求分配的最大字节数以及允许的未完成消息的最大数量。请根据客户端机器的吞吐量容量设置这些限制。
流控制变量的默认值和变量名称可能会因客户端库而异。例如: 在 Java 客户端库中,以下变量用于配置流控制:
setMaxOutantsElementCount(). 用于定义消息的最大数量 Pub/Sub 未收到确认或负面消息 致谢。
setMaxOutstandingRequestBytes()。定义 Pub/Sub 尚未收到确认或否定确认的消息的大小上限。
如果 setMaxOutstandingElementCount()
或
setMaxOutstandingRequestBytes()
已交叉,订阅者客户端
不会拉取更多消息。这种行为会一直持续到
获得确认或负面确认
这样,我们就可以根据运行更多订阅者所产生的费用来调整吞吐量。
流控制代码示例
如需控制订阅者客户端接收消息的速率,请使用订阅者的流控制功能。这些流控制功能 如以下示例中所示:
C++
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 C++ 设置说明进行操作。如需了解详情,请参阅 Pub/Sub C++ API 参考文档。
C#
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 C# 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub C# API 参考文档。
Go
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Go 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Go API 参考文档。
Java
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Java 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Java API 参考文档。
Node.js
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Node.js 设置说明进行操作。如需了解详情,请参阅 Pub/Sub Node.js API 参考文档。
Node.js
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Node.js 设置说明进行操作。如需了解详情,请参阅 Pub/Sub Node.js API 参考文档。
Python
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Python 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Python API 参考文档。
Ruby
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Ruby 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Ruby API 参考文档。
后续步骤
了解您可以为订阅配置的其他提交选项: