Projetando para escalabilidade
Escalabilidade é a capacidade de um aplicativo de atender a uma carga adicional com um aumento linear no uso de recursos. A escalabilidade é importante em qualquer aplicativo distribuído. Os limites de escalabilidade geralmente se concentram no uso de recursos e dependências criadas inadvertidamente no design do aplicativo.
A lista a seguir descreve problemas de escalabilidade e sugere soluções:
Recursos intra-computador. O número de threads e memória disponível pode limitar a escalabilidade. Use um modelo de threading que seja mais eficiente para seu aplicativo.
Recursos interinformáticas. O número de computadores disponíveis para distribuir a carga de trabalho do aplicativo pode afetar a escalabilidade.
Afinidade com o cliente. Duas situações de afinidade podem ser criadas inadvertidamente por um aplicativo: uma situação em que o aplicativo depende do estado dos dados que o cliente envia com sua solicitação; e uma situação em que o aplicativo requer um estado específico do cliente. Evite projetar dependência de estado entre o cliente e o aplicativo.
Afinidade de servidor. Um aplicativo COM+ pode limitar sua escalabilidade criando uma afinidade de servidor, onde o aplicativo depende de ir a um computador servidor específico para obter informações. Essa afinidade pode ocorrer com muitos aplicativos orientados a banco de dados. A melhor maneira de evitar um afunilamento de afinidade de servidor é particionar dados em vários computadores servidores. Por exemplo, divida os dados do cliente entre os servidores pela chave acessada com mais frequência ou espalhe um banco de dados do cliente por vários servidores usando o sobrenome do cliente (por exemplo, Servidor1: a-f, Servidor2: g-m, Servidor3: n-z).
Observação
O particionamento de dados pode adicionar uma grande complexidade à lógica de programação e deve ser feito somente depois que outras opções para aumentar a escalabilidade tiverem sido tentadas.
Vida útil do objeto. Para ser escalável, um aplicativo COM+ deve prestar muita atenção à vida útil dos objetos. Enquanto um objeto existe, ele está consumindo recursos. É importante certificar-se de que a vida útil dos objetos que retêm recursos caros seja cuidadosamente gerenciada. Para objetos de alta demanda que não consomem recursos caros, o pool de objetos COM+ pode aumentar a escalabilidade porque você pode ajustar administrativamente os valores de pool para aproveitar qualquer hardware que possa ter. E é uma maneira natural de controlar conexões: por exemplo, se você tiver uma licença para 20 conexões SQL, poderá ditar isso com a configuração Max Pool.
Agrupamento de componentes de aplicativos. Para melhorar a escalabilidade de um aplicativo COM+, os componentes da camada intermediária devem ser divididos em serviços dependentes do tempo e independentes do tempo. Isso permite que você se concentre em possivelmente usar um serviço do Microsoft Windows para implementar uma ação de componente necessária. Por exemplo, você pode optar por usar um serviço como Enfileiramento de Mensagens ou componentes em fila COM+ para lidar com tarefas assíncronas independentes de tempo.
Tópicos relacionados