In che modo la ricerca elastica si avvicina al problema dell'appartenenza e del consenso distribuiti?

6

Comprendo già che si suppone che Elastic Search sia distribuito in una topologia distribuita, in quanto è possibile avere più nodi per un cluster di istanze ES.

Mi piace l'API e sembra promettente. Ma mi chiedo come la Ricerca elastica risolva alcuni problemi standard nel calcolo distribuito. Le mie domande "architettoniche" sono motivate dal tentativo di capire se dovrei impegnarmi a utilizzare il prodotto.

Considera un problema di appartenenza: se aggiungo un nodo al cluster, in che modo il cluster di Elastic Search sa che quel nodo vuole unirsi? O cosa succede se un nodo scende (o la rete verso il centro dati in cui si trova) diventa troppo instabile. Sta usando una specie di protocollo di gossip come fa Amazon Dynamo?

Considera il problema del consenso: se POSSO un documento su un nodo nel cluster, come viene propagata la modifica agli altri nodi? Naturalmente, capisco che il documento deve essere indicizzato, quindi non posso aspettarmi che una query di ricerca lo trovi immediatamente. ES utilizza un algoritmo Paxos ? Raft algoritmo?

    
posta Alan 31.07.2014 - 06:23
fonte

2 risposte

1

Non c'è un'incredibile quantità di dettagli nella Elasticsearch: The Definitive Guida , ma è sufficiente dire, rispetto a:

  1. Iscrizione al cluster: il nodo più vecchio diventa il "master" e appare una sorta di protocollo di gossip che viene utilizzato quando i nodi si uniscono e lasciano il cluster.
  2. Un'elezione alla leadership si verifica quando il maestro lascia il gruppo (che ho provato per me stesso). La ricerca elastica non indica in che modo vengono disattivati e vogliono lasciare questo incapsulato ai propri utenti.
risposta data 01.08.2014 - 22:47
fonte
1

Ci sono anche alcune modifiche che puoi applicare sulla configurazione del server, al fine di ridurre i problemi del cervello diviso in grossi cluster (ish), ovvero i cosiddetti parametri discovery.zen.* .

Non ci sono molte informazioni sui meccanismi interni e sugli algoritmi di ES, ma quello che ho trovato durante la mia valutazione è stata la documentazione di riferimento sulla configurazione del server.

In particolare, una cosa carina di ES è che quasi tutta la configurazione del server viene eseguita attraverso un singolo file, elasticsearch.yml , sotto la directory ./config della tua installazione.

Quindi, vorrei iniziare con la configurazione di installazione e continuerei ad aprire l'attuale .yml sulla tua installazione. È commentato molto bene e spiega molte cose (inclusi i parametri "zen" usati per risolvere i problemi del cervello diviso) e i collegamenti incrociati alle pagine web.

    
risposta data 30.03.2015 - 12:36
fonte