HornetQ - 4.Persistência

20
Treinamento HornetQ

Transcript of HornetQ - 4.Persistência

Page 1: HornetQ - 4.Persistência

Treinamento HornetQ

Page 2: HornetQ - 4.Persistência

Agenda

• Persistência– Mecanismo de Persistência– Implementações de Journals– Asynchronous I/O– Tipos de Journal– Instalado LibAIO

Page 3: HornetQ - 4.Persistência

Persistência

• Mecanismo de Persistência– Não utiliza banco de dados.– Possui mecanismo de persistência próprio baseado em

arquivo.– Utiliza técnica de Journal para persistência.

Page 4: HornetQ - 4.Persistência

Persistência

• Mecanismo de Persitência– Conceito de Journal • É o processo de armazenar eventos em um log antes

que cada um possa ser aplicado no sistema. Esses logs são chamados de journals.• São utilizados por exemplo em SGBDs e Sistemas de

Arquivo.

Page 5: HornetQ - 4.Persistência

Persistência

• Mecanismo de Persitência– HornetQ Journal• Conjunto de arquivos pré-criados e de tamanho pré-

definido, onde o HornetQ realiza appends.• Quando o journal atinge seu limite o HornetQ Journal

move para o próximo.• Operações suportadas:

– Inclusão de mensagens– Remoção de mensagens– Alteração de mensagens

Page 6: HornetQ - 4.Persistência

Persistência

• Mecanismo de Persitência– HornetQ Journal

Journal de 10Mb

Mensagem 1

Mensagem 2

Mensagem 3

Mensagem 4

Mensagem 5

Page 7: HornetQ - 4.Persistência

Persistência

• Mecanismo de Persitência– HornetQ Journal• Possue poderoso recurso para tratamento dos Journals.

– Remoção de espaços não utilizados– Compactação de dados

• Suporta operações transacionais– Local Transactions– XA Transactions

Page 8: HornetQ - 4.Persistência

Persistência

• Implementações de Journals– Suporta nativamente dois tipos de implementações, são

elas:• Java NIO

– Faz a interface com o sistema de arquivo– Extremamente rápida– Roda em qualquer plataforma– Precisa do Java 6 ou superior

• Linux Asynchronous IO– Específica para ambientes Linux– Interage diretamente com o Kernel– Precisa do Kernel 2.6 ou superior

Page 9: HornetQ - 4.Persistência

Persistência

• Asynchronous I/O– Seu objetivo é um permitir que um processo execute várias

operações de escrita/leitura sem ter que bloquear ou aguarda que um outro seja concluído.

– Possue patches para versão 2.4 do kernel.– Funciona apenas nos seguintes sistemas de arquivo:

• ext2• ext3• ext4• jfx• xfs

Page 10: HornetQ - 4.Persistência

Persistência

• Asynchronous I/O (non-blocking)1 - O pedido de leitura retorna imediatamente, indicando que a leitura foi iniciada com êxito.2 - O aplicativo executa outro processamento.3 – Quando a resposta de leitura chegar um sinal é enviado.

Page 11: HornetQ - 4.Persistência

Persistência

• Tipos de Journals– Existem três tipos, são eles:

• Bindings Journal• JMS Journal• Message Journal

Page 12: HornetQ - 4.Persistência

Persistência

• Tipos de Journals– Bindings Journal

• Incluem configurações de filas que são publicadas no servidor juntamente com seus atributos.

• Sempre utiliza o Java NIO por ter um throughput muito baixo.• São pré-fixados com hornetq-bindings• Possuem extensão bindings• Possuem tamanho de 1Mb• Está localizado na pasta $HORNETQ_HOME/data/bindings

Page 13: HornetQ - 4.Persistência

Persistência

• Tipos de Journals– JMS Journal

• Armazenam dados relacionados à JMS: – Queues– Topics– Connection Factories– Informações de binding JNDI

• Todo recursos criados vias API de gerenciamento (JMX) serão persistido nesse journal.

• São pré-fixados com hornetq-jms• Possuem extensão jms• Possuem tamanho de 1Mb• Está localizado na pasta $HORNETQ_HOME/data/bindings

Page 14: HornetQ - 4.Persistência

Persistência

• Tipos de Journals– Message Journal

• Armazena efetivamente todos os dados relacionados a mensagem• Se o ambiente for Linux e o AIO estiver instalado ele tenta

utilizá-lo, do contrário utiliza Java NIO.• São pré-fixados com hornetq-data• Possuem extensão hq• Possuem tamanho de 10Mb• Está localizado na pasta $HORNETQ_HOME/data/journal

Page 15: HornetQ - 4.Persistência

Persistência

• Tipos de Journals– Configurando o Bindings e JMS Journals

• As configurações ficam no arquivo hornetq-configuration.xml

Diretório dos Binding e JMS Journals

Page 16: HornetQ - 4.Persistência

Persistência

• Tipos de Journals– Configurando o Message Journal

• As configurações ficam no arquivo hornetq-configuration.xml

Quantidade inicial de Journals

Diretório dos Message Journal

Page 17: HornetQ - 4.Persistência

Persistência

• Tipos de Journals– Outros parâmetros de configuração importante

• journal-type– Permite configurar a implementação do journal. Opções: NIO e

ASYNCIO

• journal-max-io– Total de requisições de escrita que serão enfileiradas antes de serem

submetidas ao SO.– Usando NIO, deve ser sempre 1– Usando AIO, por default é 500– O limite máximo do SO é 65536 (/proc/sys/fs/aio-max-nr)

Page 18: HornetQ - 4.Persistência

Persistência

• Tipos de Journals– Outros parâmetros de configuração importante

• Inserindo novos parametros

Page 19: HornetQ - 4.Persistência

Persistência

• Instalando LibAIO– Pré-Requisitos

• Kernel 2.6 ou superior• Java 6 ou superior• gcc - C Compiler• gcc-c++• autoconf• make• Autoconf• libtool

• libaio• libaio-dev

Page 20: HornetQ - 4.Persistência

Persistência

• Instalando LibAIO

# export JAVA_HOME=<jdk_path> //Configura a variável de ambiente do JDK

# sudo yum install libaio libaio-devel //Instala biblioteca e pacote de desenvolvimento do LibAIO

# sudo yum groupinstall ‘Development Tools’ //Instala as ferramentas necessárias para compilação

# find / -name java //Localiza o diretório de instalação do JDK

# uname –r //Verifica a versão do kernel

# ./HORNETQ_HOME/native-src/bootstrap //Inicia o processo de compilação

# ls /HORNETQ_HOME/native-src/src/.libs //Se existir o arquivo libHornetQAIO.so funcionou

# mv /HORNETQ_HOME/native-src/src/.libs / libHornetQAIO.so /HORNETQ_HOME/bin/ libHornetQAIO.so //Deve-se colocar a lib (link simbólico) no classpath