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

1、分片机制:

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

{
                       "settings" : {
                            "number_of_shards" : 3,
                             "number_of_replicas" : 1
                          }

}

2、集群发现、扩容机制:

(1)集群发现:新增的节点自动加入集群,并且接收到部分replica shard
         (2)集群扩容:
                 垂直扩容:服务器总数不变,通过单台服务器支撑更多的数据进行扩容
                 水平扩容:单台服务器支撑的数据量保持不变,通过增加服务器数量进行扩容( 优先采用方案,  一般采用水平扩容方案)

3、shard副本、负载均衡、重分配机制:

(1)shard副本:
    
          (2)负载均衡:增加很减少节点时自动进行数据的rebalance,es自动根据当前的负载均衡情况自己进行数据的重新负载均衡

(3)重分配机制:

4、master节点推举机制和replica shard容错机制

(1)master节点:用于管理集群元数据(比如索引新增,删除等),索引元数据,节点的新增和移除,默认情况下,会自动选择一个节点作为matster节点

(2)replica shard容错机制
                 如果一个master节点宕机,则master会自动选择一个node作为新的master以承担master的责任。新的master将丢失掉的某个primary shard的replica shard提升为primary shard(此时,少了一个replica shard,导致并不是所有的replica shard都是active状态了,相应的集群的健康颜色值会发生变化)

5、节点平等的分布式架构

(1)节点对等,每个节点都能接收所有的请求
           (2)自动请求路由
           (3)响应收集

Elasticsearch学习笔记(四)ElasticSearch分布式机制的更多相关文章

  1. JVM学习笔记(四):类加载机制

    虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制. 一.类加载的时机1. 类从被加载到虚拟机内存 ...

  2. Elasticsearch学习笔记一

    Elasticsearch Elasticsearch(以下简称ES)是一款Java语言开发的基于Lucene的高效全文搜索引擎.它提供了一个分布式多用户能力的基于RESTful web接口的全文搜索 ...

  3. ElasticSearch学习笔记(超详细)

    文章目录 初识ElasticSearch 什么是ElasticSearch ElasticSearch特点 ElasticSearch用途 ElasticSearch底层实现 ElasticSearc ...

  4. elasticsearch学习笔记——相关插件和使用场景

    logstash-input-jdbc学习 ES(elasticsearch缩写)的一大优点就是开源,插件众多.所以扩展起来非常的方便,这也造成了它的生态系统越来越强大.这种开源分享的思想真是与天朝格 ...

  5. ZooKeeper学习笔记四:使用ZooKeeper实现一个简单的分布式锁

    作者:Grey 原文地址: ZooKeeper学习笔记四:使用ZooKeeper实现一个简单的分布式锁 前置知识 完成ZooKeeper集群搭建以及熟悉ZooKeeperAPI基本使用 需求 当多个进 ...

  6. muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制

    目录 muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制 eventfd的使用 eventfd系统函数 使用示例 EventLoop对eventfd的封装 工作时序 runInLoo ...

  7. 零拷贝详解 Java NIO学习笔记四(零拷贝详解)

    转 https://blog.csdn.net/u013096088/article/details/79122671 Java NIO学习笔记四(零拷贝详解) 2018年01月21日 20:20:5 ...

  8. MySql学习笔记四

    MySql学习笔记四 5.3.数据类型 数值型 整型 小数 定点数 浮点数 字符型 较短的文本:char, varchar 较长的文本:text, blob(较长的二进制数据) 日期型 原则:所选择类 ...

  9. C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻

    前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要 ...

  10. IOS学习笔记(四)之UITextField和UITextView控件学习

    IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...

随机推荐

  1. 【Python】 解析Python中的运算符

    Python中的运算符相比较于传统的C/C++差别不是很大,主要是一些个别的运算符上的差别.包括:算术.比较.赋值.位.逻辑.成员.身份等.它们的优先级: 符号 说明 ** 指数(最高优先级) ~,+ ...

  2. npm 发布包和删除包(2019最新攻略)

  3. 【转】jQuery 的 ajax 方法,返回结果 readyState=4 并且 status=200 时,还进 error 方法

    今天在使用jquery.ajax方法去调用后台方法时,ajax中得参数data类型是"JSON",后台DEBUG调试,运行正常,返回正常的结果集,但是前端一直都进到ajax的err ...

  4. .NET Core +NuGet 创建打包发布自己的类库包

    1. 创建类库项目 你可以使用现有的 .NET 类库项目用于要打包的代码,或者创建一个简单的项目,.NET CORE 2.1 项目的 类库如下所示: NugetDemo.class using Sys ...

  5. idea 下 encodings.xml 的正确位置

    在多个module存在的情况下 encodings.xml在 project 下的.idea 下面         这个就是最父级project

  6. 【资料下载区】【GMT43相关代码、资料下载地址】更新日期2017/06/28

    [GMT43相关文档][更新中...] GMT43原理图(PDF)下载GMT43说明书(PDF)下载GMT43机械结构尺寸(PDF)下载 [GMT43相关例程代码][ARM][更新中...] 基于HA ...

  7. [Unity]Unity常见API

    本文主要为了方便查阅 1. MonoBehaviour 生命周期 Awake 对象创建的时候调用,类似构造函数 Start 在Awake之后执行,区别在于,如果组件不可用(在Inspector没有勾选 ...

  8. 在BootStrap的modal中使用Select2

      bootstrap 3 $.fn.modal.Constructor.prototype.enforceFocus = function() {}; bootstrap4 $.fn.modal.C ...

  9. Navicat 提示 Access violation at address ***(如004ECCF4) in module ‘navicat.exe’. Read of address ***(如00000048)

    Navicat 提示 Access violation at address ***(如004ECCF4) in module ‘navicat.exe’. Read of address ***(如 ...

  10. JavaScript 字符串与json对象互转的几种方法

    第一种:浏览器支持的转换方式(Firefox,chrome,opera,safari,ie)等浏览器: JSON.parse(jsonstr); //可以将json字符串转换成json对象 JSON. ...