Elasticsearch内核剖析

大家都知道Elasticsearch是一个开源的分布式搜索和分析引擎,也是一种NoSQL数据库。由于Elasticsearch填补了开源领域分布式搜索引擎的空白,而且难能可贵的是,Elasticsearch提供了非常友好的操作性,上手极其容易,这些特征促使其在过去5年在市场上快速崛起。目前在开源的搜索系统中基本处于垄断地位。

虽然Elasticsearch在业界快速崛起,在很多大中小型公司都有广泛的应用,但是很多都只是简单使用,最深入的也仅仅是性能调优和点对点的问题调查,很少缺乏系统性的内核探究。

如果对内核不了解,那么在使用过程中总是捉襟见肘,对风险的可控性比较差,线上系统的稳定性难保证,基于此,就有这一系列的文章。

在这个系列的文章中,主要分为三部分。第一部分是Lucene原理介绍;第二部分是Elasticsearch功能原理介绍。第三部分是Elasticsearch架构原理的介绍。

Lucene原理

这部分会介绍Lucene的基本概念,索引结构和读写功能等。

* 《Lucene解析 – 基本概念》:这一篇是Lucene系统系列的开篇,会介绍Lucene中的基础概念,结构等。

* 《Lucene解析 – 查询原理》:这一篇介绍了lucene中的一些主要数据结构,比如FST等,以及如何利用这些数据结构实现高效的查找。

* 《Lucene解析 – IndexWriter》:介绍Lucene中数据写入和索引构建的整个过程。

* 《Lucene解析 – 索引结构(1)》:coming soon。

* 《Lucene解析 – 索引结构(2)》:coming soon。

Elasticsearch功能

这部分主要是介绍Elasticsearch功能上的原理,比如数据模型,读写流程,特定功能实现等,目前包含三篇文章:

* 《Elasticsearch内核解析 – 数据模型篇》:这篇文章会介绍Lucene是什么,在有了Lucene后,为啥还需要Elasticsearch,Elasticsearch是如何通过增加系统字段来解决Lucene中未解决的问题的。同时通过系统字段的介绍,大家能领会到Elasticsearch多个特性的原理。

* 《Elasticsearch内核解析 – 写入篇》:这篇文章开篇会介绍Elasticsearch作为NoSQL和Search时写入的异同,接着重点介绍了Elasticsearch写入流程中的几个关键功能点,最后按步骤介绍了Elasticsearch的写入流程。

* 《Elasticsearch内核解析 – 查询篇》:这篇文章结构同写入流程,开篇会介绍NoSQL和Search中的查询异同,接着重点介绍Elasticsearch在查询流程中的几个关键问题,最后同样按步骤介绍查询流程。

Elasticsearch架构

这部分会介绍Elasticsearch分布式架构方面的优势、缺陷以及各种权衡折中,目前也有三篇文章,分别是:

* 《Elasticsearch分布式一致性原理剖析(一)-节点篇》:这一篇是Elasticsearch分布式一致性原理剖析系列的第一篇,重点介绍了Elasticsearch集群的组成、节点类型、节点发现、master选举、故障检测和扩缩容等方面的实现。同时对相关原理、存在的问题也进行了一些分析,最后再选举方面对比了多种场景实现的优劣。

* 《Elasticsearch分布式一致性原理剖析(二)-Meta篇》:本篇作为分布式一致性原理系列的第二篇,主要介绍了ES集群中Master节点发布Meta更新的流程,分析了其中的一致性问题。此外还介绍了Meta数据的组成和存储方式等。

* 《Elasticsearch分布式一致性原理剖析(三)-Data篇》:这一篇作为分布式一致性原理系列的最后一篇,主要介绍了数据一致性方面的问题,接着介绍了PacificA算法以及Elasticsearch中PacificA算法实现的对比。

欢迎私信投递简历

    原文作者:少强
    原文地址: https://zhuanlan.zhihu.com/p/35643348
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