手机o2o网站建设,那些网站是vue做的,建筑装饰设计专业学什么,绵阳阡陌网站建设提问#xff1a;
既然多个shard会被分配到同一个node上#xff0c;那么为什么不把多个shard合并成一个然后存在当前node上呢#xff0c;简而言之也就是让node和shard形成一对一的关系呢 #xff1f;非常好的问题#xff0c;这正是理解Elasticsearch分片#xff08;shard…提问
既然多个shard会被分配到同一个node上那么为什么不把多个shard合并成一个然后存在当前node上呢简而言之也就是让node和shard形成一对一的关系呢 非常好的问题这正是理解Elasticsearch分片shard设计思想的关键点
为什么不让一个 node 只存储一个 shard实现一对一关系
主要原因有以下几点 1. 分片的数量 ≠ 节点的数量弹性扩展和伸缩能力
分片数固定不可变节点数可以动态变化 一旦创建索引后主分片数就不可更改7.x后不能动态调整主分片数量。但实际运行时集群节点数量是可以动态增加或减少的。多shard 少node 比如你有5个shard只有3个node它们怎么分只能有node上有多个shard。扩容和负载均衡 比如初期2个node5个shard都只能堆在这2个node上。之后水平扩容——加节点后Elasticsearch会自动把这些shard搬过去并负载均衡但分片数不会增加如果一个node只能有一个shard总shard数大于node数/小于node数都无法自洽。
2. 粒度决定并发分片越多并发能力越强
多shard并发查询/索引 访问或写入单个shard是有性能瓶颈的尤其是大数据场景下。 多个shard可以并发处理提高带宽利用率和处理速度。Node本身多核CPU资源可以共享 一个node比如16核多个shard可以充分“吃满”资源同一node不同shard任务并发处理。
3. 容灾与高可用策略灵活
副本shardreplica shard不能和主shard在同一个node上 如果node与shard一对一就是node挂分片丢失无法高可用。通过多shard和多副本分散在多个node上可以灵活应对节点损坏提升系统弹性和数据安全。
4. 管理和生命周期操作更灵活
可以对单个shard做迁移、均衡、快照、恢复细粒度管理便于维护。滚动部署时更方便可以无缝切换负载。
5. 节点数 索引数量 or 索引数量的情况
一个集群同时有100个索引每个索引5个shard总共500个shard。node数量假如只有10个只能每个node承载N个shard。node数量远超过shard数单node可能一个都没有/部分承载。 总结
Elasticsearch 设计分片shard机制是为了实现弹性伸缩、负载均衡、并发性能提升和高可用容灾“多目标”绝不是一一对应就能解决的。让shard数量远多于node数量是分布式架构的基本思想之一。 所以不让shard和node一对一而是允许多个shard分配在同一个node上是为了支持弹性扩展、高并发、容灾、高利用率等多种需求。