Estou procurando um proxy reverso HTTP que manipulará os casos de uso de transmissão ao vivo HTTP de maneira eficiente. Suponha que os tamanhos de arquivo / fragmento sejam de até 4MB com um carregamento constante de solicitações do cliente para o mesmo arquivo, muito próximas (as solicitações que chegam enquanto o back-end satisfaz a primeira solicitação).
Serviços CDN não serão usados aqui.
O que acontece nos eventos abaixo para cada Nginx e Varnish (insira outra solução que você acredita ser mais apropriada também?)
- Client1 faz solicitação para inverter o proxy (proxy_cache ou Varnish), o arquivo não é armazenado em cache (MISS).
- O proxy faz solicitações para o back-end e tenta preencher o cache local e entregar resposta ao cliente1
- Enquanto a solicitação para Client1 está sendo atendida (antes da conclusão do proxy), outras solicitações simultâneas para o mesmo arquivo são feitas por outros clientes.
O objetivo é:
- O proxy bloqueia solicitações adicionais enquanto recupera o arquivo do back-end.
- O proxy servirá todos os clientes em espera ao mesmo tempo em que os dados chegam (conforme chegam, não depois que o arquivo inteiro é armazenado em buffer).
- Apenas uma solicitação para o back-end será feita a qualquer momento, para um arquivo específico. Todos os clientes devem ser atendidos pela resposta compartilhada do back-end. A exceção é se o cliente fizer uma solicitação de intervalo HTTP para um intervalo diferente de curso.
Qual solução é melhor quando arquivos maiores são solicitados assim? Se houver configurações importantes para alcançar o resultado desejado, compartilhe.
Obrigado!