История изменений
Исправление alysnix, (текущая версия) :
надо делать на воркерах - группах тредов, что читают задания из тредсейф очереди заданий данной группы и выполняют их. групп может быть не одна, а несколько - по типу заданий.
получаешь запрос от клиента - формируешь задание кидаешь в очередь заданий обработки запроса, тред-воркер ожидающий на очереди просыпается и начинает его исполнять. тип задания, все данные, нужные для исполнения находятся в самом задании. если воркеру нужны новые асинхронные операции, то он может их делать сам(становясь в ожидание), или формировать новые задания других воркеров, а свое задание цеплять к новому как отложенное, и больше его не исполнять.
воркер, что исполняет задание с отложенным, исполнив свое, возобновляет обработку отложенного тем или иным способом…
в таких системах есть две проблемы - рекурсивное порождение заданий от криворукости автора и дедлоки воркеров, по той же самой причине.
ps. то что описано, является по сути «микросервисной» архитектурой только внутри процесса. в дальнейшем (если код написано красиво) легко масштабируется на настоящие микросервисы (каждая группа воркеров это по сути микросервис).
Исправление alysnix, :
надо делать на воркерах - группах тредов, что читают задания из тредсейф очереди заданий данной группы и выполняют их. групп может быть не одна, а несколько - по типу заданий.
получаешь запрос от клиента - формируешь задание кидаешь в очередь заданий обработки запроса, тред-воркер ожидающий на очереди просыпается и начинает его исполнять. тип задания, все данные, нужные для исполнения находятся в самом задании. если воркеру нужны новые асинхронные операции, то он может их делать сам(становясь в ожидание), или формировать новые задания других воркеров, а свое задание цеплять к новому как отложенное, и больше его не исполнять.
воркер, что исполняет задание с отложенным, исполнив свое, возобновляет обработку отложенного тем или иным способом…
в таких системах есть две проблемы - рекурсивное порождение заданий от криворукости автора и дедлоки воркеров, по той же самой причине.
Исходная версия alysnix, :
надо делать на воркерах - группах тредов, что читают задания из тредсейф очереди заданий данной группы и выполняют их. групп может быть не одна, а несколько - по типу заданий.
получаешь запрос от клиента - формируешь задание кидаешь в очередь заданий обработки запроса, тред-воркер ожидающий на очереди просыпается и начинает его исполнять. тип задания, все данные, нужные для исполнения находятся в самом задании. если воркеру нужны новые асинхронные операции, то он может их делать сам, или формировать новые задания других воркеров, а свое задание цеплять к новому как отложенное, и больше его не исполнять.
воркер, что исполняет задание с отложенным, исполнив свое, возобновляет обработку отложенного тем или иным способом…
в таких системах есть две проблемы - рекурсивное порождение заданий от криворукости автора и дедлоки воркеров, по той же самой причине.