Dmitry Yemanov wrote:
суперсервер за счёт единого кэша весьма эффективен и быстр
Это скорее теорема, чем аксиома...
Разнесённый кэш мне не ещё нравится тем, что быстро выжирает
память. Различные процессы классика конкурируют и вытесняют горячие данные
из кэша процессора, который нерезиновый.
Давайте сделаем такую архитектуру: гибрид классика и супера
Может лучше таки параллельную работу с общим кешем?
Это конечно идеальный вариант, но требует больше переработок. Как я себе
представляю проблема в большом количестве legacy code, который не может
выполняться сразу несколькими потоками. Чисто теоретически, read only
запросы при полном попадании в кэш должны очень хорошо параллелится.
Что же касается вытесняющей многозадачности на одном ядре, то в идеале надо
делать свой шедулер потоков и ресурсов. Потому что надо эффективно
управлять приоритетом. Например, в одном соединении запускается
долгоиграющий запрос, а другое соединение хочет выполнять короткие быстрые
запросы. Первое соединение после n секунд выполнения запроса должно
принудительно быть понижено в приоритете.
Аналогично между соединениями должна по братски распределяться полоса
пропускания IO, память.