Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como um servidor lida com solicitações de serviços da Web de vários clientes


É para o conceito geral, não para um Android específico

Normalmente, cada um dos usuários envia uma solicitação HTTP para a página. O servidor recebe as solicitações e as delega a diferentes trabalhadores (processos ou threads).

Dependendo da URL fornecida, o servidor lê um arquivo e o envia de volta ao usuário. Se o arquivo for um arquivo dinâmico, como um arquivo PHP, o arquivo será executado antes de ser enviado de volta ao usuário.

Depois que o arquivo solicitado é enviado de volta, o servidor geralmente fecha a conexão após alguns segundos.

Veja Como funcionam os servidores da Web

EDITAR:

Para HTTP usa TCP que é um protocolo baseado em conexão. Ou seja, os clientes estabelecem uma conexão TCP enquanto estão se comunicando com o servidor.

Vários clientes podem se conectar à mesma porta de destino na mesma máquina de destino ao mesmo tempo. O servidor apenas abre várias conexões simultâneas.

O Apache (e a maioria dos outros servidores HTTP) tem um módulo de multiprocessamento (MPM). Isso é responsável por alocar threads/processos do Apache para lidar com conexões. Esses processos ou threads podem ser executados em paralelo em sua própria conexão, sem bloquear uns aos outros. O MPM do Apache também tende a manter threads ou processos "sobressalentes" abertos mesmo quando nenhuma conexão está aberta, o que ajuda a acelerar as solicitações subsequentes.

Observação:

Um dos problemas mais comuns com multithreading são as "condições de corrida"-- onde vocês dois pedidos estão fazendo a mesma coisa ("correndo" para fazer a mesma coisa), se for um único recurso, um deles vai ganhar. Se ambos inserirem um registro no banco de dados, não poderão obter o mesmo id -- um deles vencerá. Portanto, você precisa ter cuidado ao escrever código para perceber que outras solicitações estão ocorrendo ao mesmo tempo e podem modificar seu banco de dados, gravar arquivos ou alterar globais.