关于分布式架构

首先将ES默认每个索引是5个分片,这样做得目的是两个一个索引的时候速度更快(将数据写到小分片的尾部比写入大分片尾部更加快);另外一个是当数据量达到一定程度之后,分片查询,在汇总(scater-gathter)这种模式更加简单一些。

ES的分片奠定了ES在分布式存储的地位,也意味着ES天生就是多节点部署的,节点数=分片数*(副本数 + 1)。这里有个问题,到底是多分片还是多索引,还是多索引优于多分片;但是差别都不大,为什么这么说,你要明白每个分片本质上是Lucene的一个索引,这个才是真正的索引计算单元;所以在ES里面的索引其实是对于分布式Lucene里面的索引的一个封装,或者说是master;关于查询套路,索引可以通过名称定位,分片可以通过路由定位;

ES为了保证持续提供服务,提供了副本(replica)机制,就是数据的部分,副本是基于分片的,一旦主分片挂了,那么会自动切换到副本进行查询。但是缺点就是占用空间,尤其对于海量数据而言,硬盘压力会比较大,所以副本数需要考虑。默认是1副本。

路由查询策略

刚才在比较分片和索引的时候,提到了多分片场景下可以指定路由来进行地位,避免向所有分片下发查询,导致查询速度下降。使用路由的套路是这样的,首先在创建索引的时候就要指定路由,像下面这样:

curl -XPUT localhost:9200/books/doc/1?routing=A -d '{ "title" : "Document"}'

在创建的时候,就记录了路由器为A,此时在索引完成后,将会在路由表(Route Table)中记录一条路由名称"A"所指向的分片。之后,在你进行查询的时候也要指定同名路由即可定位到指定的分片进行查询:

curl -XGET 'localhost:9200/documents/_search?pretty&q=*&routing=A'

这样查询首先会去路由表中查询路由A对应的分片,然后再去对应的分片中进行查询。

那么现在有一个问题:如果分片大小满了怎么办,如果ES的机制自动进行存储的平衡,我们再次通过路由A查找数据,但是此时数据已经分配到别的机器上面怎么办?这个问题还有待研究。

我们知道分片是Lucene的一个索引,路由定位也是分片级别,但是一个分片其实是可以对应多个路由信息,所以不能依赖于分片而放弃查询条件,这个还是要有的。这样,我们在一次查询中可以指定多个路由进行查询(如下所示),但是,索引的时候只能指定一个路由。

curl -XGET 'localhost:9200/documents/_search?routing=A,B'

分配意识

那么下面介绍一下ES里面的分片的自动优化部署的特性:分配意识(Allocation Awareness);简单地讲,就是ES将会自动将主分片和副本分布到两台不同的机器,避免要挂一起挂的场景。

自动部署里面有很多配置,就不多说了,这里要明白的是ES里面的部署机制,其实这些配置都是默认,从理解ES的角度来讲是有价值,但是从操作层面来讲大多数时候不需要关注。

(分布式)查询偏好策略

最后说一下查询偏好,通过设置查询偏好,可以指定分布式查询的模式,或者优先策略:

_primary:只在主节点查;

_primary_firest:只有主节点挂了,再查副本;

_local:优先本地查;

_only_node:XXX:指定节点查询;

_prefer_node:XXX:优先指定节点查询;

_shard:0,1,2:指定分片查询。

