我正在寻找一个能够高效处理 HTTP 直播流用例的 HTTP 反向代理。假设文件/片段大小最大为 4MB,且客户端对同一文件的请求负载恒定,且间隔非常近(请求在后端满足第一个请求时到达)。
这里不会使用CDN服务。
以下每个 Nginx 和 Varnish 事件中会发生什么情况(请插入您认为更合适的另一个解决方案)?
- Client1 向反向代理(proxy_cache 或 Varnish)发出请求,文件未被缓存(MISS)。
- 代理向后端发出请求,尝试填充本地缓存并向客户端 1 发送响应
- 在处理 Client1 的请求时(代理完成之前),其他客户端也会对同一文件发出并发请求。
目标是:
- 代理从后端检索文件时将阻止其他请求。
- 当数据到达时(即数据到达时,而不是整个文件缓冲后),代理将同时为所有等待的客户端提供服务。
- 在任何给定时间,针对特定文件,只会向后端发出一个请求。所有客户端都应由来自后端的共享响应提供服务。当然,例外情况是客户端针对不同范围发出 HTTP 范围请求。
当像这样请求较大的文件时,哪种解决方案最好?如果有任何关键配置设置可以实现所需的结果,请分享。
谢谢你!