第四篇 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都齐全了。

相关文章推荐

分布式搜索elasticsearch 基本概念

ElasticSearch官网:http://www.elasticsearch.org/ 先上一张elasticsearch的总体框架图: ElasticSearch是基于Lucene开发的分...

elasticsearch之es分布式集群初探

原文地址:http://www.cnblogs.com/huangfox/p/3543351.html es有很多特性,分布式、副本集、负载均衡、容灾等。 我们先搭建一个很简单的分布式集群(伪...

搭建Elasticsearch 5.4分布式集群

一、集群角色多机集群中的节点可以分为master nodes和data nodes,在配置文件中使用Zen发现(Zen discovery)机制来管理不同节点。Zen发现是ES自带的默认发现机制,使用...
  • napoay
  • napoay
  • 2016年08月14日 07:18
  • 25310

ES: 架构及原理

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

ElasticSearch分布式架构

本文固定链接: http://www.chepoo.com/elasticsearch-distributed-architecture.html | IT技术精华网 今天介绍下Elas...

dubbo(分布式架构)+zookeeper(注册中心)+spring(provider和consumer) 基本使用

1.前言 看到网上各种dubbo的教程,应该基本上都是从一个地方贴过来的,一看到千篇一律的provider中main方法中的system.in.read()就头疼了,随便找找都是一个样,估计都没自己...

分布式架构--基本思想汇总

在互联网大行其道的今天,各种分布式系统已经司空见惯。搜索引擎、电商网站、微博、微信、O2O平台。。凡是涉及到大规模用户、高并发访问的,无一不是分布式。关于分布式系统,并没有一个标准答案,说某某架构一定...

分布式架构(三)-CentOS的基本命令

linux的命令操作 1、日常操作命令 **查看当前所在的工作目录 pwd **查看当前系统的时间 date **查看有谁在线(哪些人登陆到了服务器) who 查看当前在线 ...

分布式架构(五)-Zookeeper基本使用

本文介绍zookeeper的基本使用方式,简单命令和JAVA-API的使用。并开发感知服务器动态上下线的功能。...

分布式架构学习之:002--Dubbo架构基本介绍和zookeeper单点安装

Dubbo的架构 注册中心可选方案: zookeeper、redis。 1、zookeeper是Apache Hadoop的子项目,强度稳定性较好,生成环境建议使用 2、建议使用Dubbo2.3....
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第四篇 elasticsearch的基本分布式架构
举报原因:
原因补充:

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