【发布时间】:2013-11-28 06:20:55
【问题描述】:
我想起了一个非常快速的 Linux 内核模块,称为“TUX”,用于静态文件,以回答 IIS 优于 Linux 静态文件 Web 服务的性能并解决“C10K 问题”。现在我不断看到:
- Nginx
- Lighttpd
- CDN
... 用于“快速静态文件服务”。如果您的操作系统具有正确的功能,那么快速提供静态文件并不困难。自从发明了 IO Completion 端口、重叠 I/O 等以来,Windows 就有了。
Tux 是否因为安全隐患而死亡?将 Kqueue/Epoll 与 Sendfile 等功能相结合而过时的实验是否已经过时?提供 100% 静态内容的最佳解决方案是什么——比如用 50 张左右的图片打包来模拟“翻书”电影。
我理解这是“与服务器相关”的问题,但这也是理论上的。如果它是纯静态的,CDN 真的会更好吗?
【问题讨论】:
-
我不是这里的专家,但你的最后一个问题对我来说似乎很奇怪.. CDN 不是简单的多个具有负载平衡的静态文件服务器吗?您只需告诉客户端要连接到哪个服务器(通过最低延迟/最不忙的服务器/最近等),就是这样。单个服务器迟早会无法满足需求,但如果您有几个像 CDN 中的服务器,您只需在它们之间分配负载。
-
我认为这个问题没有问题,尽管我确实将这个问题混为一谈。您不需要用户空间线程来发送文件。内核可以做到。问题是您确实需要一个用于应用程序逻辑的线程,因此许多站点只创建一个名为 images.example.com 的第二个域,并在其前面添加一个 CDN。它缓存它,所以服务器暂时看不到请求。据推测,CDN 必须使用像 Tux 这样的超级优化的东西(我怀疑他们使用 Nginx 以及其他原因,但因为 Nginx 并不早于 CDN 的扩散)来提供静态文件,因为这就是他们所做的一切。
标签: nginx linux-kernel cdn lighttpd epoll