HornetQ - 4.Persistência
-
Upload
waelson-negreiros-nunes -
Category
Documents
-
view
614 -
download
0
Transcript of HornetQ - 4.Persistência
Treinamento HornetQ
Agenda
• Persistência– Mecanismo de Persistência– Implementações de Journals– Asynchronous I/O– Tipos de Journal– Instalado LibAIO
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.
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.
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
Persistência
• Mecanismo de Persitência– HornetQ Journal
Journal de 10Mb
Mensagem 1
Mensagem 2
Mensagem 3
Mensagem 4
Mensagem 5
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
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
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
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.
Persistência
• Tipos de Journals– Existem três tipos, são eles:
• Bindings Journal• JMS Journal• Message Journal
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
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
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
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
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
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)
Persistência
• Tipos de Journals– Outros parâmetros de configuração importante
• Inserindo novos parametros
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
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