基本概念

elasticsearch设计的理念就是分布式搜索引擎,底层其实还是基于lucene的。

核心思想就是在多台机器上启动多个es进程实例,组成了一个es集群。

es中存储数据的基本单位是索引,比如说你现在要在es中存储一些订单数据,你就应该在es中创建一个索引,order_idx,所有的订单数据就都写到这个索引里面去,一个索引差不多就是相当于是mysql里的一张表。index -> type -> mapping -> document -> field。

index:mysql里的一张表

type:没法跟mysql里去对比,一个index里可以有多个type,每个type的字段都是差不多的,但是有一些略微的差别。

好比说,有一个index,是订单index,里面专门是放订单数据的。就好比说你在mysql中建表,有些订单是实物商品的订单,就好比说一件衣服,一双鞋子;有些订单是虚拟商品的订单,就好比说游戏点卡,话费充值。就两种订单大部分字段是一样的,但是少部分字段可能有略微的一些差别。

所以就会在订单index里,建两个type,一个是实物商品订单type,一个是虚拟商品订单type,这两个type大部分字段是一样的,少部分字段是不一样的。

很多情况下,一个index里可能就一个type,但是确实如果说是一个index里有多个type的情况,你可以认为index是一个类别的表,具体的每个type代表了具体的一个mysql中的表

每个type有一个mapping,如果你认为一个type是一个具体的一个表,index代表了多个type的同属于的一个类型,mapping就是这个type的表结构定义,你在mysql中创建一个表,肯定是要定义表结构的,里面有哪些字段,每个字段是什么类型。。。

mapping就代表了这个type的表结构的定义,定义了这个type中每个字段名称,字段是什么类型的,然后还有这个字段的各种配置

实际上你往index里的一个type里面写的一条数据,叫做一条document,一条document就代表了mysql中某个表里的一行给,每个document有多个field,每个field就代表了这个document中的一个字段的值

ES的分布式的架构

接着你搞一个索引,这个索引可以拆分成多个shard,每个shard存储部分数据。

如图:有三台机器,一个索引有三个shard,每个shard包含index中的一部分数据。假设现在有三条数据,shard0包含数据1,shard1包含数据2,shard3包含数据3。每个shard有包含一个副本shard。见图中primary shard 和replica shard的分布。三个ES进程构成了ES的集群。

接着就是这个shard的数据实际是有多个备份,就是说每个shard都有一个primary shard,负责写入数据,但是还有几个replica shard。primary shard写入数据之后,会将数据同步到其他几个replica shard上去。

通过这个replica的方案,每个shard的数据都有多个备份,如果某个机器宕机了,没关系啊,还有别的数据副本在别的机器上呢。高可用了吧。

es集群多个节点,会自动选举一个节点为master节点,这个master节点其实就是干一些管理的工作的,比如维护索引元数据,负责切换primary shard和replica shard身份之类的。要是master节点宕机了,那么会重新选举一个节点为master节点。

如果是非master节点宕机了,那么会由master节点,让那个宕机节点上的primary shard的身份转移到其他机器上的replica shard。接着你要是修复了那个宕机机器,重启了之后,master节点会控制将缺失的replica shard分配过去,同步后续修改的数据之类的,让集群恢复正常。

其实上述就是elasticsearch作为一个分布式搜索引擎最基本的一个架构设计

