Varnish:为多个并发用户提供一个带有 1 个后端的大文件 request/connection
Varnish: serve multiple simultaneous users a single large file with one 1 backend request/connection
我不确定 Varnish 是否可以做到这一点,但我有一个生成大型 (1-2GB) 文件的后端服务器,但连接速度相对较慢。
是否可以配置 Varnish(运行 在具有快速连接的远程机器上)同时为多个用户提供服务,但只打开一个到后端的连接?
例如,用户1开始从后台通过Varnish下载文件,中途用户2也开始下载。 Varnish 可以不打开一个新连接,而是提供它已经缓存的所有内容(比如 100MB),然后一旦用户 2“赶上”,它就会继续以后端连接的速度下载(因为 Varnish 正在为相同的内容提供服务)两个用户)。在初始阶段之后,该文件将完全缓存在 Varnish 上并快速提供。
这是否可以配置 Varnish 来执行(或者是否有更好的 proxy/cache 软件用于此用例)。
您所描述的称为请求合并,这是一个标准的 Varnish 功能。
只要对象存储在缓存中,部分存储在缓存中的流式内容将由使用该资源的所有客户端使用。
我不认为打开第二个连接真的是个问题,但我猜你的思维过程是为了避免部分缓存数据的缓存未命中。不过不用担心,Varnish 已经满足您的需求。
我不确定 Varnish 是否可以做到这一点,但我有一个生成大型 (1-2GB) 文件的后端服务器,但连接速度相对较慢。
是否可以配置 Varnish(运行 在具有快速连接的远程机器上)同时为多个用户提供服务,但只打开一个到后端的连接?
例如,用户1开始从后台通过Varnish下载文件,中途用户2也开始下载。 Varnish 可以不打开一个新连接,而是提供它已经缓存的所有内容(比如 100MB),然后一旦用户 2“赶上”,它就会继续以后端连接的速度下载(因为 Varnish 正在为相同的内容提供服务)两个用户)。在初始阶段之后,该文件将完全缓存在 Varnish 上并快速提供。
这是否可以配置 Varnish 来执行(或者是否有更好的 proxy/cache 软件用于此用例)。
您所描述的称为请求合并,这是一个标准的 Varnish 功能。
只要对象存储在缓存中,部分存储在缓存中的流式内容将由使用该资源的所有客户端使用。
我不认为打开第二个连接真的是个问题,但我猜你的思维过程是为了避免部分缓存数据的缓存未命中。不过不用担心,Varnish 已经满足您的需求。