分布式数据存储 shard(切片) 和 repali(副本) 的 节点数的关系。
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(副本) 的 节点数的关系。的更多相关文章
- 基于Mongodb进行分布式数据存储
http://blog.csdn.net/daizhj/article/details/5868360 注:本文是研究Mongodb分布式数据存储的副产品,通过本文的相关步骤可以将一个大表中的数据分布 ...
- [CoreOS 转载] CoreOS实践指南(五):分布式数据存储Etcd(上)
转载:http://www.csdn.net/article/2015-01-22/2823659 摘要:在“漫步云端:CoreOS实践指南”系列的前几篇,分别介绍了如何架设CoreOS集群,系统服务 ...
- 分布式数据存储 - MySQL双主复制
上篇文章<分布式数据存储 - MySQL主从复制>,我们说到MySQL主从复制很好的保障了从库,读的高可用性.so,问题来了: 1.针对主库,写的高可用性又是如何做到高可用性? 2.如果需 ...
- 分布式数据存储 之 Redis(二) —— spring中的缓存抽象
分布式数据存储 之 Redis(二) -- spring中的缓存抽象 一.spring boot 中的 StringRedisTemplate 1.StringRedisTemplate Demo 第 ...
- 分布式数据存储 之 Redis(一) —— 初识Redis
分布式数据存储 之 Redis(一) -- 初识Redis 为什么要学习并运用Redis?Redis有什么好处?我们步入Redis的海洋,初识Redis. 一.Redis是什么 Redis 是一个 ...
- ES跨版本升级?——难道升级集群发生shard allocation是因为要分配replica节点???
Full cluster restart upgrade Elasticsearch requires a full cluster restart when upgrading across maj ...
- ESENT分布式数据存储
关于ESENT,我能想到最恰当的比喻是,它是Microsoft世界的BerkeleyDB,鲜为人知,很少有.NET开发人员使用它,rhino-queues项目使用就是它,但它的性能和可靠性已经经受住了 ...
- 分布式数据存储 - MySQL主从复制高可用方案
前面几篇文章说道MySQL数据库的高可用方案主从复制.主从复制的延迟产生原因.延迟检测及延迟解决方案(并未从根本上解决),这种主从复制方案保证数据的冗余的同时可以做读写分离来分担系统压力但是并非是高可 ...
- [CoreOS 转载] CoreOS实践指南(六):分布式数据存储Etcd(下)
转载:http://www.csdn.net/article/2015-01-28/2823739/2 摘要:Etcd是CoreOS生态系统中处于连接各个节点通信和支撑集群服务协同运作的核心地位的模块 ...
随机推荐
- 在linux下出现cannot restore segment prot after reloc: Permission denied
应用程序连接oracle的库时会出现如下错误:XXXXX:: error while loading shared libraries: /usr/local/oracle/product/10.2. ...
- Apache Tomcat 6.0 Tomcat6 服务因 1 (0x1) 服务特定错误而停止
1.Tomcat目录下的bin
- linux tcpdump 抓包
tcpdump是linux命令行下常用的的一个抓包工具,记录一下平时常用的方式,测试机器系统是ubuntu 12.04. tcpdump的命令格式 tcpdump的参数众多,通过man tcpdump ...
- JavaScript学习总结(五)——Javascript中==和===的区别
一.JavaScript"=="的作用 当==两边的内容是字符串时,则比较字符串的内容是否相等. 当==两边的内容是数字时,则比较数字的大小是否相等. 当==两边的内容是对象或者是 ...
- BZOJ3895 取石子
Orz PoPoQQQ 我等蒟蒻只能想到石子数 ≥ 2时的情况...1的时候就爆搜?大概是这个意思 最后再记忆化一下 /**************************************** ...
- PHP:第三章——PHP中控制函数的函数
<pre> <?php header("Content-Type:text/html;charset=utf-8"); /******************** ...
- HDU 3279 二分图最大匹配
DES: 就是说对每个人都给你一个区间.但一个人只匹配一个数.问你满足匹配的人的序号字典序最大时的最大匹配是什么. 前几天刚做的UVALive 6322...当然是不一样的...那个要求的最大匹配的个 ...
- delete symlink in subversion using svn delete command
# svn delete etc/systemd/system/getty.target.wants/serial-getty@ttyS3.service@ D etc/systemd ...
- System.out.println(i++); System.out.println(++i);的区别
之前一直对i++和++i很模糊,这次通过两个小demo来探究下. 例1: public static void main(String[] args) { int i=2; System.out.pr ...
- 2017广东工业大学程序设计竞赛决赛 Problem E: 倒水(Water) (详解)
倒水(Water) Description 一天,CC买了N个容量可以认为是无限大的瓶子,开始时每个瓶子里有1升水.接着~~CC发现瓶子实在太多了,于是他决定保留不超过K个瓶子.每次他选择两个当前含水 ...