Какие-либо предложения для компонентов, чтобы использовать в качестве основы для масштабируемого TCP-сервера? В настоящее время у меня есть реализация, которая использует Indy, которая хорошо работает, скажем, для 100 относительно активных соединений или 1000 относительно неактивных соединений, но один поток на модель соединения ограничивает количество одновременных активных соединений, которые могут быть обработаны.
Допустим, моя цель - 1000 соединений, каждое из которых обрабатывает 10 сообщений в секунду, или 10000 соединений, каждое из которых обрабатывает 1 сообщение в секунду на хорошем сервере (8–16 ядер). Это реалистично? Мне бы очень хотелось услышать о любых реальных реализациях, потому что я обнаружил, что то, что может работать в теории, не обязательно работает на практике, и я не хочу гоняться за предлагаемым решением, которое не будет работать.
Редактировать: IOCP было бы хорошо, но я хочу использовать только классы / компоненты коммерческого уровня, поэтому они должны быть такими же "профессиональными", как Indy или IP * Работает, прежде чем я подумаю об использовании их. Более того, я не собираюсь «раскручивать собственное» решение - потребуется слишком много времени, чтобы сделать его коммерческим. Наконец, я ищу существенное улучшение того, что у меня уже есть. Я уверен, что смогу выжать как минимум на 20-50% больше того, что у меня есть (на основе Indy), но я никогда не смогу обработать 10 000 одновременно работающих клиентов или 10 000 сообщений в секунду, как бы я ни старался , Есть ли что-то там, что отвечает этим условиям - другой вопрос.
Я решил принять ответ, относящийся к классам IOCP, хотя я и не использовал их, потому что они выглядят как лучший путь для расследования на данном этапе.