文档章节

搜索引擎的分片(shard)和副本(replica)机制

杨尚川
 杨尚川
发布于 2014/08/30 23:10
字数 344
阅读 1368
收藏 2

搜索引擎通过分片(shard)和副本(replica)实现了高性能、高伸缩和高可用。

 

分片技术为大规模并行索引和搜索提供了支持,极大地提高了索引和搜索的性能,极大地提高了水平扩展能力;

 

副本技术为数据提供冗余,部分机器故障不影响系统的正常使用,保证了系统的持续高可用。

 

2个分片和3份副本的索引结构如下所示:

 



 

一个完整的索引被切分为0和1两个独立部分,每一部分都有2个副本,即上图的灰色部分。

 

在 生产环境中,随着数据规模的增大,只需简单地增加硬件机器节点即可,搜索引擎会自动地调整分片数以适应硬件的增加,当部分节点退役的时候,搜索引擎也会自 动调整分片数以适应硬件的减少,同时可以根据硬件的可靠性水平及存储容量的变化随时更改副本数,这一切都是动态的,不需要重启集群,这也是高可用的重要保 障。


© 著作权归作者所有

杨尚川

杨尚川

粉丝 1103
博文 220
码字总数 1624053
作品 12
东城
架构师
私信 提问
搭建高可用MongoDB集群(分片)

MongoDB基础请参考:http://blog.51cto.com/kaliarch/2044423 MongoDB(replica set)请参考:http://blog.51cto.com/kaliarch/2044618 一、概述 1.1 背景 为解决mongodb在replica set每个从......

KaliArch
2017/12/04
0
0
Elasticseach(2)

1、Elasticseach对复杂分布式机制的透明隐藏特性 分片、cluster discovery、shared负载均衡,shared副本 请求路由、集群扩容、shared重分配 2、Elasticseach的垂直扩容与水平扩容 (1)垂直扩容...

会说话的鱼
2018/05/07
0
0
MongoDB 3.4 shard 分片

数据压力大到机器支撑不了的时候能否做到自动扩展? 在系统早期,数据量还小的时候不会引起太大的问题,但是随着数据量持续增多,后续迟早会出现一台机器硬件瓶颈问题的。而MongoDB主打的就是...

cstsncv
2017/07/04
0
0
Ambari 增加mongodb cluster

我们先看一下mongodb cluster 生产上集群架构,如下图 Mongos:mongos的实例,客户端直接连接mongos,由mongos把读写请求路由到指定的Shard上去。一个Sharding集群,可以有一个mongos,也可以...

litterMo
2016/06/17
746
0
mongodb 3.4 集群搭建:分片+副本集

mongodb是最常用的nodql数据库,在数据库排名中已经上升到了前六。这篇文章介绍如何搭建高可用的mongodb(分片+副本)集群。 在搭建集群之前,需要首先了解几个概念:路由,分片、副本集、配...

纯洁的虫纸
2017/08/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Qt qml 自定义消息提示框

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/a844651990/article/details/78376767 Qt qml 自定义消息提...

shzwork
昨天
1
0
Linux安装JDK

(rpm) ⒈下载:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html ⒉安装 rpm -ivh jdk-8u202-linux-x64.rpm ⒊配置环境变量 vim /etc/profile 添加......

无名氏的程序员
昨天
2
0
The POM for xxx is invalid, transitive dependencies (if any) will not be available

The POM for xxx is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details 问题描述 在使用maven打包时,log信息中打印出:[**WARNIN......

lwenhao
昨天
6
0
setState() called after dispose() flutter

# 在setState前加入以下判断if (!mounted) return;

zdglf
昨天
4
0
docker和docker-compose二种方式安装mysql8.0

Docker方式安装 在命令行下运行 docker run -d -p 3306:3306 --restart always --privileged=true--name mysql-e MYSQL_USER="test" -e MYSQL_PASSWORD="test" -e MYSQL_ROOT_PASSWOR......

小白的成长
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部