SolrCloud阶段总结
http://www.cnblogs.com/guozk/p/3498844.html
SolrCloud阶段总结
| 
 开发类型  | 
 全文检索相关开发  | 
|
| 
 Solr版本  | 
 4.2  | 
|
| 
 文件内容  | 
 本文介绍SolrCloud的功能使用及相关注意事项  | 
|
| 
 在代码文本框中如有显示不全的,请在文本框中按Ctrl+A再复制.  | 
||
| 
 版本  | 
 作者/修改人  | 
 日期  | 
| 
 V1.0  | 
 gzk  | 
 2013-06-04  | 
SolrCloud是基于Solr和Zookeeper的分布式搜索方案,是Solr4.X的核心组件之一,它的主要思想是使用Zookeeper作为集群的配置信息中心。

基本可以用上面这幅图来概述,这是一个拥有4个Solr节点的集群,索引分布在两个Shard里面,每个Shard包含两个Solr节点,一个是Leader节点,一个是Replica节点,此外集群中有一个负责维护集群状态信息的Overseer节点,它是一个总控制器。集群的所有状态信息都放在Zookeeper集群中统一维护。从图中还可以看到,任何一个节点都可以接收索引更新的请求,然后再将这个请求转发到文档所应该属于的那个Shard的Leader节点,Leader节点更新同时把文档转发给同属于一个Shard的所有replicas节点。
SolrCloud有几个特色功能:
1)集中配置
2)自动容错
3)负载均衡 。
SolrCloud的配置过程
这里为了方便建了4个bat文件并分别命名为对应的角色,先说一下配置的参数:
| 
 参数名  | 
 说明  | 
| 
 -Dbootstrap_confdir  | 
 是上传本地的配置文件上传到zookeeper中去,作为整个集群共用的配置文件  | 
| 
 -Dcollection.configName  | 
 是上传的Solr配置在集群中的名了,如不指定默认为collection1  | 
| 
 -DzkRun  | 
 启动一个嵌入式的Zookeeper服务器,它会作为solr服务器的一部分  | 
| 
 -DnumShards  | 
 指定了集群的逻辑分组数目  | 
| 
 -DzkHost  | 
 是指明了Zookeeper集群所在位置  | 
- SolrCloudServer-Master-Zookeeper-Host.bat
 
| 
 java -Dbootstrap_confdir=./solr/skyCore/conf -Dcollection.configName=myconf -DzkRun -DzkHost=localhost:9983,localhost:8574,localhost:9900 -DnumShards=2 -jar start.jar  | 
上面的意思是启动一个主SolrCloud服务同时启动内嵌的Zookeeper服务,并上传本地的Solr配置文件到Zookeeper集群中,其中还配置了3个Zookeeper服务器组成一个集群,确保Solr集群信息的高可用性和容错性。当Zookeeper服务为3个以上时,能够更好的实现容灾问题,当为3个Zookeeper服务时挂掉其中一个Zookeeper集群服务还会正常运行,当为5个Zookeeper服务时挂掉两个还是可以正常运行,就像盘阵的Raid机制一样.只有当所有配置的Zookeeper服务都启动后整个服务才会继续运行下去.
- SolrCloudServer-Slave-Zookeeper-Host-7574.bat
 
| 
 java -Djetty.port=7574 -DzkRun -DzkHost=localhost:9983,localhost:8574,localhost:9900 -jar start.jar  | 
上面的意思是启动一个主SolrCloud服务同时启动内嵌的Zookeeper服务,其中还配置了3个Zookeeper服务器地址.
- SolrCloudServer-Slave-Zookeeper-Host-8900.bat
 
| 
 java -Djetty.port=8900 -DzkRun -DzkHost=localhost:9983,localhost:8574,localhost:9900 -jar start.jar  | 
上面的意思是启动一个主SolrCloud服务同时启动内嵌的Zookeeper服务,其中还配置了3个Zookeeper服务器地址.
- SolrCloudServer.bat
 
| 
 java -Djetty.port=7500 -DzkHost=localhost:9983,localhost:8574,localhost:9900 -jar start.jar  | 
