Upload
rodrigo-zaccara
View
1.246
Download
0
Embed Size (px)
DESCRIPTION
Apresentação realizada no no:sql(br)/v2 em 22/10/2011 sobre o caso de sucesso utilizando Apache Lucene na substituição de uma ferramenta proprietária de busca.
Citation preview
Alta performance com Lucene
ROdLéo Nickel
Saturday, October 22, 2011
22/10/2011 2
ROd
Desenvolvedor
especialista em
arquiteturas de alta
performance
relacionadas a
publicação e busca
de conteúdo
@rzdrigo
Saturday, October 22, 2011
22/10/2011 3
Léo Nickel
Desenvolvedor de
sistemas com
experiência de 6
anos em aplicações
Java EE em
telefonia, marketing
online e busca
orgânica
@leonardonickel
Saturday, October 22, 2011
22/10/2011 4
LUCENE
• Apache Top Level Project desde 02/2005
• Orientado a documento
• Schemaless
• Instância única de IndexWriter por índice
• Quebra da API entre:
– 2.4 → 2.9
– 3.1 → 3.2 (incompatibilidade entre índices)
Saturday, October 22, 2011
22/10/2011 5
MOTIVAÇÃO
• Substituição do motor de busca FAST SEARCH
• Requisitos não funcionais
- Baixa latência de indexação
- Alta disponibilidade de busca
- Sharding
Saturday, October 22, 2011
22/10/2011 6
IMPLEMENTAÇÃO
Saturday, October 22, 2011
22/10/2011 7
TIMELINE
SERVIDOR LINUX 1NFS PARAMS
24 QPS
Saturday, October 22, 2011
22/10/2011 8
TIMELINE
OTIMIZAÇÃOCOMPOUND FILE
READ ONLY
FIELD SELECTOR
ESTRATÉGIA DE REOPEN
Saturday, October 22, 2011
22/10/2011 9
TIMELINE
SERVIDOR LINUX 1NFS PARAMS
30 QPS
Saturday, October 22, 2011
22/10/2011 10
TIMELINE
DESKTOP LINUXDISCO LOCAL
200 QPS
Saturday, October 22, 2011
22/10/2011 11
TIMELINE
SERVIDOR LINUX 2DISCO LOCAL
500 QPS
Saturday, October 22, 2011
22/10/2011 12
TIMELINE
SERVIDOR LINUX 2NFS DEFAULT + RO
450 QPS
Saturday, October 22, 2011
22/10/2011 13
TIMELINE
QUESTÃO:
VÁRIOS SEARCHERS NO MESMO
NFS DEGRADA A PERFORMANCE?
Saturday, October 22, 2011
22/10/2011 14
TIMELINE
SERVIDOR LINUX 1 e 2CARGA: SERVIDOR LINUX 3 e 4
900 QPS
Saturday, October 22, 2011
22/10/2011 15
EM PRODUÇÃO...
SERVIDOR LINUX 1 e 2NFS DEFAULT + RO
27 → 413 → 962 QPS
Saturday, October 22, 2011
22/10/2011 16
LIÇÕES APRENDIDAS
• Otimização constante do índice
• Configuração de File Descriptor no SO
• Diferentes politicas de Sharding
• Fieldable != Field
• MultiReader com ExecutorServices
• Evitar o uso de PrefixQuery
- Validar se campo existe
Saturday, October 22, 2011
Obrigado =)http://www.slideshare.net/rzdrigo/alta-
performance-com-lucene
ROd ([email protected])Léo Nickel ([email protected])
@rzdrigo@leonardonickel
Saturday, October 22, 2011