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