Workers & Threads no Magic xpi 4 (agora com GigaSpace)

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.

Imagem_001

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.

Manoel Frederico - Gerente de Produto e Magic Evangelista
Manoel Frederico – Gerente de Produto e Magic Evangelista

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *