淘淘商城第58讲——第一次认识SolrCloud,请多多指教!

阿昀的淘淘商城系列 同时被 2 个专栏收录
54 篇文章 17 订阅

本文我只是简单地介绍一下SolrCloud,如果大家真要是特别感兴趣的话,那么可以参考《SolrCloud之分布式索引及与Zookeeper的集成》这篇文章进行学习。

SolrCloud的概述

什么是SolrCloud?

Lucene是一个用Java语言编写的利用倒排原理实现的文本检索类库,而Solr是以Lucene为基础实现的文本检索应用服务。SolrCloud是Solr 4.0版本开发出的具有开创意义的基于Solr和Zookeeper的分布式搜索方案,主要思想是使用Zookeeper作为集群的配置信息中心。也可以说,SolrCloud是Solr的一种部署方式,除SolrCloud之外,Solr还可以以单机方式和多机Master-Slaver方式进行部署。

SolrCloud的应用场景

SolrCloud(Solr云)是Solr提供的分布式搜索方案,当你需要大规模、容错、分布式索引和检索能力时就可以使用SolrCloud了。一个系统的索引数据量少的时候是不需要使用SolrCloud的,但是当索引量很大,搜索请求并发很高的时候,这时就需要使用SolrCloud来满足这些需求了。

你不禁想问了,分布式索引到底是个什么鬼东西啊?分布式索引是指当索引越来越大,一个单一的系统无法满足磁盘需求的时候,或者一次简单的查询实在要耗费很多时间的时候,我们就可以使用Solr的分布式索引了。在分布式索引中,原来的大索引,将会分成多个小索引,Solr可以将这些小索引返回的结果合并,然后返回给客户端。

SolrCloud中完整索引(Collection)的逻辑图

SolrCloud中完整索引(Collection)的逻辑图如下图所示。
这里写图片描述
在SolrCloud模式下Collection是访问Cluster的入口,这个入口有什么用呢?比如说集群里面有好多台机器,那么访问这个集群需要通过哪个地址呢,所以这时必须要有一个接口地址,Collection就是这个接口地址。可见Collection是一个逻辑存在的东西,因此是可以跨Node的,在任意节点上都可以访问Collection。Shard其实也是逻辑存在的,因此Shard也是可以跨Node的。1个Shard下面可以包含0个或者多个Replica,但1个Shard下面能且只能包含一个Leader,如果Shard下面的Leader挂掉了,那么会从Replica里面再选举一个Leader。

SolrCloud的工作模式

首先来看下索引和Solr实体的对照图。
这里写图片描述
从上图中可以看到,SolrCloud中包含有多个Solr Instance,而每个Solr Instance中又包含有多个Solr Core,Solr Core对应着一个可访问的Solr索引资源,每个Solr Core对应着一个Replica或者Leader,这样,当Solr Client通过Collection访问Solr集群的时候,便可通过Shard分片找到对应的Replica(即Solr Core),从而就可以访问索引文档了。

在SolrCloud模式下,同一个集群里所有Core的配置都是统一的,Core有Leader和Replica两种角色,每个Core一定属于一个Shard,Core在Shard中扮演Leader还是Replica的角色是由Solr内部的Zookeeper来自动协调的。

访问SolrCloud的过程是Solr Client向Zookeeper咨询Collection的地址,Zookeeper返回存活的节点地址以供访问,插入数据的时候由SolrCloud内部协调数据分发(内部使用一致性哈希)。

Solr集群的系统架构

Solr集群的系统架构如下图所示。
这里写图片描述
下面我稍微分析一下SolrCloud的物理结构和逻辑结构。

物理结构

三个Solr实例(每个实例包括两个Core),组成一个SolrCloud。

逻辑结构

索引集合包括两个Shard(Shard1和Shard2),Shard1和Shard2分别由三个Core组成,其中一个Master两个Slave,Master是由Zookeeper选举产生的,Zookeeper控制每个Shard上三个Core的索引数据一致,解决高可用问题。

用户发起索引请求分别从Shard1和Shard2上获取,以此解决高并发问题。

Collection

Collection在SolrCloud集群中是一个逻辑意义上的完整的索引结构。它常常被划分为一个或多个Shard(分片),而且它们使用相同的配置信息。比如,针对商品信息搜索可以创建一个Collection,Collection=Shard1+Shard2+…+ShardX。

Core

每个Core是Solr中一个独立运行单位,提供索引和搜索服务。一个Shard需要由一个Core或多个Core组成。由于Collection由多个Shard组成,所以Collection一般也由多个Core组成。

Master或Slave

Master是Master-Slave结构中的主结点(通常也说主服务器),Slave是Master-Slave结构中的从结点(通常也说从服务器或备服务器)。同一个Shard下Master和Slave存储的数据是一致的,这是为了达到高可用目的。

Shard

Collection的逻辑分片,每个Shard被划分成一个或者多个Replica,通过选举确定哪个是Leader。

  • 0
    点赞
  • 1
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:猿与汪的秘密 设计师:我叫白小胖 返回首页

打赏作者

李阿昀

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值