ES水平扩容
怎样为我们的正在增长中的应用程序按需扩容呢?当启动了第三个节点,我们的集群将会看起来如图1“拥有三个节点的集群——为了分散负载而对分片进行重新分配”所示。
图1. 拥有三个节点的集群——为了分散负载而对分片进行重新分配
Node 1
和 Node 2
上各有一个分片被迁移到了新的 Node 3
节点,现在每个节点上都拥有2个分片,而不是之前的3个。这表示每个节点的硬件资源(CPU, RAM, I/O)将被更少的分片所共享,每个分片的性能将会得到提升。
分片是一个功能完整的搜索引擎,它拥有使用一个节点上的所有资源的能力。我们这个拥有6个分片(3个主分片和3个副本分片)的索引可以最大扩容到6个节点,每个节点上存在一个分片,并且每个分片拥有所在节点的全部资源。
更多的扩容
但是如果我们想要扩容超过6个节点怎么办呢?
主分片的数目在索引创建时就已经确定了下来。实际上,这个数目定义了这个索引能够 存储 的最大数据量。(实际大小取决于你的数据、硬件和使用场景。) 但是,读操作——搜索和返回数据——可以同时被主分片 或 副本分片所处理,所以当你拥有越多的副本分片时,也将拥有越高的吞吐量。
在运行中的集群上是可以动态调整副本分片数目的,我们可以按需伸缩集群。让我们把副本数从默认的 1
增加到 2
:
PUT /blogs/_settings
{
"number_of_replicas" : 2
}
如图2“将参数 number_of_replicas
调大到 2”所示, blogs
索引现在拥有9个分片:3个主分片和6个副本分片。这意味着我们可以将集群扩容到9个节点,每个节点上一个分片。相比原来3个节点时,集群搜索性能可以提升 3 倍。
图2. 将参数 number_of_replicas
调大到 2
当然,如果只是在相同节点数目的集群上增加更多的副本分片并不能提高性能,因为每个分片从节点上获得的资源会变少。你需要增加更多的硬件资源来提升吞吐量。
但是更多的副本分片数提高了数据冗余量:按照上面的节点配置,我们可以在失去2个节点的情况下不丢失任何数据。
相关文章
- es 其实是不是就是数据库_初识ES数据库「建议收藏」
- ES Head插件安装
- ES 查询
- 【说站】js中ES Module和CommonJs的区别
- 2022最新ES面试题整理(Elasticsearch面试指南系列)「建议收藏」
- 【ES三周年】ELK保姆级安装部署教程
- 【腾讯云ES】自建ES集群在线融合迁移原理解析及操作指南
- 【ES三周年】+windows安装es、kibana教程
- OpenGL ES 3.0 简介
- 【ES三周年】一亿数据写入 ES :耗时 512 秒
- IOS – OpenGL ES 调节图像RGB通道 GPUImageRGBFilter
- 【ES三周年】ES最佳实践案例
- ES -IK分词器分词、停用词基于API实现热更新
- ORA-02366: The following index(es) on table string were processed: ORACLE 报错 故障修复 远程处理
- Heart ES-19:专为城市间清洁旅行而打造的电动飞机
- xiLinux上安装ESXi的指南(linux安装es)
- 使用Sqlserver实现数据无缝转移至Elasticsearch(Sqlserver转es)
- 比较Redis与ES在查询方面的优劣(查询放redis还是es)
- 电商搜索ES与Redis的黄金组合(电商搜索es和redis)
- 使用ES连接Oracle一种简单的解决方案(es连接oracle)
- 深入比较ES数据库与Oracle数据库(es数据库和oracle)
- 简单快捷ES数据导出到Oracle(es数据导出oracle)
- ES和Oracle一种新的数据处理方案(es和oracle)
- 抉择存储数据的最佳选择 ES 还是 Redis(存es还是redis)
- Redis与Elasticsearch 携手打造无限可能(redis配合ES)