Я не уверен, что полностью понял, где вы видите проблему.Начиная с
некоторые более поздние запросы могут действительно обрабатываться раньше, чем более ранние.
Я предполагаю, что вы обеспокоены буферизацией запросов, которые не могут быть удовлетворены сейчас, но могутработал в ближайшее время.
Вы получили запрос, такой как
{ Amazon, X }
, и из-за (скажем) регулирования X не может удовлетворить этот запрос прямо сейчас.
Мой первыйВопрос заключается в том, являются ли запросы независимыми, то есть я могу немедленно обработать запрос Amazon и поставить X-запрос в очередь?Если так, то простая очередь FIFO для каждого сервива, безусловно, сделает эту работу.Вероятно, вам понадобится максимальный размер очереди (учитывая, что время ожидания HTTP-запросов не может длиться часами).
Если вы думаете об отсрочке выдачи запроса Amazon до тех пор, пока не сможете выполнить Xзапрос, то все становится сложнее.Я думаю, что у вас действительно есть проблема с расписанием встреч.Вам нужно найти слот, когда Amazon и X свободны.Таким образом, у вас может быть какой-то список очередей, каждая очередь предназначена для удовлетворения запросов в данный момент времени для службы.
Amazon(3 per sec)
09:05:31 - request A, B, C
09:05:32 - request D, E, F
09:05:33 - request G - - <=== slots available
--- <=== times and slots available
X (2 per min)
09:05 - request M, N
09:06 - request O <=== slot available
Здесь у нашего {Amazon, X} есть слот, доступный в 09:06
Amazon(3 per sec)
09:05:31 - request A, B, C
09:05:32 - request D, E, F
09:05:33 - request G - - <=== slots available
--- <=== times and slots available
09:06:01 - request P
X (2 per min)
09:05 - request M, N
09:06 - request O, P
Лично я бы начал с чего-то гораздо более простого: если запрос не может быть удовлетворен прямо сейчас, потому что достигнут какой-либо один предел обслуживания, просто отклоните запрос.