Недавно мы обнаружили производственную проблему, которая была вызвана двумя унарными вызовами RPC, запущенными в быстрой последовательности на разных RPC, которые часто принимались и обрабатывались вне очереди. Мы объединили эти два вызова в один RPC с новым полем дискриминатора в сообщении, чтобы указать, что должен делать вызов. Экспериментально это решило проблему на 100%, однако я не могу найти ничего явного, что унарные вызовы RPC будут доставляться в том порядке, в котором они вызываются (пока я игнорирую возможность сбоя сообщения и просто думаю о номинальном случай.)
Я знаю, что преобразование в потоковый RPC гарантирует упорядочение, но в данном конкретном случае это немного сложно по архитектурным причинам. Если я не могу гарантировать ожидаемый порядок получения, я, вероятно, просто добавлю третье значение к дискриминатору, который сообщит получателю сделать первое действие, а затем немедленно выполнить второе, чтобы порядок RPC не вступал в игру, но я Мне все еще интересно, существует ли эта гарантия.
И клиент, и сервер используют асинхронный API gRPC C++ с одним потоком, управляющим очередью завершения, если это имеет какое-либо значение.Спасибо
Подробнее здесь: https://stackoverflow.com/questions/791 ... guaranteed
Гарантируется ли порядок доставки унарных вызовов gRPC на одном RPC? ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как эффективно управлять данными области запроса и MDC в унарных вызовах gRPC? [закрыто]
Anonymous » » в форуме JAVA - 0 Ответы
- 8 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как эффективно управлять данными области запроса и MDC в унарных вызовах gRPC?
Anonymous » » в форуме JAVA - 0 Ответы
- 18 Просмотры
-
Последнее сообщение Anonymous
-
-
-
AppHarbor – /order/rpc.ashx(1): ошибка ASPPARSE: не удалось создать тип «web.order.rpc»
Anonymous » » в форуме C# - 0 Ответы
- 42 Просмотры
-
Последнее сообщение Anonymous
-