2019独角兽企业重金招聘Python工程师标准>>>

solr4.0 正式发布有一段时间了,目前是BETA版,从ALpha版到beta新增加了collection的概念,本文就Solr4.0中的多个索引相关概念再做详细的说明。本文以beta版为基础

solr4.0 的所以继承Lucene的分段索引方式,采用了多shard的方式以提高在分布式云环境下的高性能要求的瓶颈。对于一个完整的文档集,将被分布到多个shard中进行索引存储,每个shard相对独立,有自己独立的indexwriter和searcher。shard是对完整文档集索引 分片(块)处理的体现,在solr的代码里每个shard都有一个solrCore对其维护管理。所以core是从solr代码的层面上讲的,而shard是从索引数据的分割角度来讲的。目前solr只允许一个core管理维护一个shard。

core 作为一个实例负责管理一个整个索引中的一个shard,对该shard进行索引的增删查改(update)。core是solr对索引单元管理的最小单位。而一个shard也拥有完整的lucene索引文件结构。几个shard的索引加在一起组成文档集的所有索引。

slice 是一组具有相同数据的shard构成的集合。通常建议3个shard作为一个slice,其中3个shard数据完全相同,但分布在不同的服务器上,以起到互相备份的作用,最终实现容灾和高可靠性的要求。如下图,一个两个服务器组成的solr 集群。该集群中只有一个collection(collection one),该collection中有两个slice,每个slice由2个shard构成。slice的两个shard分布在不同的服务器上以到达容灾目的。

collection是一个逻辑的概念,用来组织多个slice。一个collection包含整个文档集的索引数据(完整)。collection的作用是为了实现多租户的功能。即多个用户(公司)要在一个solr集群上索引各自的数据。这样,各客户间的数据不能交叉,因为A客户的数据可能不希望让B客户访问。为了逻辑上和物理上隔离客户间的数据,产生了collection。一个collection索引并存放一个客户的数据。在一个collection里面又有多个silce。多slice保证吞吐量的要求(每个slice都可以处理索引请求并提供search服务)。

replica是shard的备份,目前1个shard就是一个replica。所以我们可以说每个slice有多个shard构成或者说多个replica构成。其中slice中的replica又有不同的职责,其中有且仅有一个作为主要的服务者,我们称其为leader replica 其他的备份的作为普通的replica。普通replica以 leader replica马首是瞻,保持与leader replica的同步。即普通replica索引的数据不能多于leader replica的索引。leader replica索引的增减直接影响普通replica的索引增减,普通 replica 向leader replica看齐,保持一致。如果当前某个leader replica死掉,将引发新的选举,产生新的leader replica,之后其他普通replica将向新的leader replica保持一致。

下面以一个具体部署的实例的admin工具看到的graph为例说明:

该集群由3台server组成。 只配置了1个collection(collection1),该collection 由 10 个slice组成。图中 的shard1~10实际上应该称作slice1~10 (该admin工具赋予的名称容易误导开发者)。而每个slice下面的每个圆圈表示一个replica,实心圆圈表示leader replica,空心为普通replica,灰色的圆圈表示死掉的replica(如服务器down掉)。 目前从图上可以看出,每个slice由3个replica 构成。(同个slice中的3个replica的数据相同,保存在不同的服务器上,起到备份作用)。

从shard的角度讲,1个replica里保存一份shard。1个slice中有一份唯一的shard(unique shard),但该shard有两个备份,同 unique shard 内容相同。

从core的角度讲,每个replica又一个core维护管理。core负责处理索引请求和搜索请求,以及该replica的索引文件管理,如merge等。所以该例子中总共有30个core,30个replica(其中10个leader replica),10个slice。30个core平均分布在3太server上,每个server10个core。每个server为每个slice保存了一份replica。 每个slice都有3份replica分别在不同的3个server上(X.X.X.251-253)。

转载于:https://my.oschina.net/cloudcoder/blog/338031

