前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >solr基本概念

solr基本概念

作者头像
create17
发布2019-03-15 15:42:33
1.4K0
发布2019-03-15 15:42:33
举报

开发环境说明:

ambari v2.6.1

Solr v5.5.5

笔者使用的ambari来自动化安装的Solr


一、什么是Solr,及其主要特点

其实简单的说,Solr是一个基于Apache Lucene 项目的开源企业级搜索平台,是用JAVA编写的、运行在Servlet容器中的一个独立的全文搜索服务器(换句话说就是个JAVA-WEB APP),并具有类似REST的HTTP/XML和JSON的API。

主要功能包括全文检索,高亮命中,分面搜索(faceted search),近实时索引,动态集群,数据库集成,富文本索引,空间搜索;通过提供分布式索引,复制,负载均衡查询,自动故障转移和恢复,集中配置等功能实现高可用,可伸缩和可容错。

  • Advanced Full-Text Search Capabilities(高级全文搜索能力)
  • Optimized for High Volume Traffic(大数据性能优化)
  • Standards Based Open Interfaces - XML, JSON and HTTP(标准的XML,JSON,HTTP接口)
  • Comprehensive Administration Interfaces(综合管理界面)
  • Easy Monitoring(易于监控)
  • Highly Scalable and Fault Tolerant(高可扩展和容错力)
  • Flexible and Adaptable with easy configuration(通过简单配置带来灵活性和适应性)
  • Near Real-Time Indexing(近乎实时的索引)
  • Extensible Plugin Architecture(可扩展的插件构架)

扩展:Solr和Lucene之间的关系

  • Solr是Lucene的一个子项目,它在Lucene的基础上进行包装,成为一个企业级搜索服务器开发框架。
  • Solr与Lucene的主要区别体现在:
  • Solr更加贴近实际应用,是Lucene在面向企业搜索服务领域的扩展;
  • Solr的缓存等机制使全文检索获得性能上的提升;通过配置文件的开发使得Solr具有良好的扩展性;
  • Solr提供了用户友好的管理界面与查询结果界面。

简单讲:Solr使用Lucene并且扩展了它!

二、Solr目录结构

以使用ambari安装的solr为例,源码路径: /usr/lib/ambari-infra-solr

三、重要的配置文件

Solr5的主要配置文件有 solrconfig.xmlmanaged-schema,另外一些还有 solr.xml, 数据导入配置, ZooKeeper配置等。这里先提示记录一下

四、SolrCloud概念

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

SolrCloud是基于Solr和Zookeeper的分布式搜索方案,它的主要思想是使用Zookeeper作为集群的配置信息中心。该模式下有Cluster,Node,Collection,Shard,LeaderCore,ReplicationCore等重要概念。

1. Cluster集群:

Cluster是一组Solr节点,逻辑上作为一个单元进行管理,整个集群必须使用同一套schema和SolrConfig。

2. Node节点:

一个运行Solr的JVM实例。

3. Collection:

在SolrCloud集群中逻辑意义上的完整的索引,常常被划分为一个或多个Shard,这些Shard使用相同的Config Set,如果Shard数超过一个,那么索引方案就是分布式索引。SolrCloud允许客户端用户通过Collection名称引用它,这样用户不需要关心分布式检索时需要使用的和Shard相关参数。

4. Core:

也就是Solr Core,一个Solr中包含一个或者多个Solr Core,每个Solr Core可以独立提供索引和查询功能,Solr Core的提出是为了增加管理灵活性和共用资源。SolrCloud中使用的配置是在Zookeeper中的,而传统的Solr Core的配置文件是在磁盘上的配置目录中。

5. Config Set:

Solr Core提供服务必须的一组配置文件,每个Config Set有一个名字。最小需要包括solrconfig.xml和schema.xml,除此之外,依据这两个文件的配置内容,可能还需要包含其它文件,如中文索引需要的词库文件。Config Set存储在Zookeeper中,可以重新上传或者使用upconfig命令进行更新,可使用Solr的启动参数bootstrap_confdir进行初始化或更新。

6. Shard分片:

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

7. Replica:

Shard的一个拷贝。每个Replica存在于Solr的一个Core中。换句话说一个Solr Core对应着一个Replica,如一个命名为“test”的collection以numShards=1创建,并且指定replicationFact为2,这会产生2个replicas,也就是对应会有2个Core,分别存储在不同的机器或者Solr实例上,其中一个会被命名为testshard1replica1,另一个命名为testshard1replica2,它们中的一个会被选举为Leader。

8. Leader:

赢得选举的Shard replicas,每个Shard有多个Replicas,这几个Replicas需要选举来确定一个Leader。选举可以发生在任何时间,但是通常他们仅在某个Solr实例发生故障时才会触发。当进行索引操作时,SolrCloud会将索引操作请求传到此Shard对应的leader,leader再分发它们到全部Shard的replicas。

9. Zookeeper:

Zookeeper提供分布式锁功能,这对SolrCloud是必须的,主要负责处理Leader的选举。Solr可以以内嵌的Zookeeper运行,也可以使用独立的Zookeeper,并且Solr官方建议最好有3个以上的主机。

zookeeper的主要作用有:

  • 集中配置存储以及管理。
  • 集群状态改变时进行监控以及通知。
  • shard leader的选举。
  • 自动容错
  • 近实时搜索
  • 查询时自动负载均衡
五、Collection逻辑图

解释:

  • 从上图可以看到,有一个collection,被分为两个shard,每个shard分为三个replica,其中每个shard从自己的三个replica选择一个作为Leader。
  • 每个shard的replica被分别存储在三台不同的机器(Solr实例)中,这样的目的是容灾处理,提高可用性。如果有一个机器挂掉之后,因为每个shard在别的机器上有复制品,所以能保证整个数据的可用,这是Solrcloud就会在还存在的replica中重新选举一个作为这个shard的Leader。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-12-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据实战演练 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、什么是Solr,及其主要特点
  • 二、Solr目录结构
  • 三、重要的配置文件
  • 四、SolrCloud概念
    • 1. Cluster集群:
      • 2. Node节点:
        • 3. Collection:
          • 4. Core:
            • 5. Config Set:
              • 6. Shard分片:
                • 7. Replica:
                  • 8. Leader:
                    • 9. Zookeeper:
                    • 五、Collection逻辑图
                    相关产品与服务
                    负载均衡
                    负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档