我正在为以下场景设计服务器:
一系列单个图像存储在NAS上,比如说100个
客户端通过TCP套接字连接到服务器并请求image39
服务器从NAS读取image39并通过套接字发送回客户端
客户端很可能还将请求序列中的其他图像,因此:
我想启动一个线程,该线程遍历图像,读取它们,并执行cat image39 > /dev/null
以强制缓存到服务器上的内存中
线程将按如下方式获取图像:image38、image40、image37、image41等。
已获取的图像将被忽略
如果客户机现在请求image77,我想将fetch线程重置为fetch:image76、image78等。
这必须扩展到许多系列和客户。可能是1000个并发的
预取。我知道如果线程太多,可能会导致性能下降。不如换个新流程?有没有比线程或进程更有效的方法?
谢谢!!!
最佳答案
这是过早的优化。尝试在不使用“强制”缓存的技巧的情况下实现系统,并查看其工作原理。我敢打赌一切都会好起来的——如果你发现你的伎俩对系统上的其他东西不起作用,你就不必担心那些令人讨厌的惊喜了。