ElasticeSearch(五)分布式索引架构的更多相关文章

  1. 五分钟DBA:浅谈伪分布式数据库架构

    [IT168 技术]12月25日消息,2010互联网行业技术研讨峰会今日在上海华东理工大学召开.本次峰会以“互联网行业应用最佳实践”为主题,定位于互联网架构设计.应用开发.应用运维管理,同时,峰会邀请 ...

  2. SolrCloud之分布式索引及与Zookeeper的集成--转载

    原文地址:http://josh-persistence.iteye.com/blog/2234411 一.概述 Lucene是一个Java语言编写的利用倒排原理实现的文本检索类库,Solr是以Luc ...

  3. (转) SolrCloud之分布式索引及与Zookeeper的集成

    http://blog.csdn.net/ebay/article/details/46549481 作者:Wang, Josh 一.概述 Lucene是一个Java语言编写的利用倒排原理实现的文本检 ...

  4. spring boot / cloud (十五) 分布式调度中心进阶

    spring boot / cloud (十五) 分布式调度中心进阶 在<spring boot / cloud (十) 使用quartz搭建调度中心>这篇文章中介绍了如何在spring ...

  5. FileNet P8 Content Engine 的分布式部署架构

    摘抄笔记:http://www.ibm.com/developerworks/cn/data/library/techarticle/dm-1307wanghaining/ 前言 对于集团公司,企业内 ...

  6. Java 多线程爬虫及分布式爬虫架构探索

    这是 Java 爬虫系列博文的第五篇,在上一篇 Java 爬虫服务器被屏蔽,不要慌,咱们换一台服务器 中,我们简单的聊反爬虫策略和反反爬虫方法,主要针对的是 IP 被封及其对应办法.前面几篇文章我们把 ...

  7. zz《分布式服务架构 原理、设计与实战》综合

    这书以分布式微服务系统为主线,讲解了微服务架构设计.分布式一致性.性能优化等内容,并介绍了与微服务系统紧密联系的日志系统.全局调用链.容器化等. 还是一样,每一章摘抄一些自己觉得有用的内容,归纳整理, ...

  8. MySQL分布式数据库架构:分库、分表、排序、分页、分组、实现教程

    MySQL分库分表总结: 单库单表 : 单库单表是最常见的数据库设计,例如,有一张用户(user)表放在数据库db中,所有的用户都可以在db库中的user表中查到. 单库多表 : 随着用户数量的增加, ...

  9. Java 多线程爬虫及分布式爬虫架构

    这是 Java 爬虫系列博文的第五篇,在上一篇 Java 爬虫服务器被屏蔽,不要慌,咱们换一台服务器 中,我们简单的聊反爬虫策略和反反爬虫方法,主要针对的是 IP 被封及其对应办法.前面几篇文章我们把 ...

随机推荐

  1. final文案+美工

    作业要求[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2476] 文案+美工: 剧情设计+题目设计+美工: 第21关: 剧情: 计算机学 ...

  2. [Spring]初识Spring-Spring的基础使用-如何通过Bean来实例化?

    Spring框架的基础使用 XML配置信息,Bean的不同实例化方式,注入 实例化 XML文件中的参数设置 1.通过构造器进行实例化(重点,常用方式) <bean name="aCls ...

  3. Vuejs 用$emit 与 $on 来进行兄弟组件之间的数据传输

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. ubantu安装node、npm、cnpm、live-server

    更新ubuntu软件源 sudo apt-get update sudo apt-get install -y python-software-properties software-properti ...

  5. JSON的学习,希望可以指导

    1.JSON的介绍 是一种轻量级的数据交换格式.简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言. 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率. 2.格式 JSON ...

  6. 顶部BANNER

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  7. 笔记本1050ti显卡安装最新驱动版本 (415.27) 记录 NVIDIA显卡GeForce系列 (Ubuntu18.04)

    在Linux上安装驱动,这事情多半是跑CUDA程序的人才会搞的,多年前学CUDA时为这一步骤头疼的很,现如今已经比较熟悉了,今日给出一些记录. 首先,在NVIDIA官方网站上找到驱动下载页面: htt ...

  8. Python之路,第十五篇:Python入门与基础15

    python3   异常 异常(基础) 什么是错误? 错误是指由于逻辑或语法错误等,导致一个程序已无法正常执行的问题. 什么是异常? 异常是程序出错时标识的一种状态,当异常发生时,程序不会再向下执行, ...

  9. 无根树同构_hash

    先贴上地址 https://vjudge.net/problem/HDU-5732 判断有根树同构: 1. 直接用括号最小表示法 2. 利用括号最小表示法的思想进行hash 判断无根树同构: 1. 找 ...

  10. Automatic Text Difficulty Classifier Assisting the Selection Of Adequate Reading Materials For European Portuguese Teaching --paper

    the system uses existing Natural Language Processing (NLP) tools, a parser and an hyphenator, and tw ...