SolrCloud和MultiCore的区别

2019-03-27 01:27|来源: 网路

 

首先我们初步理解一下概念

SolrCloud_VS_MultiCore

 

SolrCloud模式下有 Cluster,Node,Collection,Shard,LeaderCore,ReplicationCore几个概念,这里我引用一下同事对官方概念的翻译:
* Cluster群集:群集是一组作为一个单元管理的Solr节点。整个群集必须使用同一套schema和solrconfig

* Node节点:一个运行Solr的JVM实例

* Shard碎片:一个分区通过指定的复制因子(replication factor)被存储在多个节点上。所有这些节点共同形成一个碎片。一个节点可能由多个碎片组成。

* Leader负责人:每个碎片(shard)都有一个节点标识作为它的领导。所有的写操作经过领导节点写入指定的分区。

* Replication Factor复制因子的最少数量的文件的副本群集维护

补充说一下:

Collection

这里没有说Collection是什么意思,我就用自己的理解给大家说明, Collection英文直译是集合的意思,在SolrCloud模式下Collection是访问Cluster的入口。这个入口有什么用呢?比如说集群里面有好多台机器,那么访问这个集群通过哪个地址呢,必须有一个接口地址,Collection就是这个接口地址。因此可见Collection是一个逻辑存在的东西,因此是可以跨Node的,在任意节点上都可以访问Collection。

Shard

Shard其实也是一个逻辑存在的东西,因此Shard也是可以跨Node的;
1个Shard下面能且只能包含一个Leader
1个Shard下面可以包含0个或者多个Replication
如果Shard下面的Leader挂掉了,会从Replication里面选举一个Leader。在Solr4.0这个版本这部分实现有不少问题:
Solr4.0的AdminGUI里面可以增加和删除Core,如果Shard里最后一个Core被删除了,Shard不会自动删除掉,会导致集群出错,我们fix了这部分代码;
Shard里面所有的Core宕机了,会导致不能继续插入新的记录,查询不受影响,个人认为应该可以插入到其它存活的Shard里面,因此我们fix了这部分代码;

SolrCloud的工作模式

SolrCloudCollection

 

在SolrCloud模式下,同一个集群里所有Core的配置是统一的,Core有leader和replication两种角色,每个Core一定属于一个Shard,Core在Shard中扮演Leader还是replication由Solr内部自动协调,目前没有找到人工干预的方法,也不需要干预,因为访问SolrCloud的过程:Solrj向Zookeeper咨询Collection的地址,Zookeeper返回存活的节点地址供访问,插入数据的时候由SolrCloud内部协调数据分发(内部使用一致性哈希)。

 

 

MultiCore的工作模式

SolrMultiCore

 

MulitCore模式下各Core之间是相互独立的,同一个Jvm下可以同时运行多个有不同配置的Core。当然在这种模式下,也可以通过参数同时访问多个Core,可以通过配置实现master->replication主从模式的复制,不过这些都需要自己编写的JavaApp来完成。


转自:http://www.solr.cc/blog/?p=99

相关问答

更多
  • 现在我们来剖析下这样一个简单的集群构建的基本流程: 先从第一台solr服务器说起: 1) 它首先启动一个嵌入式的Zookeeper服务器,作为集群状态信息的管理者, 2) 将自己这个节点注册到/node_states/目录下 3) 同时将自己注册到/live_nodes/目录下 4)创建/overseer_elect/leader,为后续Overseer节点的选举做准备,新建一个Overseer, 5) 更新/clusterstate.json目录下json格式的集群状态信息 6) 本机从Zookeeper ...
  • 1.搭建tomcat单机版solr 见我的上一篇博文solr安装-tomcat单机版 2.安装配置zookeeper 具体下载,安装,配置不详细说了,很简单。只列出我的关键配置项,如下: clientPort=4181 server.2=hadoop.datanode5.com:2888:9888 server.3=hadoop.datanode2.com:2888:9888 server.1=hadoop.datanode3.com:2888:9888 3. 配置solrCloud (1)先配置主服务器t ...
  • 5亿数据量,得考虑用solrcould分片了。使用solrcolud对索引分片,减小单个搜索实例的索引量来提高响应时间,当然使用replica可以提高并发效率。
  • SolrCloud 用多台机搭建一个SolrCore(即整个系统只有一套schema,solrconfig) MultiCore 是多个独立的服务,不同的core可以用几套schema,solrconfig。
  • 1)我假设通过多进程你的意思是将一个程序分成多个进程(通常使用POSIX系统中的fork()方法完成),而不是多任务处理。 多处理或多任务处理的通常定义是允许单个CPU通过非常频繁地在它们之间切换来运行看似并行的多个进程。 多核意味着单个CPU可以具有多个能够执行任务的核心,并且所有执行单元都以某种方式连接(取决于处理器的体系结构)。 除非您编写的是非常低级的软件,例如操作系统,否则这些事情通常对您的编程方式没有影响。 分叉过程(我相信你的意思)通常是通过操作系统提供的一些方法完成的,实际上是一个很大的主题 ...
  • 在SolrCloud中,您的每个Core都将成为Collection 。 每个Collection都有自己的一组配置文件和数据。 您可能会发现这个有用的移动多核SOLR实例到云 Solr 5.0(以后)对如何使用分片创建SolrCloud设置以及如何添加集合等进行了一些更改。 下面列出的所有内容都是我对Solr参考指南的理解。 我强烈建议彻底完成它。 https://cwiki.apache.org/confluence/display/solr/Apache+Solr+Reference+Guide 我在 ...
  • 通过编辑并行计算的“本地”配置,我解决了这个问题(使用2核心和4线程的核心i5): 转到Parallel->Manage Cluster Profiles 根据你的Matlab版本,你需要在更改任何东西之前Validate local配置文件。 点击edit并更改NumWorkers变量以适应您的需求。 然后你可以像这样开始matlabpool : matlabpool local 注意我从来没有使用parfor加速。 Matlab的开销总是超过了好处。 我所说的是:先测试你的代码,然后决定是否使用par ...
  • 最好的方法应该是将solr云升级到版本6.2.1。 如果节点是32位拱,它还取决于节点架构。 那么如果节点是64位arch,那么堆大小超过2gb就不会工作,你可以分配更多的堆大小但是会产生gc开销错误。 所以最好更新solr并添加更多分片和副本以避免错误。 The best approach should be to upgrade the solr cloud to version 6.2.1. it also depends on the node architecture if the node is ...
  • 云功能是Solr的一部分。 对于生产,您需要将ZooKeeper作为单独的应用程序(它也可以作为Solr的一部分运行,但不建议在生产中执行此操作) https://cwiki.apache.org/confluence/display/solr/SolrCloud Cloud features are a part of Solr. For production you would need to have ZooKeeper as separate application (it's can be run ...