Elasticsearch i en molnbaserad app
Dricks
Det här innehållet är ett utdrag från eBook, Architecting Cloud Native .NET Applications for Azure, tillgängligt på .NET Docs eller som en kostnadsfri nedladdningsbar PDF som kan läsas offline.
Elasticsearch är ett distribuerat sök- och analyssystem som möjliggör komplexa sökfunktioner för olika typer av data. Det är öppen källkod och allmänt populärt. Tänk på hur följande företag integrerar Elasticsearch i sitt program:
- Wikipedia för fulltext- och inkrementell sökning (sök när du skriver).
- GitHub för att indexera och exponera över 8 miljoner kodlagringsplatser.
- Docker för att göra containerbiblioteket identifierbart.
Elasticsearch bygger på Apache Lucene-sökmotorn i fulltext. Lucene tillhandahåller högpresterande dokumentindexering och frågor. Den indexerar data med ett inverterat indexeringsschema – i stället för att mappa sidor till nyckelord mappar det nyckelord till sidor precis som en ordlista i slutet av en bok. Lucene har kraftfulla funktioner för frågesyntax och kan köra frågor mot data genom att:
- Term (ett fullständigt ord)
- Prefix (börjar med ord)
- Jokertecken (med filteren "*" eller "?"
- Fras (en textsekvens i ett dokument)
- Booleskt värde (komplexa sökningar som kombinerar frågor)
Lucene tillhandahåller VVS på låg nivå för sökning, men Elasticsearch tillhandahåller den server som finns ovanpå Lucene. Elasticsearch lägger till funktioner på högre nivå för att förenkla fungerande Lucene, inklusive ett RESTful-API för att få åtkomst till Lucene-indexerings- och sökfunktioner. Det ger också en distribuerad infrastruktur som kan ge massiv skalbarhet, feltolerans och hög tillgänglighet.
För större molnbaserade program med komplexa sökkrav är Elasticsearch tillgängligt som hanterad tjänst i Azure. Microsoft Azure Marketplace har förkonfigurerade mallar som utvecklare kan använda för att distribuera ett Elasticsearch-kluster i Azure.
Från Microsoft Azure Marketplace kan utvecklare använda förkonfigurerade mallar som skapats för att snabbt distribuera ett Elasticsearch-kluster i Azure. Med det Azure-hanterade erbjudandet kan du distribuera upp till 50 datanoder, 20 samordningsnoder och tre dedikerade huvudnoder.
Sammanfattning
Det här kapitlet innehåller en detaljerad titt på data i molnbaserade system. Vi började med att kontrastera datalagring i monolitiska program med datalagringsmönster i molnbaserade system. Vi tittade på datamönster som implementerats i molnbaserade system, inklusive frågor mellan tjänster, distribuerade transaktioner och mönster för att hantera system med stora volymer. Vi kontrasterade SQL med NoSQL-data. Vi har tittat på tillgängliga datalagringsalternativ i Azure som innehåller både Microsoft-centrerad och öppen källkod. Slutligen diskuterade vi cachelagring och Elasticsearch i ett molnbaserat program.
Referenser
Varför är inte RDBMS-partition tolerant i CAP-satsen och varför är den tillgänglig?
Allt du behöver veta om öppen källkod databaser (IBM-blogg)
Saga Patterns | Så här implementerar du affärstransaktioner med mikrotjänster
På RDBMS-, NoSQL- och NewSQL-databaser. Intervju med John Ryan