上面的意思是启动一个主SolrCloud服务.并配置了Zookeeper服务器所在. 当服务启动成功后可以在管理界面中SolrCloud情况,通过Cloud->Tree可以查看当前详细的服务情况,如图:
通过上面的图我们可以看到当前有两个shard,每个shard下面有两个节点,还可以看到刚才配置中指定的myconf名称,点开后就可以看到上传的配置文件了,点击下面第一个节点都可以看到
集群状态json:
| 
 {"skyCore":{ "shards":{ "shard1":{ "range":"80000000-ffffffff", "state":"active", "replicas":{ "10.0.4.84:8983_solr_skyCore":{ "shard":"shard1", "state":"active", "core":"skyCore", "collection":"skyCore", "node_name":"10.0.4.84:8983_solr", "base_url":"http://10.0.4.84:8983/solr"}, "10.0.4.84:7500_solr_skyCore":{ "shard":"shard1", "state":"active", "core":"skyCore", "collection":"skyCore", "node_name":"10.0.4.84:7500_solr", "base_url":"http://10.0.4.84:7500/solr", "leader":"true"}}}, "shard2":{ "range":"0-7fffffff", "state":"active", "replicas":{ "10.0.4.84:7574_solr_skyCore":{ "shard":"shard2", "state":"active", "core":"skyCore", "collection":"skyCore", "node_name":"10.0.4.84:7574_solr", "base_url":"http://10.0.4.84:7574/solr"}, "10.0.4.84:8900_solr_skyCore":{ "shard":"shard2", "state":"active", "core":"skyCore", "collection":"skyCore", "node_name":"10.0.4.84:8900_solr", "base_url":"http://10.0.4.84:8900/solr", "leader":"true"}}}}, "router":"compositeId"}}  | 
SolrCloud集中式的配置信息
SolrCloud集群的所有的配置存储在ZooKeeper. 一旦SolrCloud节点启动时配置了Dbootstrap_confdir参数, 该节点的配置信息将发送到ZooKeeper上存储. 基它节点启动时会应用ZooKeeper上的配置信息,这样当我们改动配置时就不用一个个机子去更改了.
SolrCloud容灾备份
Shard Replica除了作为容灾备份存在, 另外一个作用就是分散查询请求, 提高整个集群对查询的负载能力.
SolrCloud索引处理
索引文档的更新在Shard和Replica之间是自动和实时的.把一个doc可以发送到任何一个SolrCloud, 然后由SolrCloud完成剩下的事情. SolrCloud会自动选择一个Shard进行分发任务,当一个Shard的leader收到文档后同时也会把doc分发给当前Shard所有的副本.
SolrCloud检索方式
有三种不同的检索方式:
- 在所有Shared上进行检索一个Core的数据
 
| 
 http://localhost:8983/solr/skyCore/select?q=*%3A*  | 
- 在指定的Shared上进行检索一个Core的数据
 
| 
 http://localhost:8983/solr/skyCore/select?q=*%3A*&shards=shard1,shard2  | 
- 也可以使用shard的地址作为参数
 
| 
 http://localhost:8983/solr/skyCore/select?q=*%3A*&shards= localhost:8983/solr,localhost:7574/solr  | 
- 在指定地址的Shared上进行检索,并支持负载一个Core的数据
 
| 
 http://localhost:8983/solr/skyCore/select?q=*%3A*&shards=localhost:8983/solr|localhost:8900/solr,localhost:7574/solr|localhost:7500/solr  | 
- 在所有Shared上进行检索指定的Core,并合并结果
 
| 
 http://localhost:8983/solr/skyCore/select?q=*%3A*&collection=TestCore,skyCore  | 
- 当有shard没有启动时查询是会报错的.为了让查询能正常进行,在查询时加入参数shards.tolerant=true就可以正常查询了.
 
| 
 http://localhost:8983/solr/skyCore/select?q=*%3A*&shards.tolerant=true  | 
SolrCloud的集合(SolrCores)管理API
- 添加集合
 
| 
 http://localhost:8983/solr/admin/collections?action=CREATE&name=mycollection&numShards=1&replicationFactor=4  | 
| 
 参数名  | 
 说明  | 
| 
 Name  | 
 要创建的集合名称  | 
| 
 numShards  | 
 指定集合Shard的数量  | 
| 
 replicationFactor  | 
 指定每个Shard副本数量  | 
| 
 maxShardsPerNode  | 
 每个Solr服务器节点上最大Shard数量  | 
| 
 createNodeSet  | 
 还不明白什么用  | 
| 
 collection.configName  | 
 配置的名称(必须已存储在ZooKeeper)使用这个新的集合。如果没有提供创建操作将默认配置名称的集合名称。  | 
- 删除集合
 
| 
 http://localhost:8983/solr/admin/collections?action=DELETE&name=mycollection  | 
- 重新加载
 
| 
 http://localhost:8983/solr/admin/collections?action=RELOAD&name=mycollection  | 
