Solr 进阶

Solr索引过程

Solr 进阶_第1张图片

solr 检索过程

Solr 进阶_第2张图片

Solr Cloud简介

Solr Cloud的拓扑结构

      Solr是一个基于Lucene的一个全文检索引擎,依赖Lucene提供高效的信息检索服务。SolrCloud是Solr4.0的一个主要特性,提供自动的、横向扩展的分布式检索能力。SolrCloud中索引的逻辑拓扑结构如下所示。

Solr 进阶_第3张图片

Solr Cloud的拓扑结构

Solr Cloud的物理拓扑如下图所示,

Solr 进阶_第4张图片

Solr Cloud的物理拓扑

Solr Cloud的基本概念

节点(Node) :一个运行Solr实例的JVM实例或一台服务器;

集群(Cluster) : 有一组Solr节点组成的作为一个整体来管理的集合;

核(Core) :一个独立的Solr实例,代表一个逻辑上的索引。一个节点上可以运行多个Solr核。

分片(Shard) : Solr中,一个专辑的逻辑分段称为一个分片,他可能分布在集群中的多个节点上,每个分片都可以有不同数量的备份。

主节点(Leader) :每个分片都有一个主节点,所有对文档的写请求都会路由到该节点。

专辑(Collection) : 表示一个逻辑上完整的索引。一个专辑可以分布在多个Solr核上,但是专辑内的分片只能使用相同的Schema定义文件。一个集群可以管理多个专辑。创建专辑的时候,需要指定分片的个数。同一组服务器上可能包含多个专辑,每个专辑的分片数可以不相同。

ZooKeeper : Apache ZooKeeper 在Solr Cloud中作为配置管理和名字空间管理服务存在,存储了统一的配置文件、同步分布式操作并且记录了集群的拓扑结构。

监督者(Overseer) :监督者用于协调集群中各个节点。监督者主要监控存在的节点和分片,并将分片分配到不同节点。

事物日志(Transaction Log) : 每个节点都维护着一个写操作日志,该日志只能被追加。

文档(Document) :一组域-值的组合。文档是存储的基本单元,通过索引来定位他们。默认情况下文档通过标准的哈希算法指派到不同的分片上。Solr中的文档是版本化的,每一次写操作都会设置文档的版本。

Solr Cloud的优缺点总结

便捷性

  • 开箱即用:提供了基于Jetty的实例,解压后即可直接运行;
  • 集成方便:部署、维护均无需特别配置,方便集成到第三方系统中;
  • 提供友好的管理页面。

灵活性

  • 非标准化文档

                 优点:非标准化文档,文档内容自治,便于横向扩展。
                 缺点:文档索引,修改一个域就要更新整个文档的索引。
    自定义Schema
                优点:
                用户可以在Schema.xml文件中自定义域,可以指定该域是否索引、是否存储、是否多值、数据类型等属性;
    自定义数据类型,包括指定数据类型名称、数据处理类及其属性(如分词器、数据精度、停词集等);
                缺点:只能通过修改schema.xml来修改域数据类型,域数据类型变化时需全部重新索引。
    接口丰富
          优点:
                提供REST-Like接口,并提供该接口的多种语言API封装,如Java、python等;
                支持多种数据编码方式,如XML、JSON、CSV等。
    查询逻辑
                优点:支持丰富的查询逻辑,包括:

  • AND、OR、NOT布尔逻辑

  • ()优先级组合

  • */?通配符检索

  • []数值范围、日期范围、地理位置

  • ~语义相似度检索

  • ^加权检索

高效性
      优点:基于词条的检索性能优越,

  • 1 基于lucene的索引结构,词条的索引、查询效率很高;
  • 2 高效的智能缓存,重复的查询效率极高;
  • 3 支持NRT索引,索引期间的数据也可以被查到;

      缺点:

  • 1 前置通配符查询需要额外的开销;
  • 2 索引编制影响查询(主要影响缓存)。

数据处理
      优点: 1 支持分页;
      缺点:

  • 1 统计功能较弱,数据量较大时Facet功能无法正常使用;
  • 2 处理关系型数据能力差,join性能差;
  • 3 数据排序性能差(主要是无法支撑过大的数据规模),且占系统资源较多;
  • 4 不适合大规模数据提取。

扩展性
横向扩展
      优点:

  • 1 负载均衡
  • 2 支持多核,支持索引数据相互隔离
  • 3 横向扩展能力,节点越多性能越好

      缺点:

  • 1 一个索引分成几个分片在索引进行前确定,修改分片数的唯一方法就是重新索引全部数据;
  • 2 单个索引的容量不能太大(从测试看单索引单机达186G时已经有不少功能无法正常使用了),否则影响性能。

功能扩展
      优点:1 内部管线(pipeline)架构,功能扩展方便。
可用性
      优点:

  • 1 使用Zookeeper做集群协同,性能较好,可用性高;
  • 2 支持多备份,备份宕机自动切换;

      缺点:

  • 1 索引分多个分片,一个切片丢失就无法正常工作(如果没有备份)。

你可能感兴趣的:(大数据)