Desde a chegada do Magic xpi versão 4, agora integrado ao GigaSpace (XAP 9.1.2) – uma plataforma ‘cloud ready’ para aplicações (In-Memory DataGrid, Big Data, Clusters, etc…) – algumas mudanças relativas a instalação e configuração passaram a exigir nossa atenção.
( veja o post sobre o Magic xpi 4 )
Uma das novidades é o arquivo Start.xml (para start/stop manual) e o arquivo projectsStartup.xml (para start automático).
Este arquivo é um Xml de configuração para o GigaSpace, informando detalhes do(s) projeto(s) que deve(m) ser iniciado(s).
E existe um item novo na arquitetura: o Worker.
O Worker é uma unidade de processamento do GigaSpace. Ele é responsável por iniciar e controlar a execução de fluxos do projetos Magic xpi. Embora todos os fluxos sejam executados dentro do processo do Magic xpi Server (ex: MgxpiServer.EXE), a demanda inicia sempre através de um Worker do GigaSpace.
E a relação do número de Workers configurados pelo projeto com o número de filas (threads) da licença é simples: cada Worker ativo (executando um fluxo), consome uma fila da licença até que a respectiva instância do fluxo finalize. Logo, a qtde. máxima de Workers simultaneamente ativos será igual ao total de filas da licença ( 1, 4, 8, 20, etc… ).
Em um cenário padrão, iremos configurar o total de Workers do projeto igual ao total de filas da licença em uso.
Mas isso não é uma regra obrigatória. Nós podemos configurar mais Workers do que filas disponíveis, sem problemas.
Por exemplo: Podemos ter uma licença de 4 filas, e configurarmos 10 Workers para o projeto (este é valor padrão, por sinal). Não haverá neste caso, mais do que 4 Workers trabalhando ao mesmo tempo (por causa da limitação da licença). Mas o GigaSpace fará o balanceamento de carga entre todos os Workers, à medida que novas requisições de execução de fluxo vão sendo identificadas.
Imaginando que este projeto exemplo estaria recebendo requisições externas (HTTP ou SOAP), embora só 4 requisições viessem a ser atendidas ao mesmo tempo, o GigaSpace irá distribuí-las entre o Worker #1, o #6, o #9, o #2, etc… cfe. o seu algoritmo de balanceamento de carga.
Isso se torna interessante qdo. começamos a pensar nas novas capacidades de execução de projetos com o Magic xpi versão 4, como múltiplas instâncias de servers para o mesmo projeto ( veja aqui e aqui ).
Em contrapartida, se configurarmos menos Workers do que filas disponíveis na licença, estaremos desperdiçando as filas existentes ( especialmente em cenários de um único projeto em execução ).
A regra genérica: Workers = Filas, é eficiente em grande parte dos cenários.
Mas é importante conhecer as novas opções, e saber como podemos moldar a configuração dos projetos Magic xpi para atender as mais variadas necessidades.