20 de mai de 2009

Oracle Weblogic Server - Singleton Services

Este post foi baseado na documentação oficial do Oracle Weblogic Server 10.3 em inglês.

O cluster de servidores de aplicação nos dá um certo conforto em relação à disponibilidade de nossas aplicações corporativas hoje em dia. O ambiente de tolerância a falhas e redundância proporcionado pelos clusters possibilita, dentre outras coisas: manutenção de ambiente de produção em tempo real, agregar poder de processamento a uma aplicação crítica, certa estabilidade em caso de falhas de aplicação, dentre várias outras funcionalidades extremamente importantes nos ambientes corporativos e competitivos da internet de hoje em dia.

Uma das exceções neste ambiente é quando a arquitetura de uma aplicação foi construída utilizando como base um Singleton que neste caso não pode ser distribuído para todo o cluster pois traria inconsistência no funcionamento da aplicação.

No weblogic server utilizando o serviço de migração automática de um cluster conseguimos ter uma boa opção para este tipo de serviço implementando o que é chamado de Serviço de Singleton(Singleton Services). Esta implementação nos garante a migração automática do serviço disponibilizado para um outro nó(servidor) do cluster em caso de falhas no servidor onde o Sigleton está sendo executado.

Como funciona?
No weblogic existe um componente chamado "Singleton Master" que é um componente que monitora os serviços que podem ser migrados automaticamente em caso de falha do nó do cluster onde um Singleton esteja atendendo requisições dos clientes e então ele controla o serviço de singloton para inicializar em um outro nó disponível do cluster. Por padrão o Singleton Master considera todos os servidores disponíveis em um cluster como candidatos para migração de um Singleton Service que venha a falhar, entretando uma lista pode ser especificada se for o caso. Se o Singleton Master tentar ativar o serviço que falhou em todos os nós da lista ou do cluster e falhar, o serviço ficará desativado.

Como é a implementação de um Singleton Service no Weblogic?
Para implementar a classe do Singleton deve implementar uma interface do Weblogic chamada weblogic.cluster.singleton.SingletonService e prover a implementação de 2 métodos para alocar e desalocar os recursos necessários ao Singleton respectivamente: activate() e deactivate() .
Feito isso basta escolher uma forma de registrar seu Singleton service com o Singleton Master do cluster que pode ser feito via Admin Console ou configurando no weblogic-application.xml o Singleton service(tem que ser um componente .ear).


...
   
      bb.com.br.seupacote.ImplementacaoSingletonService
      MeuSingletonService
   
...



Para configurar via Admin console, selecione o cluster e depois clique em Singleton Services, lá pode-se registrar a classe do Singleton Services diretamente. Para que isso funcione esta classe deverá ter sido disponibilizada no classpath dos servidores candidatos a rodarem o serviço.

Bem, é isso, o gerenciamento da disponibilização do serviço é feita então automaticamente pelo cluster do Oracle Weblogic Server que estiver sendo utilizado.

[]s

Nenhum comentário: