我有两个执行相同工作的同步web API,但其中一个需要优先于另一个(前者是从客户端调用的,而后者是客户机调用之前的缓存优化)。
制约因素:
问:什么是适当的模式,以确保优先级API总是得到循环,而不是饥饿的任何一个API?优先级API比优化API获得更多令牌的节流机制是否合适?
发布于 2019-01-28 23:29:39
我想您可以让中间人跟踪有多少VM在做什么(与以前的Apache服务器生成策略不同)。
在每个时刻,只有在存在足够多的空闲VM(或者期望在合理的时间片内存在,如果知道调用开始时间和平均呼叫持续时间)来满足对高优先级调用的任何需求时,才能调用优化API。这将确保传入的高优先级呼叫能够立即得到服务(这假设在我们可以放置优先级代理的地方没有其他争用)。
您可以随时跟踪实际的空闲池大小,以尽量减少未加载的VM的数量(也就是说,如果使用X空闲VM,总有100%的高优先级呼叫被发送,则可以将X减少1,然后继续这样做,直到您在舒适的数字上徘徊,比如95%)。
另一方面,这意味着您的中间人不能分批打电话,除非有很多VM是免费的。不能对呼叫进行批处理可能会影响性能,而另一方面,保持过多的VM空闲肯定会影响性能。
此外,您还可以跟踪正在进行的呼叫--如果已经发出了呼叫,并且通过了对相同参数的高优先级请求,则等待上一次呼叫终止可能比立即将请求发送到空闲VM更方便。
https://softwareengineering.stackexchange.com/questions/386239
复制相似问题