В чем разница между потоковым сервером и сервером на основе событий? - программирование

В чем разница между потоковым сервером и сервером на основе событий?

Я ищу аналогию, которая поможет мне понять разницу между тем, как потоковый сервер обрабатывает HTTP-запросы и как сервер на основе событий обрабатывает HTTP-запросы. Скажем, что сервер - это магазин в здании, порт 80 - это входная дверь магазина, а http-запрос - это клиент, который просто ходил в парадную дверь. Что будет дальше? Как магазин обрабатывает клиента? Как магазин обрабатывает несколько клиентов, и какая разница в том, насколько быстро клиент покидает магазин?

Короче говоря, я ищу объяснения таких вещей, как "цикл событий" и "поток" и "блокирование" и "неблокирование" с точки зрения физической, реальной аналогии.

4b9b3361

Ответ 1

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

В аналогии на основе событий несколько клиентов могут обслуживаться одним сотрудником магазина - позвольте ему позвонить Бобу. Боб делегирует различные шаги, которые могут занять некоторое время (например, "найти элемент x в задней комнате" ) другим сотрудникам магазина. Когда Боб просит помощника о помощи, помощник сбегает в другое место в магазине, и Боб может двигаться дальше, чтобы помочь другим клиентам, пока оригинальный клиент ждет, чтобы помощник вернулся к Бобу. Когда помощник вернется, закончив свою задачу, они будут ждать, пока Боб придет к хорошей остановке с текущим клиентом Боба, а затем Боб снова может поговорить с помощником и оригинальным клиентом.