Гарантируется ли порядок доставки унарных вызовов gRPC на одном RPC?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Гарантируется ли порядок доставки унарных вызовов gRPC на одном RPC?

Сообщение Anonymous »

Недавно мы обнаружили производственную проблему, которая была вызвана двумя унарными вызовами RPC, запущенными в быстрой последовательности на разных RPC, которые часто принимались и обрабатывались вне очереди. Мы объединили эти два вызова в один RPC с новым полем дискриминатора в сообщении, чтобы указать, что должен делать вызов. Экспериментально это решило проблему на 100%, однако я не могу найти ничего явного, что унарные вызовы RPC будут доставляться в том порядке, в котором они вызываются (пока я игнорирую возможность сбоя сообщения и просто думаю о номинальном случай.)
Я знаю, что преобразование в потоковый RPC гарантирует упорядочение, но в данном конкретном случае это немного сложно по архитектурным причинам. Если я не могу гарантировать ожидаемый порядок получения, я, вероятно, просто добавлю третье значение к дискриминатору, который сообщит получателю сделать первое действие, а затем немедленно выполнить второе, чтобы порядок RPC не вступал в игру, но я Мне все еще интересно, существует ли эта гарантия.
И клиент, и сервер используют асинхронный API gRPC C++ с одним потоком, управляющим очередью завершения, если это имеет какое-либо значение.Спасибо

Подробнее здесь: https://stackoverflow.com/questions/791 ... guaranteed
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»