solrcloud replica collection core shard slice 概念讲解相关推荐

  1. 基于keras的深度学习基本概念讲解

    基于keras的深度学习基本概念讲解 Tensorflow1.0正式发布,谷歌首届Tensorflow开发者大会在山景召开,深度学习迎来新的高潮和狂欢.随着深度学习框架的普及和推广,会有越来越多人加入 ...

  2. EL:集成学习(Ensemble Learning)的概念讲解、问题应用、算法分类、关键步骤、代码实现等相关配图详细攻略

    EL:集成学习(Ensemble Learning)的概念讲解.算法分类.问题应用.关键步骤.代码实现等相关配图详细攻略 目录 集成学习Ensemble Learning 1.集成学习中弱分类器选择 ...

  3. STM32驱动开发(二)--USB Device RNDIS虚拟网卡(USB2.0 基础概念讲解)

    STM32驱动开发(二)–USB Device RNDIS虚拟网卡(USB2.0基础概念讲解) 一.简介   本文基于stm32 Rndis实例,github开源, 使用STM32F407单板.结合协 ...

  4. React微前端模块联盟概念讲解

    React&微前端&模块联盟概念讲解@react,webpack,微前端 什么是微前端? 微前端架构(micro frontends architecture)设计风格为应用程序的前端 ...

  5. OpenERP库存管理的若干概念讲解(新增库存价值)

    OpenERP库存管理的若干概念讲解(新增库存价值) « 于: 六月 03, 2011, 09:01:50 下午 » 一.复式库存(Double-Entry Stock Management)和库存移 ...

  6. 计算机语言中函数的概念,什么是函数,什么是公式,两者的概念讲解及比较

    在这个VBA与GO语言的平台上,我一直在不遗余力地推广我的观点:这个平台是主要讲VBA语言,但这里的VBA语言不单单只是抽象的代码,大多数是实战的例子.这些例子是以函数为载体,以GO思想为指导.无论函 ...

  7. maya 2014帮助手册中 三维概念讲解

    maya 2014 帮助手册中   三维概念讲解 多边形简介 三个或更多的边,   顶点    边    面  组成 经常使用三边形或四边形来建模   n边形不常用 单个多边形称为面   多个面连接到 ...

  8. 三种函数指针的表达以及函数指针概念讲解

    三种函数指针的表达以及函数指针概念讲解 函数指针的概念 三种表达函数指针的方法 函数指针的概念 如果在程序中定义了一个函数,那么在编译时系统就会为这个函数代码分配一段存储空间,这段存储空间的首地址称为 ...

  9. 简述python程序结构_python架构的概念讲解

    Python就是这样一门受到全世界各地开源社区支持的语言,Python可以用来开发各种小工具软件.web应用.科学计算.数据分析等等. 本篇文章是关于Python构架的讲解,希望对于正在学习Pytho ...

最新文章

  1. 《Objective-c》Foundation框架 -(字符串:NSString和NSMutableString)
  2. 为什么程序return -1或exit(-1)而获取到的值是255
  3. 那些做中台的程序员,后来都怎么样了?
  4. 无法复制winevt中的文件_u盘文件无法复制怎么解决 u盘文件无法复制解决方法【详细步骤】...
  5. 【发布】JEECG-P3 新主题后台风格(H5扁平化)
  6. tensorflow:图(Graph)的核心数据结构与通用函数(Utility function)
  7. 使用Dockerfile制作jre环境基础镜像
  8. Gephi从入门到精通
  9. java voip 的sip服务器搭建_SIP服务器,搭建自己的VoIP平台 | 学步园
  10. 电信光猫破解 (打开无线wifi及路由功能)
  11. linux 断开远程vnc,Linux停VNC远程控制的使用方法
  12. python模拟支付宝扫码登录_Python爬虫模拟登录支付宝并获取订单信息
  13. 数据挖掘与数据分析项目链家租房数据(二)从性价比看链家推荐是否存在套路。
  14. 信达生物港交所上市:重点锁定肿瘤领域 募资33亿港元
  15. 洛谷1852 BZOJ2144 跳跳棋 思维题
  16. target=_blank和target=_black
  17. 修改USB默认选中MTP模式
  18. 4种常见分支模式解析及优劣对比 | 研发效能提升36计
  19. “人工智能基础”课程笔记
  20. lazada爆单大卖的选品技巧是什么?五个分析是关键核心

热门文章

  1. Java 连接各种数据库
  2. 进度条(python 实现)
  3. python中的全局变量与局部变量
  4. break 与continue 语句
  5. 在LoadRunner脚本中处理HTTP重定向
  6. java list 查找_java面试之容器
  7. 将svn设置开机启动linux,ubuntu安装SVN并设置开机启动
  8. es java match_ES multi_match 和match查询
  9. 【Matlab 控制】构建系统,绘制零极点
  10. 2.15 Python 中的广播-深度学习-Stanford吴恩达教授