1 , node 的 数量 应该大于等于 副本(指的是单个 shard 的 主副本+备份副本数)的 数量 ,如果 副本的数量大于 node 数量,那么 一个node 必定有2 个相同的 副本,这个多出来的副本毫无意义。(如果是为了提高效率,可以提高 切片的 个数 )

2 ,因为 副本 shard  和 主 shard  不会出现在同一个 节点上 ,那么 一 挂一个节点 最多挂掉一个 shard  的 一个副本。

3,所以要保证的 50% 的 节点挂了 数据不丢的  最低副本数数 = 节点数*50%+1

举例:如果有10 个节点 ,那么要求 副本的数量应该 小于等于 10 倍。也就是说最多9 倍的 副本。

  然后如果要求 挂点 50% 的 节点依旧正常工作,那么 副本数的最低要求就是 10*50%  +1 = 6 (去掉一个node 最多少一个副本 )

所以 副本数  是 6-10

在考虑分片数: 分片 分片要保证 分割节点都有数据,所以 10 个 副本的时候最小分片是 1 (每个节点 都是 一份完整的数据 ,保证  50 -90 的 机子挂了 程序都还有可能是正常运行)、

        如果 是  6 个 副本,分给 10 个节点 ,保证每个节点有数据,副本数 * 分片数  应该大于 节点数 ,所以  分片数  应该 > 10/6  ,分片应该大于2 ,

         个人认为 分片数最好小于 节点数,如果分片 大于节点数,一个节点上 必然有2 个以上分片,如果2 个分片都在一个节点上,那还分片干嘛?

      所以分片的范围   2<=分片数<=10

备注: es 不允许在索引建立以后修改 切片的数量 ,因为 修改 切片的数量以后会引起 同一个 ID 的路由值的改变, 比如以前 分3 个片 ,路由值=30 , 30%3 = 0,放在 0 这个 切片上面,但是 切片变成4 的时候,30%4 = 2,这时候 查找 路由值 = 10 的 回去 2 这个 切片上找,明显找不到 呀(   默认的路由值是  hash( id ),也可以手动指定  ),所以切片数量一定要慎重

分布式数据存储 shard(切片) 和 repali(副本) 的 节点数的关系。的更多相关文章

  1. 基于Mongodb进行分布式数据存储

    http://blog.csdn.net/daizhj/article/details/5868360 注:本文是研究Mongodb分布式数据存储的副产品,通过本文的相关步骤可以将一个大表中的数据分布 ...

  2. [CoreOS 转载] CoreOS实践指南(五):分布式数据存储Etcd(上)

    转载:http://www.csdn.net/article/2015-01-22/2823659 摘要:在“漫步云端:CoreOS实践指南”系列的前几篇,分别介绍了如何架设CoreOS集群,系统服务 ...

  3. 分布式数据存储 - MySQL双主复制

    上篇文章<分布式数据存储 - MySQL主从复制>,我们说到MySQL主从复制很好的保障了从库,读的高可用性.so,问题来了: 1.针对主库,写的高可用性又是如何做到高可用性? 2.如果需 ...

  4. 分布式数据存储 之 Redis(二) —— spring中的缓存抽象

    分布式数据存储 之 Redis(二) -- spring中的缓存抽象 一.spring boot 中的 StringRedisTemplate 1.StringRedisTemplate Demo 第 ...

  5. 分布式数据存储 之 Redis(一) —— 初识Redis

    分布式数据存储 之 Redis(一) -- 初识Redis 为什么要学习并运用Redis?Redis有什么好处?我们步入Redis的海洋,初识Redis. 一.Redis是什么 ​ Redis 是一个 ...

  6. ES跨版本升级?——难道升级集群发生shard allocation是因为要分配replica节点???

    Full cluster restart upgrade Elasticsearch requires a full cluster restart when upgrading across maj ...

  7. ESENT分布式数据存储

    关于ESENT,我能想到最恰当的比喻是,它是Microsoft世界的BerkeleyDB,鲜为人知,很少有.NET开发人员使用它,rhino-queues项目使用就是它,但它的性能和可靠性已经经受住了 ...

  8. 分布式数据存储 - MySQL主从复制高可用方案

    前面几篇文章说道MySQL数据库的高可用方案主从复制.主从复制的延迟产生原因.延迟检测及延迟解决方案(并未从根本上解决),这种主从复制方案保证数据的冗余的同时可以做读写分离来分担系统压力但是并非是高可 ...

  9. [CoreOS 转载] CoreOS实践指南(六):分布式数据存储Etcd(下)

    转载:http://www.csdn.net/article/2015-01-28/2823739/2 摘要:Etcd是CoreOS生态系统中处于连接各个节点通信和支撑集群服务协同运作的核心地位的模块 ...

随机推荐

  1. CISC, RISC 探究

    iPhone Simulator  Intel iPhone  ARM 区别很大, Intel目前的处理器主要为IA架构, IA-32即俗称x86,包括桌面处理器系列(赛扬,奔腾,酷睿等)以及服务器处 ...

  2. javascript--- hasOwnProperty、instanceof 、typeof的区别

    typeof 作用:用来判断变量的类型 返回值: string  只有以下几种:number.boolean.string.object.undefined.function[很容易漏掉这个] 形式: ...

  3. RabbitMQ整合spring

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  4. hadoop kafka import/export data (8)

    reference: http://kafka.apache.org/quickstart need to solve issue ISSUE 1: [2019-01-29 15:59:39,272] ...

  5. SQL Server 调优系列进阶篇 - 如何索引调优

    前言 上一篇我们分析了数据库中的统计信息的作用,我们已经了解了数据库如何通过统计信息来掌控数据库中各个表的内容分布.不清楚的童鞋可以点击参考. 作为调优系列的文章,数据库的索引肯定是不能少的了,所以本 ...

  6. Javascript的堆和栈的简单理解

    <!doctype html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. 201621123010《Java程序设计》第9周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 2. 书面作业 本次作业题集集合 1. List中指定元素的删除(题集题目) 1.1 实验总结.并回答:列举至 ...

  8. Android中判断字符是否为中文、韩文、日文

    我们经常需要在程序中判断一个字符是否为CJK(Chinese.Japanese.Korean)语言的字符. 例如,在Contacts里面程序需要判断联系人姓名的所属语言. 今天为大家介绍一种NameS ...

  9. Python学习(007)-函数的特性

    一..函数是什么 定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可 特性: 1.代码重用 2.保持一致性 3.可扩展性 二.创建 2.1格式 de ...

  10. webpack 添加 jquery 插件

    webpack.base.config.js 加入以下配置: , plugins: [ new webpack.ProvidePlugin({ jQuery: 'jquery', $: 'jquery ...