Elasticsearch分布式架构原理图相关推荐

  1. Elasticsearch 分布式架构原理

    前言 前面介绍了很多ES使用过程中的具体实战知识点,本文主要是谈谈ES分布式架构原理. 一.Elasticsearch特点 elasticsearch是近实时的分布式搜索分析引擎,底层实现基于Luce ...

  2. elasticsearch的分布式架构原理

    对于全文检索,lucene是目前最流行的搜索库.以前我们都需要学习使用lucene,基于lucene做相关的开发,学习倒排索引的原理,而现在,我们可以直接使用现成的搜索框架了,因为现在很多这种搜索框架 ...

  3. Elasticsearch分布式一致性原理剖析(一)-节点篇

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: ES目前是最流行的开源分布式搜索引擎系统,其使用Lucene作为单机存储引擎并提供强大的搜索查询能力.学习其搜索原理, ...

  4. ES 的分布式架构原理能说一下么?

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | http://8rr.co/Gs9a 面试题 ...

  5. 分布式架构知识体系必读

    1.问题 1.何为分布式何为微服务? 2.为什么需要分布式? 3.分布式核心理论基础,节点.网络.时间.顺序,一致性? 4.分布式是系统有哪些设计模式? 5.分布式有哪些类型? 6.如何实现分布式? ...

  6. 一文读懂分布式架构知识体系(内含超全核心知识大图)

    作者 | 晓土 阿里巴巴高级工程师 姊妹篇阅读推荐:<云原生时代,分布式系统设计必备知识图谱(内含22个知识点)> 导读:本文力求从分布式基础理论.架构设计模式.工程应用.部署运维.业界方 ...

  7. Elasticsearch分布式一致性原理剖析(三)-Data篇

    前言 "Elasticsearch分布式一致性原理剖析"系列将会对Elasticsearch的分布式一致性原理进行详细的剖析,介绍其实现方式.原理以及其存在的问题等(基于6.2版本 ...

  8. ES分布式机制的透明性,垂直扩容和水平扩容,数据rebalance,master节点,节点平等的分布式架构,shard和replica机制(学习)

    1.Elasticsearch对复杂分布式机制的透明影藏特性 Elasticsearch是一套分布式的系统,分布式是为了应对大数据量影藏了复杂的分布式机制. 分片机制(我们可以随随便便就将一些docu ...

  9. 爬虫 spider11——搭建分布式架构通过feign技术,开发服务消费者

    搭建分布式架构,把3中开发的服务提供者,注册到eureka server(三台,7001,7002,7003) 开发服务消费者(可以直接访问3中的服务),调试成功后, 通过feign技术,开发服务消费 ...

  10. 服务端高并发分布式架构演进之路(转载,图画的好)

    这个文章基本上从单机版到最终版,经历了加缓存,加机器,高可用,分布式,最后到云等过程,其实我一直想总结一套类似的东西,没想到有人已经先弄出来了,那就不重复造轮子了,而且我感觉这个文章也是花了功夫的. ...

最新文章

  1. scala 自带json_scala中复杂对象转JSON和解析的方法
  2. Spring Boot 使用 Graylog 收集日志
  3. 线段树什么的最讨厌了
  4. 汇编语言 DS段寄存器
  5. ftp改为sftp_浅谈 FTP、FTPS 与 SFTP
  6. 明日开播,速来围观!AI TIME 自然语言处理专题第 5 期 | 法律智能
  7. 【420天】跃迁之路——程序员高效学习方法论探索系列(实验阶段177-2018.04.01)...
  8. 颜宁谈为何选择深圳:一拍即合!我麻溜地向普林斯顿递了辞职申请
  9. NBA数据分析及可视化BI数据大屏 (Kobe·Bryant)
  10. win7系统关闭蓝牙服务器,Win7系统怎么关闭蓝牙功能
  11. MSA移动安全联盟 获取OAID 异常问题
  12. python xlwt生成Excel
  13. win10系统升级后Auto CAD2008过期解决办法
  14. Android之Material Dialogs详解(非原创)
  15. 微生物组-扩增子16S分析第10期(线上/线下同时开课,本年最后一期)
  16. 5个高质量简历模板网站,免费、免费、免费
  17. ListView实现倒计时功能
  18. 技术合同属于什么类别的合同
  19. 容器化技术最佳实践1--容器化技术简介与Docker入门
  20. 腾讯云GPU服务器NVIDIA P40 GPU、P4、T4和GPU自由卡详解

热门文章

  1. Java jdk的下载与安装
  2. ESP32 SIM800L:发送带有传感器读数的文本消息(SMS警报)
  3. Android 调试桥 (adb)
  4. NODE.JS菜鸟网总结
  5. winhex教程 转
  6. 爬取豆瓣Top250并存储Excel
  7. win10计算机策略组在哪,win10家庭版的组策略在哪里打开
  8. matlab多元函数求最优,MATLAB多元函数导数求极值或最优值
  9. java aspect编译,Java-AspectJ无法编译
  10. A* 寻路算法[转载]