Elasticsearch笔记第七篇

441 阅读4分钟

Elasticsearch核心知识篇(9)

image.png

Elasticsearch对复杂分布式机制的透明隐藏特性

Elasticsearch是一套分布式的系统,分布式是为了应对大数据量

  • 隐藏了复杂的分布式机制
    • 分片机制(我们之前随随便便就将一些document插入到es集群中去了,我们有没有care过数据怎么进行分片的,数据到哪个shard中去)

    • cluster discovery(集群发现机制,我们之前在做那个集群status从yellow转green的实验里,直接启动了第二个es进程,那个进程作为一个node自动就发现了集群,并且加入了进去,还接受了部分数据,replica shard)

    • shard负载均衡(举例,假设现在有3个节点,总共有25个shard要分配到3个节点上去,es会自动进行均匀分配,以保持每个节点的均衡的读写负载请求)

    • shard副本请求路由集群扩容shard重分配


Elasticsearch的垂直扩容与水平扩容

垂直扩容:采购更强大的服务器,成本非常高昂,而且会有瓶颈,假设世界上最强大的服务器容量就是10T,但是当你的总数据量达到5000T的时候,你要采购多少台最强大的服务器啊

水平扩容业界经常采用的方案,采购越来越多的普通服务器,性能比较一般,但是很多普通服务器组织在一起,就能构成强大的计算和存储能力

普通服务器:1T,1台1万,100万T数据,扩容花费 100万 强大服务器:10T,1台50万,100万T数据,扩容花费 500万

扩容对应用程序的透明性


增减或减少节点时的数据rebalance

图中有介绍

  • 保持负载均衡

master节点

图中有介绍

  • 创建或删除索引
  • 增加或删除节点

节点平等的分布式架构

节点对等的意思就是:每台服务器都是可以作为请求的接收服务器

例子:我们请求一个document,我们将请求发送个5号服务器,但是5号服务器是没有这个数据的,5号服务器会将请求转接给2号,2号上有数据,会将数据返还给5号,5号拿到数据后,将数据发送给请求方,对于请求方来说,他并不知道一手是5号,二手是2号,只是感觉向Elasticsearch系统发送了一个请求,这样获得了响应,得到需要的数据而已

  • 节点对等,每个节点都能接收所有的请求
  • 自动请求路由
  • 响应收集

Elasticsearch核心知识篇(10)

shard&replica机制再次梳理

  • index包含多个shard

  • 每个shard都是一个最小工作单元,承载部分数据,lucene实例,完整的建立索引和处理请求的能力(重要)

  • 增减节点时,shard会自动在nodes中负载均衡

  • primary shard和replica shard,每个document肯定只存在于某一个primary shard以及其对应的replica shard中,不可能存在于多个primary shard

  • replica shard是primary shard的副本,负责容错,以及承担读请求负载

  • primary shard的数量在创建索引的时候就固定了,replica shard的数量可以随时修改 我们可以给每个primary shard增加一个或者多个replica shard

  • primary shard的默认数量是5,replica默认是1,默认有10个shard,5个primary shard,5个replica shard

  • primary shard不能和自己的replica shard放在同一个节点上(否则节点宕机,primary shard和副本都丢失,起不到容错的作用),但是可以和其他primary shard的replica shard放在同一个节点上

image.png


图解单node环境下创建index是什么样子的

image.png

  1. 单node环境下,创建一个index,有3个primary shard,3个replica shard
  2. 集群status是yellow
  3. 这个时候,只会将3个primary shard分配到仅有的一个node上去,另外3个replica shard是无法分配的
  4. 集群可以正常工作,但是一旦出现节点宕机,数据全部丢失,而且集群不可用,无法承接任何请求
PUT /test_index
{
   "settings" : {
      "number_of_shards" : 3,     # 设置primary sharp的数量
      "number_of_replicas" : 1    # 设置每个primary shard的replicate shard的数量
   }
}

Elasticsearch核心知识篇(11)

图解2个node环境下replica shard是如何分配的

  1. replica shard分配:3个primary shard,3个replica shard,2 node
  2. primary ---> replica同步
  3. 读请求:primary/replica

image.png