lucene nas alturas: 400 buscas por segundo

29
Lucene nas alturas: 400 buscas por segundo ROd Léo Nickel 1 Saturday, May 14, 2011

Upload: rodrigo-zaccara

Post on 08-Jul-2015

961 views

Category:

Technology


0 download

DESCRIPTION

Palestra realizada no Just Java 2011 por ROd e Léo Nickel.

TRANSCRIPT

Page 1: Lucene nas alturas: 400 buscas por segundo

Lucene nas alturas: 400 buscas por segundo

ROdLéo Nickel

1Saturday, May 14, 2011

Page 2: Lucene nas alturas: 400 buscas por segundo

13/05/11 2

ROd

Desenvolvedor

especialista em

arquiteturas de alta

performance

relacionadas a

publicação e busca

de conteúdo

2Saturday, May 14, 2011

Page 3: Lucene nas alturas: 400 buscas por segundo

13/05/11 3

Léo Nickel

Desenvolvedor de

sistemas com

experiência de 5

anos em aplicações

Java EE nos

segmentos de

telefonia, marketing

online e busca

orgânica

3Saturday, May 14, 2011

Page 4: Lucene nas alturas: 400 buscas por segundo

13/05/11 4

MOTIVAÇÃO

• Substituição do motor de busca FAST SEARCH

• Alternativas

– Compass

– ElasticSearch

– Lucene

– Solr

– Sphinx

4Saturday, May 14, 2011

Page 5: Lucene nas alturas: 400 buscas por segundo

13/05/11 5

LUCENE

Mar/2000: Versão 0.01 (SourceForge) Thu Mar 30 20:02:47 2000 UTC by cutting

Out/2000: Versão 1.0Jun/2002: Versão 1.2 (Apache Jakarta)Dez/2004: Lucene in Action (1.4.3) Fev/2005: Apache top-level projectMai/2006: Versão 2.0Set/2009: Versão 2.9Nov/2009: Versão 3.0Mar/2011: Versão 3.1

5Saturday, May 14, 2011

Page 6: Lucene nas alturas: 400 buscas por segundo

13/05/11 6

REQUISITOS NÃO FUNCIONAIS

• Baixa latência de indexação

• Alta disponibildade de busca

• Proteção do storage

• Capacidade adaptativa dos repositórios

• Estado imutável

6Saturday, May 14, 2011

Page 7: Lucene nas alturas: 400 buscas por segundo

13/05/11 7

REQUISITOS FUNCIONAIS

• Paginação

• Ordenações

• Sharding

• Otimização de índices

• Suporte a diversos charsets

7Saturday, May 14, 2011

Page 8: Lucene nas alturas: 400 buscas por segundo

13/05/11 8

COMPONENTES

• Indexer

– Interface REST para manipulação de documentos

– API sync e async

• Searcher

– Query string para definir a busca

– Cache

8Saturday, May 14, 2011

Page 9: Lucene nas alturas: 400 buscas por segundo

13/05/11 9

COMPONENTES

• Repositório

– Colunas

– Tipo de dados

• Texto

• Número

• Data

• Moeda

• Url

– Comportamento

• Indexable

• Analyzed

• Sortable

• Boost

9Saturday, May 14, 2011

Page 10: Lucene nas alturas: 400 buscas por segundo

13/05/11 10

AMBIENTE

• Ambiente FAST SEARCH– Cluster de 4 máquinas

– 100 QPS

• Ambiente Lucene– Cluster de 2 máquinas

– ?? QPS

10Saturday, May 14, 2011

Page 11: Lucene nas alturas: 400 buscas por segundo

13/05/11 11

MÉTRICAS

• scripts bash

for x in $(seq 1 100) do curl "http://localhost:8080/searcher/?...$x...”; done• iostat

• nfsstat

• top

• JMeter

11Saturday, May 14, 2011

Page 12: Lucene nas alturas: 400 buscas por segundo

13/05/11 12

TIMELINE

SERVIDOR LINUX 1NFS PARAMS

24 QPS

12Saturday, May 14, 2011

