Я проектирую сервер для следующего сценария:
- серия отдельных изображений хранится на NAS, скажем, 100 из них
- клиент подключается к серверучерез сокет TCP и запрашивает изображение 39
- сервер считывает изображение 39 из NAS и отправляет обратно клиенту через сокет
- вполне вероятно, что клиент также запросит другие изображения из серии, поэтому:
- Я хотел бы запустить поток, который просматривает изображения, читает их и выполняет
cat image39 > /dev/null
для принудительного кэширования в память на сервере. - поток будет извлекать изображения следующим образом: image38, image40, image37, image41 и т. д.
- уже извлеченные изображения игнорируются
- если клиент теперь запрашивает image77, я хочу сбросить поток извлечения для извлечения: image76, image78 и т. д.
Это масштабируется для многих серий и клиентов.Вероятно, порядка 1000 одновременных предварительных выборок.Я понимаю, что потоки могут привести к снижению производительности, если их слишком много.Было бы лучше вместо этого развить новый процесс?Есть ли более эффективный способ, чем потоки или процессы?
Спасибо !!!