Este documento apresenta uma palestra sobre alta performance com Lucene. Ele discute a implementação de um motor de busca usando Lucene para substituir o FAST Search, com foco em baixa latência de indexação e alta disponibilidade de busca. Ele descreve a otimização do índice Lucene ao longo do tempo através de várias implementações, resultando em um aumento significativo na taxa de consultas por segundo de 27 para 962 QPS em produção.
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Alta perfomance com Lucene
1. Alta performance
com Lucene
ROd
Léo Nickel
Saturday, October 22, 2011
2. ROd
Desenvolvedor
especialista em
arquiteturas de alta
performance
relacionadas a
publicação e busca
de conteúdo
@rzdrigo
22/10/2011 2
Saturday, October 22, 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
22/10/2011 3
Saturday, October 22, 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)
22/10/2011 4
Saturday, October 22, 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
22/10/2011 5
Saturday, October 22, 2011
6. IMPLEMENTAÇÃO
22/10/2011 6
Saturday, October 22, 2011
7. TIMELINE
SERVIDOR LINUX 1
NFS PARAMS
24 QPS
22/10/2011 7
Saturday, October 22, 2011
8. TIMELINE
OTIMIZAÇÃO
COMPOUND FILE
READ ONLY
FIELD SELECTOR
ESTRATÉGIA DE REOPEN
22/10/2011 8
Saturday, October 22, 2011
9. TIMELINE
SERVIDOR LINUX 1
NFS PARAMS
30 QPS
22/10/2011 9
Saturday, October 22, 2011
10. TIMELINE
DESKTOP LINUX
DISCO LOCAL
200 QPS
22/10/2011 10
Saturday, October 22, 2011
11. TIMELINE
SERVIDOR LINUX 2
DISCO LOCAL
500 QPS
22/10/2011 11
Saturday, October 22, 2011
12. TIMELINE
SERVIDOR LINUX 2
NFS DEFAULT + RO
450 QPS
22/10/2011 12
Saturday, October 22, 2011
13. TIMELINE
QUESTÃO:
VÁRIOS SEARCHERS NO MESMO
NFS DEGRADA A PERFORMANCE?
22/10/2011 13
Saturday, October 22, 2011
14. TIMELINE
SERVIDOR LINUX 1 e 2
CARGA: SERVIDOR LINUX 3 e 4
900 QPS
22/10/2011 14
Saturday, October 22, 2011
15. EM PRODUÇÃO...
SERVIDOR LINUX 1 e 2
NFS DEFAULT + RO
27 → 413 → 962 QPS
22/10/2011 15
Saturday, October 22, 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
22/10/2011 16
Saturday, October 22, 2011
17. Obrigado =)
http://www.slideshare.net/rzdrigo/alta-
performance-com-lucene
ROd (rzaccara@uolinc.com)
Léo Nickel (lnickel@uolinc.com)
@rzdrigo
@leonardonickel
Saturday, October 22, 2011