第一印象

SolrCloud是Solr4.0引入的,主要应对与商业场景。它很像master-slave,却能自动化的完成以前需要手动完成的操作。利用ZooKeeper这个工具去监控整个Solr集群,以了解集群间各个机器的工作状态。

配置的区别

从配置来看,SolrCloud和master-slave的主要区别在于是否有ZooKeeper节点。从下面这个配置概念图可知,SolrCloud集群最小的节点数都大于master-slave节点数,当然ZK节点不需要很强大,因为它只是用来监视和维护SolrCloud中的节点状态。

为什么有SolrCloud或者master-slave

  • 分片(Sharding)
    分片是在多台机器间拆分Solr索引。分片有时候是必须的,因为索引数据可能大到无法容纳在单台服务器上。通过分片,你可以在多台机器上分割索引,并持续增长而不会遇到问题。
  • 近实时搜索和增量索引(NRT Search)
    master-slave中每台机器上具有相同的索引数据,master负责索引数据,其他slaves负责检索数据。slaves在每隔固定的时间去master上拿新的索引数据。
    SolrCloud在每个shard中都有一个leader,其他的replica与leader数据基本相同。leader的额外任务就是分发索引到该shard下的所有replica。发送到SolrCloud中的所有文档都会被路由给leader节点(当replica收到文档时,也就是要更新索引时,它会把该文档添加到事务日志中,然后报告给leader,由leader执行这个任务)。这样的机制可以分布式更新索引,并且是持久化的。
  • 分布式查询和负载均衡(Load Balancing)
    在master-slave中,查询哪个节点就只会返回该节点的数据。如果想用分布式搜索来查询某一个节点,可能需要外部负载均衡器的支持。
    在SolrCloud中,分布式搜索可以自动被管理:查询任意一个节点,都会触发查询请求到其他shard中的某一个节点,只有聚合了所有分片的结果时,响应才返回。ZooKeeper知道所有的节点状态,一旦某个节点的挂了,就会向另一个节点发送查询请求。如果是leader节点挂了,还需要启动投票机制重新选leader。
  • 高可用性(High Availability)
    在master-slave中,如果master节点挂了,那么其他节点还是可以继续查询操作的,但是不能索引数据了,除非再手动添加master节点。这样一来,在重启master之前的更新操作会失败。
    在SolrCloud中,当ZooKeeper发现leader节点挂了,会立即启动投票机制重新选举leader。直到了leader被选出来,所有的更新操作都会记录在事务日志中,在leader选出来后,继续同步工作,确保没有数据丢失。

无论是master-slave还是SolrCloud模式,都可以提供replication机制。但是SolrCloud是自动处理路由和恢复,而master-slave在某个节点没有响应以后,需要一些手动的操作才能恢复。
master-slave配置会简单很多,而SolrCloud需要配置ZooKeeper,为了保证系统能持续不断的工作,还需要给ZooKeeper配置集群,需要额外的资源。

【转】 Solr的SolrCloud与Master-slave主从模式对比的更多相关文章

  1. Solr的SolrCloud与Master-slave主从模式对比

    第一印象 SolrCloud是Solr4.0引入的,主要应对与商业场景.它很像master-slave,却能自动化的完成以前需要手动完成的操作.利用ZooKeeper这个工具去监控整个Solr集群,以 ...

  2. redis的主从机制 master&slave

    转载自:https://www.cnblogs.com/qwangxiao/p/9733480.html 一:master&slave的解释? master&slave就是主从复制,主 ...

  3. MySql配置主从模式 Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.

    今天在学习MyCat环境搭建的时候,在配置MySql的主从模式,发现slave在配置完毕后,配置的内容全部正确的情况下,报错了? Last_IO_Error: Fatal error: The sla ...

  4. solr 主从模式和solrcloud集群模式

    主从模式 主节点有单点故障问题:没有主从自动切换,没有failover,主机down掉了的话,整个数据变成只读.并且需要一台机单独做索引,浪费资源,所有数据都需要在这台机器上单独存在一份,索引变化较大 ...

  5. show master/slave status求根溯源

    show master/slave status分别是查看主数据库以及副数据库的状态,是一种能查看主从复制运行情况的方式. 这里仅仅讨论linux下的nysql5.7.13版本的执行情况 一.show ...

  6. Windows下搭建MySQL Master Slave

    一.背景 服务器上放了很多MySQL数据库,为了安全,现在需要做Master/Slave方案,因为操作系统是Window的,所以没有办法使用keepalived这个HA工具,但是我们可以接受人工进行切 ...

  7. MongoDB学习笔记——Master/Slave主从复制

    Master/Slave主从复制 主从复制MongoDB中比较常用的一种方式,如果要实现主从复制至少应该有两个MongoDB实例,一个作为主节点负责客户端请求,另一个作为从节点负责从主节点映射数据,提 ...

  8. Windows下搭建MySQL Master Slave[转]

    Windows下搭建MySQL Master Slave 一.背景 服务器上放了很多MySQL数据库,为了安全,现在需要做Master/Slave方案,因为操作系统是Window的,所以没有办法使用k ...

  9. Redis主从复制(Master/Slave)

    Redis主从复制(Master/Slave) 修改配置文件 拷贝多个redis.conf文件分别配置如下参数: 开启daemonize yes pidfile port logfile dbfile ...

随机推荐

  1. [转]Xcode概览:调试应用程序

    原文网址: blog.csdn.net/fhbystudy/article/details/12856261 本文由CocoaChina翻译组成员Creolophus(github主页)翻译自苹果官方 ...

  2. 牛客网NOIP赛前集训营-提高组(第四场)B题 区间

    牛客网NOIP赛前集训营-提高组(第四场) 题目描述 给出一个序列 a1, ..., an. 定义一个区间 [l,r] 是好的,当且仅当这个区间中存在一个 i,使得 ai 恰好等于 al, al+1, ...

  3. 视图、存储函数、存储过程、触发器:MySQL系列之五

    一.视图 视图:VIEW,虚表,保存有实表的查询结果,实际数据不保存在磁盘 物化视图:实际数据在磁盘中有保存,加快访问,MySQL不支持物化视图 基表:视图依赖的表 视图中的数据事实上存储于" ...

  4. [USACO1.4]等差数列 Arithmetic Progressions

    题目描述 一个等差数列是一个能表示成a, a+b, a+2b,..., a+nb (n=0,1,2,3,...)的数列. 在这个问题中a是一个非负的整数,b是正整数.写一个程序来找出在双平方数集合(双 ...

  5. 解决运行Robot Framework报‘’ascii’错误

    在Python27\Lib\site-packages中新建‘sitecustomize.py’,内容如下: #coding=utf8import sysreload(sys)sys.setdefau ...

  6. elasticsearch常用工具及使用

    1. 数据库工具:https://github.com/jprante/elasticsearch-jdbc 2.数据展示:https://github.com/mobz/elasticsearch- ...

  7. jmeter读取本地CSV文件

    用jmeter录制考试上传成绩等脚本时,出现的问题及解决方法如下: 1.beanshell前置处理器,不能读取本地csv文件里的数据: 方法一: 在beanshell里不能直接从本地的csv文件里读取 ...

  8. 2017 ACM/ICPC Asia Regional Shenyang Online number number number

    题意:求n个斐波那契数列组合都无法得到的最小数字 解法: 1 我们先暴力的求出前面几个数字 2 然后再暴力的求递推 3 接着矩阵快速幂(没写错吧?) /*#include<bits/stdc++ ...

  9. jetty-env.xml

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE Configure PUBLIC &quo ...

  10. jquery——无缝滚动

    无缝滚动: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...