Técnicas para Gerenciamento de Estado
As técnicas de escala de várias máquinas contam com a utilização de várias cópias de um servidor de aplicativos; vários pedidos consecutivos de vários clientes podem ser atendidos por servidores diferentes. Se cada pedido de cliente for completamente independente de todos os outros pedidos de clientes, não importa se os pedidos consecutivos são processados no mesmo servidor. No entanto, na prática, os pedidos de clientes não são independentes. Um cliente geralmente faz um pedido, aguarda o resultado, em seguida, faz um ou mais pedidos subsequentes que dependem dos resultados recebidos dos pedidos anteriores.
Esta sequência de operações em nome de um cliente é classificada em duas categorias:
- Sem Estado
- Um servidor processa pedidos com base exclusivamente nas informações fornecidas em cada pedido e não depende de informações de pedidos anteriores. O servidor não precisa manter informações de estado entre pedidos.
- Com Preservação de Estado
- Um servidor processa pedidos com base nas informações fornecidas com cada pedido e nas informações armazenadas de pedidos anteriores. O servidor precisa acessar e manter as informações de estado geradas durante o processamento de um pedido anterior.
Para interações sem estado, não importa se pedidos diferentes são processados por servidores diferentes. No entanto, para interações com estado, o servidor que processa um pedido precisa de acesso às informações de estado necessárias para atender esse pedido. O mesmo servidor pode processar todos os pedidos associados às mesmas informações de estado ou as informações de estado podem ser compartilhadas por todos os servidores que precisam delas. No último caso, o acesso às informações de estado compartilhadas a partir do mesmo servidor minimiza a sobrecarga de processamento associada ao acesso às informações de estado compartilhadas a partir de vários servidores.
Os recursos de distribuição de carga no produto utilizam diversas técnicas diferentes para manter as informações de estado entre os pedidos do cliente:
- Afinidade de sessão, onde o recurso de distribuição de carga reconhece a existência de uma sessão de cliente e tenta direcionar todos os pedidos dentro dessa sessão para o mesmo servidor.
- Afinidade de transação, onde o recurso de distribuição de carga reconhece a existência de uma transação e tenta direcionar todos os pedidos dentro do escopo dessa transação para o mesmo servidor.
- Autorização de servidor, onde o recurso de distribuição de carga reconhece que, embora vários servidores possam ser aceitáveis para determinado pedido do cliente, um servidor específico é mais adequado para processar esse pedido.
O gerenciador de sessão, que é parte de cada servidor de aplicativos, armazena informações de sessão do cliente e leva em conta a afinidade de sessão e a afinidade de servidor ao direcionar pedidos do cliente aos membros do cluster de um servidor de aplicativos. O serviço de gerenciamento de carga de trabalho considera a afinidade de servidor e a afinidade de transação ao direcionar pedidos de clientes entre os membros do cluster de um servidor de aplicativos.