我们有一个只有一个API的服务(处理单个实体),平均延迟= 400 ms,一个批API在一次调用中处理大约2000个实体[延迟= 200 s]。两个api都读取和写入数据库表。两个api处理的容量非常不同。单一的API有一个明确的模式,每天的最大值和最小值以恒定的速率增加和减少。ddb表能够很好地处理这种流量。当bulk API每天开始接收容量大约2-3小时,并且每秒处理的实体是其他api的20倍时,问题就出现了。这会影响数据库表的写入/读取,因为数据库表无法以如此快的速度自动伸缩。
我们正在考虑像速率限制这样的选项,以实现调整我们的流量,使其符合数据库自动缩放。我们不希望有一个固定的速率,因为这会影响我们客户的SLA(面向运营商的工具)。是否有一种方法可以有动态速率限制,可以根据当前流量缩放,并允许数据库有足够的时间自动缩放?
1条答案
按热度按时间mzmfm0qo1#
请尝试查看Netflix Concurrency Limits提供的解决方案
更多的细节可以在这篇精彩的文章Performance Underload中找到