一、Es是如何实现分布式的

1.Es本身基于lucene,高度支持分布式的核心思想就在于,在多个服务器上启动多个Es进程实例,组建了一套Es集群。

2.其次,因为shard分片的应用,非常灵活的支持数据量横向扩展(只需要重建一个索引,多加shard,把数据迁进去)。再者说shard的数据其实是有多个备份,每个shard都会有一个primary shard,负责写数据,写入数据后,会将数据同步到其他的replica shard上。(ps : 主shard 和 复制shard 可以不在相同的服务器上,如果某个机器宕机了,别的机器上依然有数据备份)

3.Es集群会自动选举一个master节点, 负责一些管理工作(比如维护索引元数据、负责切换 primary shard 和 replica shard 身份等),如果master节点宕机了,会重新选举一个新的master。

4.非master节点宕机时,master节点会让宕机节点的primary shard 身份转移给其他节点。如果宕机节点修好了,那它也只能是replica shard了。(保证集群正常)。

二、Es 写数据操作

1.客户端随机选了一个节点1触发请求,该节点1成为 协调节点。

2.协调节点对这个写入的document进行路由,将数据发送给有primary shard的节点2。

3.节点2写数据,并将数据同步给所有的replica shard节点。

4.协调节点如果发现 primary shard 和 各 replica shard 都将数据搞定之后,响应客户端。

三、Es读数据操作

1.客户端随机选了一个节点1触发请求,该节点1成为 协调节点。

2.协调节点对请求过来的文档id进行hash路由,使用随机轮训算法(保证读数据负载均衡)从所有的primary shard 的node 和复制节点的node里挑一个节点2,将请求指给对应的节点2。

3.节点2将数据document 响应给协调节点1。

4.协调节点1 将数据响应给客户端。

四、Es搜索数据操作

1.客户端随机选了一个节点1触发请求,该节点1成为 协调节点。

2.协调节点将搜索的内容转发到所有的shard。

3.每个shard 将自己的搜索结果 其实也就是一些document_id。返回给协调节点1。协调节点进行合并、排序、分页等。

4.协调节点1根据每个shard发挥的document_id去各个节点上拉去实际的document数据,最终响应给客户端。

五、Es为什么快

首先要知道什么是倒排索引,引用大佬的图。

1.倒排索引就是关键词到文档id 多对多的一个映射关系。

着重注意两点:

  a.倒排索引中的关键词词项本身就是有个升序排列的顺序的。

  b.每个关键词在倒排所以里又直接对应着所有相关的document_id。

2.Es通过词项索引快速找到了倒排文件和trem。再通过倒排文件快速定位到具体的document。

最新文章

  1. springMVC学习笔记--知识点总结1
  2. 网络爬虫(java)
  3. 【CImg】霍夫变换——直线检测
  4. android SDK manager 无法获取更新版本列表
  5. ActionBar PopuMenu
  6. parentNode(返回指定节点的父节点。)
  7. mac下修改mysql的默认字符集为utf8
  8. 转: Firefox 浏览器对 TABLE 中绝对定位元素包含块的判定有错误
  9. hdu4027(线段树)
  10. 快捷高效的cmd命令
  11. ORACLE中CHAR、VARCHAR、NVARCHAR
  12. 花了一年时间开发的弯管机YBC编程软件
  13. day84
  14. error:crosses initialization of ...
  15. Python模块定义和使用
  16. 多线程学习笔记七之信号量Semaphore
  17. 用户用户组管理:用户管理命令useradd
  18. 淡雅清新教师求职简历免费word模板
  19. 使用OmniGraffle创建流程图
  20. windows环境vagrant修改静态资源文件,centos虚拟机中nginx的web环境下不生效

热门文章

  1. js保留两位小数的数字格式化方法
  2. stm32CubeMx工程使用GCC编译
  3. 关于c++ 感想
  4. 「Luogu1231」教辅的组成
  5. BSD socket编程学习
  6. Codeforces Round #568 (Div. 2) 选做
  7. ADS 2015破解方法--笔记
  8. greenplum 导入数据方式
  9. CentOS操作系统部署zabbix agent服务
  10. windows驱动不要签名