【SolrCloud】——SolrCloud集群介绍

什么是solrcloud

solrcloudsolr云)是solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力的时候使用solrcloud。当一个系统的索引量少的时候其实并不需要使用solrcloud,当索引量很大,搜索请求并发很高,这时需要使用solrcloud来满足这些需求。

solrcloud基于solrzookeeper的分布式搜索方案,他的主要思想是使用zookeeper作为集群的配置信息中心。

主要功能

集中式的配置信息

自动容错

近实时搜索

查询是自动负载均衡

 

Zookeepersolrcloud中的作用

solrcloud使用zookeeper主要实现以下三个功能:

集中配置存储以及管理

集群状态改变时进行实时监控以及通知

shard leader选举

 

1zookeeper短连接

  zookeeper客户端与zookeeper建立一个短连接后在zookeeper新建一个Znode,客户端一直与zookeeper进行通信兵保证这个Znode一直存在。如果当客户端与zookeeper的短连接断开,这个Znode就会断开。在solrcloud中,/live_nodes下就会存在所有客户端的短连接,表示现在有哪些solr组成solrcloud

   solrzookeeper保持短连接时,这些solr主机就组成了solrcloud,如果其中一个solr的短连接断掉了,那么这个live_nodes下就少了一个Znodesolrcloud也就少了一个主机,于是zookeeper就会告诉其他生意的solr有一个solr挂掉了,等会进行查询以及leader数据分发的时候就不会经过刚才挂掉的那个solr了。

2zookeeper如何知道solr挂了呢?

    ZnodeWatcher是Zookeeper一个重要概念和特性,当Znode发生变化时候,Zookeeper会告诉所有在该Znode注册的Watcher这个Znode改变了,从而出发相应的事务。比如SolrCloud的/clusterstate.json Znode,SolrCloud的所有的Solr都会在这里进行注册,如果当有新的replica或者node下线了,所有的watcher就会收到通知,然后每一个Solr就会更新它的clusterstate。

3zookeeper的配置存储以及分布式管理

     Zookeeper在SolrCloud的一个重要的功能是存储SolrCloud的配置以及对配置进行分布式管理。我们可以将配置信息(比如solrconfig.xml和schmea.xml)上传至Zookeeper,如果这些配置信息发生变化Zookeeper就会将这些新的配置文件更新到集群中每一个Solr节点上,如果有新的Solr加入集群,那么Zookeeper就会传递给他一份配置文件,Zookeeper很好的完成了一个配置文件的存储以及分布式管理的功能。

4、Zookeeper Client Timeout

   当Solr加入集群后,会在Znode上建立短连接,当Solr下线时候,Zookeeper就会删除这个Znode。我们希望Zookeeper能够尽可能快的察觉出SolrCloud的集群状态变化。默认情况下,这个时间是15秒,我们可以设置zkClientTimeout这个配置来修改他。

 

 SolrCloud结构

     SolrCloud为了降低单机的处理压力,需要由多台服务器共同来完成索引和搜索任务。实现的思路是将索引数据进行Shard(分片)拆分,每个分片由多台的服务器共同完成,当一个索引或搜索请求过来时会分别从不同的Shard的服务器中操作索引。SolrCloud需要Solr基于Zookeeper部署,Zookeeper是一个集群管理软件,由于SolrCloud需要由多台服务器组成,由zookeeper来进行协调管理。


 【SolrCloud】——SolrCloud集群介绍_第1张图片

1、物理结构

三个solr实例(每个实例包括连个core),组成了一个solrcloud

2、逻辑结构

索引集合:包含两个shardshard1shard2),shard1和shard2分别由三个Core组成,其中一个Leader两个Replication,Leader是由zookeeper选举产生,zookeeper控制每个shard上三个Core的索引数据一致,解决高可用问题。用户发起索引请求分别从shard1和shard2上获取,解决高并发问题。

collection:Collection在SolrCloud集群中是一个逻辑意义上的完整的索引结构。它常常被划分为一个或多个Shard(分片),它们使用相同的配置信息。

Core:每个coresolr中一个独立运行单位,提供索引和搜索服务。一个shard需要一个core或者多个core组成。由于collection由多个shard组成所以collection一般由多个core组成

Master或Slave

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

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

 

你可能感兴趣的:(【SolrCloud】——SolrCloud集群介绍)