Перенаправление запросов на обслуживание Thrift на процесс fork, работающий на тех же компьютерах - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть серверы Thrift, разработанные на c ++ и работающие на машине Linux Если клиент отправляет запрос на сервер Thrift, мой сервер разветвляет один процесс, и параллельный запрос от того же соединения должен обрабатываться процессом fork.

Есть ли способ, которым я могу перенаправить запросы от клиентов, поступающие от клиентов, в процесс форка?

1 Ответ

1 голос
/ 09 апреля 2020

Вы можете обрабатывать клиенты Thrift в разветвленных дочерних элементах вашего сервера, но для этого вам придется написать собственный сервер Thrift.

TLDR: Когда вы вызываете fork (), дочерний процесс наследует копии всех дескрипторы открытого файла. Таким образом, по сути, любой сокет, который был у родителя, автоматически доступен ребенку. Хотя ни один из встроенных серверов Thrift в настоящее время не обрабатывает полные дочерние процессы для обработки клиентских подключений, существует сервер Python, который это делает. В данном процессе Python запускает только один поток за раз в пользовательском коде, поэтому разветвление - единственный способ получить параллелизм. C ++, с другой стороны, имеет потоки (облегченные процессы), поэтому существующие серверы C ++ создают потоки для масштабирования, а не процессы.

...