Когда лучше писать однопоточные серверы событий и т. Д. - PullRequest
0 голосов
/ 26 мая 2011

Когда лучше писать однопоточные серверы событий, многопоточные или разветвленные серверы?Какой подход больше подходит для:

  1. веб-сервера, который обслуживает статические
  2. веб-сервера, который обслуживает статические и прокси-запросы для других http-серверов
  3. предыдущих, плюс некоторые серверылогика на C без участия жесткого диска или сети
  4. предыдущий плюс делает некоторые запросы к MySQL?

Например, язык C / C ++.Я очень хочу понять этот вопрос.Спасибо.

Ответы [ 2 ]

0 голосов
/ 26 мая 2011

На сервере joelonsoftware ,

ведется приятная дискуссия на тему «Однопотоковый и многопоточный сервер».
0 голосов
/ 26 мая 2011

Учитывая, что современные процессоры являются многоядерными, вы всегда должны писать код, исходя из предположения, что в какой-то момент он может быть многопоточным (сделать вещи реинтегрируемыми везде, где это возможно, а там, где это невозможно, использовать интерфейсы, которые упростят внедрение реализация, которая делает необходимую блокировку).

Если у вас довольно небольшое количество запросов в секунду (qps), то вам, возможно, удастся обойтись без однопоточного сервера событий. Тем не менее, я бы порекомендовал написать код таким образом, чтобы обеспечить многопоточность, в случае, если вы увеличиваете qps и вам нужно обрабатывать больше событий.

Однопоточный сервер можно увеличить, превратив его в разветвленный сервер; однако разветвленные серверы используют больше ресурсов - любая память, общая для всех запросов, дублируется в памяти при использовании разветвленных серверов, тогда как на одном многопоточном сервере требуется только одна копия этих данных. Кроме того, многопоточный сервер может обеспечить меньшую задержку, если он использует преимущества истинного параллелизма, и может фактически выполнять несколько частей обработки одного запроса параллельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...