动态添加SolrCore示例
在服务运行时新添加的MyCore分布在3个Shared上面每个两个节点
| 
 http://localhost:8983/solr/admin/collections?action=CREATE&name=MyCore&numShards=3&replicationFactor=2  | 
SolrCloud阶段总结的更多相关文章
- 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇一:WPF常用知识以及本项目设计总结
		
篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...
 - 你真的会玩SQL吗?之逻辑查询处理阶段
		
你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...
 - Openfire阶段实践总结
		
从3月开始研究Openfire,其实就是要做一套IM系统,也正是这个原因才了解到Openfire.之前还真没想过有这么多的开源产品可以做IM,而且也没想到XMPP这个协议竟然如何强大.看来还是标准为先 ...
 - 【Win 10应用开发】分阶段进行数据绑定
		
使用x:Bind扩展标记进行数据绑定,是在编译阶段完成,至于说性能优化方面,大概主要是优化CPU资源的使用,因为免去了运行阶段进行绑定的过程.当然,使用这个标记仅仅是绑定上的优化,并不包括数据源.数据 ...
 - 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇二:基于OneNote难点突破和批量识别
		
篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...
 - 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇三:批量处理后的txt文件入库处理
		
篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...
 - 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇四:关于OneNote入库处理以及审核
		
篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...
 - 阶段一:用Handler和Message实现计时效果及其中一些疑问
		
“阶段一”是指我第一次系统地学习Android开发.这主要是对我的学习过程作个记录. 本来是打算继续做天气预报的优化的,但因为某些原因,我要先把之前做的小应用优化一下.所以今天就插播一下用Handle ...
 - 阶段一:为View设置阴影和弹出动画(天气应用)
		
“阶段一”是指我第一次系统地学习Android开发.这主要是对我的学习过程作个记录. 上一篇阶段一:通过网络请求,获得并解析JSON数据(天气应用)完成了应用的核心功能,接下来就要对它进行优化.今天我 ...
 
随机推荐
- mysql的优化措施,从sql优化做起
			
http://geeksblog.cc/2016/06/11/mysql-optimize/ 优化sql的一般步骤 通过show status了解各种sql的执行频率 定位执行效率低的sql语句 通过 ...
 - TCP/IP 编程
			
http://www.cnblogs.com/ggjucheng/archive/2012/08/18/2645324.html
 - 安装MySQL和HandlerSocket
			
CentOS 6.5MySQL 5.6.33HandlerSocket 1.1.2 # Get packagesshell> wget http://dev.mysql.com/get/Down ...
 - MySQL查询
			
DQL 操作 DQL 数据查询语言(重要) 数据库执行DQL语句不会对数据做出任何改变,而是让数据库发送结果集给客户端. 查询返回的结果是一张虚拟表. 查询关键字:SELECT ...
 - WebService学习笔记系列(三)
			
网上有一些提供webservice服务的网站,我们要怎么调用呢? 今天来看个如何调用手机归属地查询服务.这个网站上提供了许多webservice服务,其中包括手机归属地查询服务,我们今天就用wsimp ...
 - 《转载》CSS中的三种样式来源:创作人员、读者和用户代理
			
CSS中的样式一共有三种来源:创作人员.读者和用户代理,来源的不同会影响到样式的层叠方式,很多第一次学习CSS的朋友,对这三种来源可能会存在一些困惑,下面我写一下自己的理解,若有错误的地方还请指正. ...
 - Merge OUTPUT 高级用法综合写的一个MergeTab的存储过程
			
因为工作中常用到 合并两张表中的数据,主要是写下来给自己备忘,T-SQL 中 MERGE 的用法 WHEN MATCHED THEN UPDATE -- 中加了 后面要更新的列是否都相等,如果相等就没 ...
 - 深入理解shared pool共享池之library cache系列一
			
结论 1,oradebug dump library_cache不同级别dump的library cache内容及粒度会有所区别,具体见测试开始部分2,本文测示基于oradebug dump libr ...
 - Java23种设计模式之单例模式
			
一.单例模式简介 单例模式是Java设计模式中常见的一种模式.主要分为懒汉式单例.饿汉式单例.登记式单例: 单例模式的特点: 1.单例类只能有一个实例: 2.单例类必须自己创建自己的唯一的实例: ...
 - SOA,ESB 与 SCA
			
SOA,ESB与 SCA SOA 与 ESB SOA(Service Oriented Architecture),面向服务体系结构,是一种组件模型架构,一种支撑软件运行的相对稳定的结构.其本质是一种 ...