第四篇 elasticsearch的基本分布式架构

原创 2017年10月28日 17:19:13

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

Elasticsearch是一套分布式的系统,分布式是为了应对大数据量,它很好的隐藏了复杂的分布式机制:

  • shard分片机制
    我们可以随随便便就将一些document插入到es集群中去,而且不用关心数据怎么进行分片的,数据到哪个shard中去。
  • cluster discovery集群发现机制
    举例:我们之前在做那个集群status从yellow转green的实验里,直接启动了第二个es进程,那个进程作为一个node自动就发现了集群,并且加入了进去,还接受了部分数据,replica shard
  • shard负载均衡
    举例:假设现在有3个节点,总共有25个shard要分配到3个节点上去,es会自动进行均匀分配,以保持每个节点的均衡的读写负载请求

2、Elasticsearch的垂直扩容与水平扩容

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

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

普通服务器:1T,1万,100万
强大服务器:10T,50万,500万

3、shard&replica机制梳理

(1)index包含多个shard
(2)每个shard都是一个最小工作单元,承载部分数据,lucene实例,完整的建立索引和处理请求的能力
(3)增减节点时,shard会自动在nodes中负载均衡
(4)primary shard和replica shard,每个document肯定只存在于某一个primary shard以及其对应的replica shard中,不可能存在于多个primary shard
(5)replica shard是primary shard的副本,负责容错,以及承担读请求负载
(6)primary shard的数量在创建索引的时候就固定了,replica shard的数量可以随时修改
(7)primary shard的默认数量是5,replica默认是1,默认有10个shard,5个primary shard,5个replica shard
(8)primary shard不能和自己的replica shard放在同一个节点上(否则节点宕机,primary shard和副本都丢失,起不到容错的作用),但是可以和其他primary shard的replica shard放在同一个节点上

4、elasticsearch的横向扩容过程,如何超出扩容极限,以及如何提升容错性

(1)primary&replica自动负载均衡,6个shard,3 primary,3 replica
(2)每个node有更少的shard,IO/CPU/Memory资源给每个shard分配更多,每个shard性能更好
(3)扩容的极限,6个shard(3 primary,3 replica),最多扩容到6台机器,每个shard可以占用单台服务器的所有资源,性能最好
(4)超出扩容极限,动态修改replica数量,9个shard(3primary,6 replica),扩容到9台机器,比3台机器时,拥有3倍的读吞吐量
(5)3台机器下,9个shard(3 primary,6 replica),资源更少,但是容错性更好,最多容纳2台机器宕机,6个shard只能容纳0台机器宕机
(6)这里的这些知识点,你综合起来看,就是说,一方面告诉你扩容的原理,怎么扩容,怎么提升系统整体吞吐量;另一方面要考虑到系统的容错性,怎么保证提高容错性,让尽可能多的服务器宕机,保证数据不丢失

5、elasticsearch容错过程分析

master node宕机的一瞬间这个节点上的primary shard就没了,此时就不是active status,就不是所有的primary shard都是active了。
容错第一步: master选举,自动选举另外一个node成为新的master,承担起master的责任来;
容错第二步: 新master将丢掉的primary shard的某个replica shard提升为rpimary shard。此时cluster status会变为yellow,因为primary shard全都变成active了。但是少了一个replica shard,所以不是所有的replica shard都是active了。
容错第三步: 重故障的node,new master会将缺失的副本都copy一份到node上去,并且该node会使用之前已有的shard数据,只是同步下一个宕机之后发生过的修改。cluster status变为green,因为primary shard和replica shard都齐全了。

ES: 架构及原理

Elasticsearch 是一个兼有搜索引擎和NoSQL数据库功能的开源系统,基于Java/Lucene构建,可以用于全文搜索,结构化搜索以及近实时分析。可以说Lucene是当今最先进,最高效的全功...
  • qq_17864929
  • qq_17864929
  • 2017-02-08 10:24:12
  • 9493

Elasticsearch架构原理

架构原理 本书作为 Elastic Stack 指南,关注于 Elasticsearch 在日志和数据分析场景的应用,并不打算对底层的 Lucene 原理或者 Java 编程做详细的介绍,但是 El...
  • wangnan9279
  • wangnan9279
  • 2018-02-08 11:36:53
  • 452

Elasticsearch架构

Elasticsearch 是最近两年异军突起的一个兼有搜索引擎和NoSQL数据库功能的开源系统,基于Java/Lucene构建。最近研究了一下,感觉 Elasticsearch 的架构以及其开源的生...
  • youdianjinjin
  • youdianjinjin
  • 2016-12-09 16:03:36
  • 1149

ElasticSearch分布式架构

本文固定链接: http://www.chepoo.com/elasticsearch-distributed-architecture.html | IT技术精华网 今天介绍下Elas...
  • thinkone
  • thinkone
  • 2015-10-14 09:26:21
  • 4476

Elasticsearch的使用场景深入详解

了解了ES的使用场景,ES的研究、使用、推广才更有价值和意义。1、场景—:使用Elasticsearch作为主要的后端传统项目中,搜索引擎是部署在成熟的数据存储的顶部,以提供快速且相关的搜索能力。这是...
  • wojiushiwo987
  • wojiushiwo987
  • 2016-08-17 08:40:56
  • 33485

Elasticsearch 简介

Elasticsearch的优点1、横向可扩展性:只需要增加一条服务器,做一些配置,启动一下Elasticsearch进程就可以并入集群。2、分片机制提供更好的分布性:同一个索引分成多个分片(shar...
  • w_x_z_
  • w_x_z_
  • 2017-04-07 13:02:43
  • 403

Elasticsearch实战——全文检索架构设计

1、题记近几年,Elasticsearch(以下简称ES)作为开源的搜索引擎已经在国内得到越来越多的应用推广,在日志分析领域应用场景尤为广泛。传统的数据库Mysql、Oracle或者非关系型数据库Mo...
  • wojiushiwo987
  • wojiushiwo987
  • 2017-07-02 09:22:13
  • 3607

Elasticsearch架构原理 样章

  • 2016年01月15日 09:19
  • 15.69MB
  • 下载

elasticsearch之shard内部

shard是什么?它是如何工作的?这一章节我们将回答以下问题: 为什么search是准实时的? 为什么文档的CURD操作是实时的? ES如何确保changes是持久话的的,即使断电也不会丢失? 为什么...
  • jingkyks
  • jingkyks
  • 2015-01-04 10:14:58
  • 1543

Elasticsearch集群未分配的shard

一般情况下,Elasticsearch会自动将shard分配到各个数据节点上,但有些特殊的情况下,也会有shard未被分配的情况,整个集群处于Yellow状态。在你有足够的replica shard备...
  • quicknet
  • quicknet
  • 2015-02-23 08:37:28
  • 9972
收藏助手
不良信息举报
您举报文章:第四篇 elasticsearch的基本分布式架构
举报原因:
原因补充:

(最多只允许输入30个字)