Эффективное использование API API GRPC с несколькими каналами и уникальной очередью завершения в C ++C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Эффективное использование API API GRPC с несколькими каналами и уникальной очередью завершения в C ++

Сообщение Anonymous »

В настоящее время я строю несколько микросервисов для AWS. Выбор моей команды использовал Drogon для функциональности на стороне сервера, а GRPC потребляет другие микросервисы. Итак, мой план состоял в том, чтобы использовать один поток для прослушивания/отправки HTTP -запросов, 2 рабочих потоков для обработки/жестких задач и hout Thread для GRPC .
В настоящее время оркестратор может потреблять 5-10 микросервисов, живущих на разных хостах, таких как localhost: 444 , localhost: 445 ,. .. Итак, в оркестраторе, я думаю, нужно иметь n -каналы и n gtubs (потому что я не могу делиться причинами каналов хостов). < /p>
Используя ASYNC API, я создал Один очередь завершения для всех клиентов, а также потока, которая будет постоянно ждать следующего результата: < /p>
auto AsyncRpcEngine::start_completion_queue_loop_thread() -> void
{
std::thread{&AsyncRpcEngine::completion_queue_loop, this}.detach();
}

auto AsyncRpcEngine::retrieve_completion_queue() -> grpc::CompletionQueue&
{
return completion_queue_;
}

auto AsyncRpcEngine::completion_queue_loop() -> void
{
void* function_tag;
bool ok = false;

while (completion_queue_.Next(&function_tag, &ok))
{
auto function_call = static_cast< std::function* >(function_tag);

(*function_call)();

delete function_call;
}
}
< /code>
Так что у меня есть несколько вопросов: < /p>
  • - мой подход использования одной очереди завершения для n gtubs /клиенты-хорошее решение? > будет ли большие накладные расходы для создания нескольких каналов?
  • Я выбрал Async API, потому что он позволил мне иметь больше контроля над потоками/асинхронными операциями, и у меня уже есть некоторые функции, чтобы сделать некоторые обратные вызовы и ожидаемые задачи GRP 'М не обдумываю оптимизацию или лучший подход к моей проблеме, пожалуйста, дайте мне знать, как я могу сделать свою программу более эффективной.


Подробнее здесь: https://stackoverflow.com/questions/794 ... mpletion-q
Ответить

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

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

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

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

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