Page 13: Lucene nas alturas: 400 buscas por segundo

13/05/11 13

TIMELINE

EMAIL ROd → Ops“Finally, realize that performance over NFS is not great,

because the bytes must cross the wires to get

to the computer doing the searching. It’s possible

mounting the NFS directory as read-only may

improve the performance, but likely you’ll still be far

from the performance of a local native directory.”

Fonte: Lucene In Action

13Saturday, May 14, 2011

Page 14: Lucene nas alturas: 400 buscas por segundo

13/05/11 14

TIMELINE

DESKTOP LINUXDISCO LOCAL

200 QPS

14Saturday, May 14, 2011

Page 15: Lucene nas alturas: 400 buscas por segundo

13/05/11 15

TIMELINE

OTIMIZAÇÃOCOMPOUND FILE

READ ONLY

FIELD SELECTOR

ESTRATÉGIA DE REOPEN

15Saturday, May 14, 2011

Page 16: Lucene nas alturas: 400 buscas por segundo

13/05/11 16

TIMELINE

SERVIDOR LINUX 1NFS PARAMS

30 QPS

16Saturday, May 14, 2011

Page 17: Lucene nas alturas: 400 buscas por segundo

13/05/11 17

TIMELINE

SERVIDOR LINUX 2RAM Directory

550 QPS

17Saturday, May 14, 2011

Page 18: Lucene nas alturas: 400 buscas por segundo

13/05/11 18

TIMELINE

SERVIDOR LINUX 2DISCO LOCAL

500 QPS

18Saturday, May 14, 2011

Page 19: Lucene nas alturas: 400 buscas por segundo

13/05/11 19

TIMELINE

SERVIDOR LINUX 2NFS DEFAULT

420 QPS

19Saturday, May 14, 2011

Page 20: Lucene nas alturas: 400 buscas por segundo

13/05/11 20

TIMELINE

SERVIDOR LINUX 1NFS DEFAULT + RO

450 QPS

20Saturday, May 14, 2011

Page 21: Lucene nas alturas: 400 buscas por segundo

13/05/11 21

TIMELINE

PROBLEMAVÁRIOS SEARCHERS NO MESMO

NFS DEGRADARIA SEU USO?

21Saturday, May 14, 2011

Page 22: Lucene nas alturas: 400 buscas por segundo

13/05/11 22

TIMELINE

SERVIDOR LINUX 1 e 2CARGA: SERVIDOR LINUX 3 e 4

450 QPS

22Saturday, May 14, 2011

Page 23: Lucene nas alturas: 400 buscas por segundo

13/05/11 23

TIMELINE

SERVIDOR LINUX 1MOD_MEMCACHE LRU

3000 QPS

23Saturday, May 14, 2011

Page 24: Lucene nas alturas: 400 buscas por segundo

13/05/11 24

ENTRADA EM PRODUÇÃO...

SERVIDOR LINUX 1 e 2NFS DEFAULT + RO

27 QPS

24Saturday, May 14, 2011

Page 25: Lucene nas alturas: 400 buscas por segundo

13/05/11 25

E CRESCENDO...

SERVIDOR LINUX 1 e 2NFS DEFAULT + RO

213 QPS

25Saturday, May 14, 2011

Page 26: Lucene nas alturas: 400 buscas por segundo

13/05/11 26

RECORDE!

SERVIDOR LINUX 1 e 2NFS DEFAULT + RO

462 QPS

26Saturday, May 14, 2011

Page 27: Lucene nas alturas: 400 buscas por segundo

13/05/11 27

APÓS UM ANO...

• Transição de conteúdo da busca antiga

• Novas abordagens de busca

• Reutilização em produtos internos

• Plataforma em constante evolução

27Saturday, May 14, 2011

Page 28: Lucene nas alturas: 400 buscas por segundo

13/05/11 28

PERGUNTAS

28Saturday, May 14, 2011

Page 29: Lucene nas alturas: 400 buscas por segundo

Obrigado =)

ROd ([email protected]) Léo Nickel ([email protected])

29Saturday, May 14, 2011