`
qindongliang1922
  • 浏览: 2183735 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117528
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:125921
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:59896
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71301
社区版块
存档分类
最新评论

SolrCloud之Sharding路由介绍

    博客分类:
  • Solr
阅读更多





在Solr4.4之后,Solr提供了SolrCloud分布式集群的模式,它带来的主要好处是:

(1)大数据量下更高的性能
(2)更好扩展性
(3)更高的可靠性
(4)更简单易用


什么时候应该使用SolrCloud(Shard)呢?

(1)更大的数据量
(2)更大的索引体积
(3)想并行索引和查询
(4)想自定义数据分区


SolrCloud路由的分类

A:显式路由(Composite) => 创建时明确指定shard数目,后期不能添加或者删除shard,单个shard可以split

创建collection方式:首次创建推荐提前在linux上把conf相关配置上传到zk上,然后在solr的admin进行创建, 除此之外,也支持curl和java api动态创建

独有技能:支持shard的split,不支持shard的动态添加和删除

特点:
(1)默认是基于通过hash(docid)来定位归属shard
(2)也支持在主键上加入路由字段进行路由,最多支持2级,查询时加入_route_ 参数,设置路由策略,用例如下:
一级路由例子:
china!1   usa!2
二级路由例子:
china!beijing!1   usa!nework!2
如果路由后,数据分布不均衡可对数据倾斜的路由,进行均衡,例子如下:
china/3!1   按1/8的shard个数,均衡数据,如果shard总数是24个,那么将会有3个shard存储china路由的数据
china!henan/2!1  按1/4的shard个数,均衡数据,如果shard总数是24个,那么将会有6个shard存储china!henan的数据目前固定只有1/8和1/4的比例分配,也就是只支持2,3这样的分配比例

B:隐式路由(Implict)=> 创建时明确指定shard数目,后期可以动态添加或者删除shard,但单个shard不能split

创建collection方式:首次创建推荐提前在linux上把conf相关配置上传到zk上,然后在solr的admin进行创建, 除此之外,也支持curl和java api动态创建。

独有技能:不支持shard的split,支持shard的动态添加和删除

特点:
真正的100%的手工路由,可根据业务规则进行shard设置,除此之外,支持shard的动态添加和删除,路由控制随心所欲,不像MySQL还得依赖中间件才能搞定,查询时加入_route_ 参数,设置路由策略


总结:
文章简单介绍了使用SolrCloud的好处,以及什么时候应该使用和其路由的种类与特点,路由话题在分布式系统中是一个高级技能,它与分而治之,按需所取的思想不谋而合sharding的功能并不是Solr,ElasticSearch独有,任何一个数据库存储系统都可以存在这个概念,在实际的开发应用场景中,需要根据业务一些特定的特点来合理划分维度和路由,使用得当,效率会大大提升,无论是写入还是查询,在考虑设计维度或者路由时,大部分可考虑时间,类别,等级,地区等一些字段,当然具体业务还需要具体分析,不能一概而论。



官网文档:
(1)文档路由
https://cwiki.apache.org/confluence/display/solr/Shards+and+Indexing+Data+in+SolrCloud#ShardsandIndexingDatainSolrCloud-DocumentRouting
(2)Collection API
https://cwiki.apache.org/confluence/display/solr/Collections+API



有什么问题可以扫码关注微信公众号:我是攻城师(woshigcs),在后台留言咨询。
技术债不能欠,健康债更不能欠, 求道之路,与君同行。

  • 大小: 62.5 KB
  • 大小: 40 KB
0
1
分享到:
评论

相关推荐

    56 solrCloud分布式搜索与索引过程

    - 当客户端向SolrCloud发送请求时,首先会被转发到ZooKeeper,ZooKeeper根据最新的集群状态信息将请求路由到合适的Solr节点。 - Solr节点内部,请求可能还需要进一步转发到特定的core或者shard副本。 - 在分布式...

    solr入门java工程

    4. 分布式搜索的概念,特别是SolrCloud的Sharding和Replication机制。 5. 如何配置和使用CloudSolrClient进行SolrCloud的交互。 通过深入研究这个入门工程,你将能够熟练掌握Solr与Java的结合使用,为构建基于华为...

    Solr学习

    2. 分布式索引:索引数据被路由到对应分片的领导者节点,领导者对数据进行处理并更新索引,然后将更改通知给跟随者节点。 3. 查询处理:查询请求也被发送到任意节点,该节点会查询ZooKeeper以确定哪个节点拥有所需...

    solr集群-tools.zip

    7. **负载均衡**:SolrCloud可以通过设置路由规则和负载均衡策略,将请求分发到合适的节点,确保资源的有效利用。 8. **查询与索引**:Solr支持丰富的查询语法和索引优化策略,如近实时搜索(NRT)、查询优化器等,...

    solr 分布式参考

    2. **自动文档路由**: SolrCloud可以根据文档的特定字段(通常是_id字段)自动确定文档应该存储在哪个分片上,这个过程叫做“路由”。 3. **更新与删除**: 更新和删除操作也是分布式的,会同步到所有相关分片和副本...

    solr集群搭建

    8. **负载均衡与路由**:SolrCloud会自动处理请求的路由和数据分片,但你可以通过配置`router.field`来指定如何将文档分发到不同的分片。 9. **数据导入**:使用Solr的数据导入处理程序(DIH)或者SolrJ库将数据...

    java solr开发

    - **路由与复制**:根据Sharding策略,查询和更新请求会被正确地路由到相应的Solr节点。 4. **Solr开发** - **API使用**:Solr提供了HTTP RESTful API,可以使用Java客户端库或者直接发送HTTP请求进行交互。 - *...

    solr 集群搭建1

    9. **SolrCloud模式**:Solr 4.x引入了SolrCloud模式,通过Zookeeper管理Solr实例,实现了自动Sharding和Replication。在这种模式下,Solr集群的扩展性和高可用性得到了显著提升。 10. **数据分布与查询**:在...

    solr搜索引擎

    2. **自动故障转移**:当某个节点故障时,SolrCloud能自动将请求路由到其他可用节点。 七、监控与管理 1. **Solr Admin UI**:提供直观的Web界面,用于管理Core、查看索引、执行查询、监控系统状态等。 2. **JMX...

    solr6.6.0源码

    3. **集合(Collections)与分片(Sharding)**:Solr 6.6.0支持多文档集合,并可以将它们分布在多个分片上,实现水平扩展。 4. **复制(Replication)**:用于保证数据的一致性和冗余,防止单点故障。 5. **Cloud...

    solr4.9+tomcat+zookeeper集群

    1. **Sharding**: Solr集群通过分片技术将大量数据分散到多个节点上,每个节点处理一部分数据,以提高查询性能和并发处理能力。 2. **Replication**: 为确保数据冗余和容错,Solr集群中的每个分片都有一个或多个副本...

Global site tag (gtag.js) - Google Analytics