iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >solr的主从复制原理
  • 711
分享到

solr的主从复制原理

2023-06-03 01:06:47 711人浏览 独家记忆
摘要

这篇文章主要讲解了“solr的主从复制原理”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“solr的主从复制原理”吧!master的工作对于ReplicationHandler的复制功能来说,

这篇文章主要讲解了“solr的主从复制原理”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“solr的主从复制原理”吧!

master的工作

对于ReplicationHandler的复制功能来说,核心的问题确定是在一个时间点要复制哪些文件,这就用上了lucene的IndexDeletionPolicy的特性。

lucene在初始化时,会调用IndexDeletionPolicy.onInit(List commits)方法;
lucene在commit(触发的时机也可以是optimize、close,solr在commit时实际上就是close了indexwriter)时,会调用IndexDeletionPolicy.onInit(List commits)。


IndexCommit对象中保存了该次提交关联的文件列表等信息,这使得solr中的复制过程中,slave可以从master得到文件列表后跟本地文件做比较,跳过不变的文件,下载新文件,并删除无用的文件。

IndexDeletionPolicy的两个针对commits的函数,会对当前存在的commits列表做些处理,比如lucene默认的KeepOnlyLastCommitDeletionPolicy会只保留最新的IndexCommit,对那些过时的IndexCommit执行delete操作以将无用的文件删掉。

solr中,SolrDeletionPolicy默认也是保留最新一个IndexCommit,但可以设置maxCommitAge、maxCommitsToKeep、maxOptimizedCommitsToKeep来保留更多的IndexCommit。但solr真正使用的IndexDeletionPolicy实现是IndexDeletionPolicyWrapper,它是SolrDeletionPolicy的wrap。

在slave从master复制文件的过程中,要保证当前正在复制的IndexCommit点不能被删除,这就用到了IndexDeletionPolicyWrapper中的void setReserveDuration(Long indexVersion, long reserveTime)方法,该方法会在master向slave响应indexversion、filelist命令前、以及每向slave传送5M的索引文件内容时调用,而默认的reserveTime时间是10s,如果慢速网络传输5M数据需要10秒以上,就需要调整该值了。

ReplicationHandler复制文件没有采用rsync,而是使用Http,它在读一个文件内容传输到slave时,默认是按照1M大小分段输出内容到slave(http chunked?),并且默认是对每段内容做了checksum,保证传输的内容的正确性。上面提到的setReserveDuration点,主要就是它在packetsWritten % 5 == 0次数后触发一次修改。

ReplicationHandler还可以备份索引文件。由于lucene的索引文件只是追加新文件而不会修改已有文件,所以只要针对一个IndexCommit点做备份,其过程还是很简单的。

slave的工作

slave启动时会创建SnapPuller对象,SnapPuller会启动一个线程定时的(pollInterval间隔)从master复制数据(fetchLatestIndex方法)。对于一次复制过程,slave和master交互处理细节如下:

1、slave首先向master询问最新的索引版本号(indexversion命令),slave检查得到的latestVersion、latestGeneration有效后,和本地的IndexCommit的getVersion()、getGeneration()比较,如果不相等,则需要往下进行,否则等待下一次调度。

2、slave向master请求之前得到的indexversion下的文件列表(filelist命令,包括索引文件和可选的配置文件)。如果文件列表为空,则返回等待下一次调度。否则,就需要检查哪些文件需要被下载过来。这里做的判断有:1)如果本地的commit.getGeneration() >= latestGeneration,说明本地索引文件被破坏(比如对slave不小心提交了修改索引的命令),需要完全将master的文件复制过来。2)逐个检查文件列表中的文件是否在本地存在,不存在就下载下来。

3、对于下载文件内容,对应命令是filecontent。下载的文件显然需要放到临时目录中,这个临时目录和已有的索引目录(默认名字index)在同一数据目录下,只是命名为index.<时间戳>。下载完毕后,copy数据有两种情况:
1)如果是完全下载,则不需要将临时目录中的文件copy到已有目录中,而是修改数据目录中的index.properties,标识索引目录为新生成的临时目录,而旧索引目录并不会被删除,可以手工删掉,当然,通常是不应该出现slave的Generation大于master的异常情况。
2)通常就是把临时索引目录的文件copy到旧索引目录,copy时要把segments_N放到最后copy,避免copy中途出现异常造成数据被毁。

4、当新索引和可选的配置文件copy完毕之后,slave会对solrcore的UpdateHandler做commit操作,这会close掉indexwriter并强制重启新的indexsearcher提供服务。同时,如果solrcore的UpdateHandler是DirectUpdateHandler2(不应该不是),会强制调用handler.forceOpenWriter()来删除旧的无用的索引文件,并调用replicationHandler.refreshCommitpoint()来更新slave的indexCommitPoint。

5、如果索引复制失败,slave会向数据目录下的replication.properties输出复制失败的信息。

感谢各位的阅读,以上就是“solr的主从复制原理”的内容了,经过本文的学习后,相信大家对solr的主从复制原理这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: solr的主从复制原理

本文链接: https://www.lsjlt.com/news/232073.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • solr的主从复制原理
    这篇文章主要讲解了“solr的主从复制原理”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“solr的主从复制原理”吧!master的工作对于ReplicationHandler的复制功能来说,...
    99+
    2023-06-03
  • mysql 主从复制原理
    主从形式mysql主从复制 灵活一主一从主主复制一主多从---扩展系统读取的性能,因为读是在从库读取的;多主一从---5.7开始支持联级复制--- 用途及条件 mysql主从复制用途实时...
    99+
    2022-10-18
  • Redis--主从复制原理
    前言: 和MySQL主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构,Red...
    99+
    2022-10-18
  • mysql主从复制原理
    环境:3306 主库3307 从库1 设置server-id值并开启binlog功能参数编辑mysql的配置文件/data/3306/my.cnf[mysqld]server-id = 6   &...
    99+
    2022-10-18
  • 浅谈Redis主从复制以及主从复制原理
    目录面临问题解决办法主从复制主从复制的作用主从复制启用面临问题 1. 机器故障。我们部署到一台 Redis 服务器,当发生机器故障时,需要迁移到另外一台服务器并且要保证数据是同步的。...
    99+
    2022-11-12
  • MySQL 主从复制及原理
    1.主从复制配置a. 环境:CentOS7.4,IP地址分别是主库:192.168.11.146,从库:192.168.11.238,主库版本应低于或等于从库版本,这里用的都是MySQL 8.0.13b.主...
    99+
    2022-10-18
  • mysql主从复制的工作原理
    这篇文章给大家分享的是有关mysql主从复制的工作原理的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。mysql主从复制原理:首先主库发送更新事件到从库;然后从库读取更新记录,并执...
    99+
    2022-10-18
  • MySQL主从复制的原理分析
    本篇文章为大家展示了MySQL主从复制的原理分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。主从复制是怎么实现的呢更新语句会记录 binlog,它是一种逻辑日志。...
    99+
    2022-10-18
  • Redis的主从复制是什么,主从复制的原理又是什么?
    redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有...
    99+
    2022-10-18
  • MySQL主从复制原理详情
    目录前言:一、为什么需要主从复制?二、什么是mysql的主从复制?三、mysql复制原理具体步骤四、mysql主从同步延时分析五、主从复制的配置1、基础设置准备2、安装mysql数据...
    99+
    2022-11-13
  • mysql主从复制原理,主主复制时主键冲突解决
    主从复制原理: master的增删改记录写入binlog; slave的I/O Thread(负责读取master的binlog)读取binlog并将记录写入relaylog; slave的sql thread读取relaylog...
    99+
    2018-09-26
    mysql主从复制原理,主主复制时主键冲突解决
  • mysql主从复制的原理有什么
    mysql主从复制的原理有什么?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、说明mysql数据库提供了主从备份机制,实际上是将主数据库的所有数据同时写入备份...
    99+
    2023-06-15
  • kafka主从复制的原理是什么
    Kafka的主从复制是通过Leader-Replica模式实现的。主要原理如下: Kafka集群中的每个主题分区都有一个Leade...
    99+
    2023-10-27
    kafka
  • MySQL的主从复制原理是什么
    这篇“MySQL的主从复制原理是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MySQL的主从复制原理是什么”文章吧。前...
    99+
    2023-07-02
  • mysql主从复制的工作原理图
    本文主要给大家介绍mysql主从复制的工作原理图,文章内容对大家的参考意义还是比较大的,下面跟笔者一起了解下mysql主从复制的工作原理图吧。  看完以上关于mysql主从复制的工作原理...
    99+
    2022-10-18
  • MySQL 主从复制的原理和配置
    工作原理图: 主从复制的原理: 分为同步复制和异步复制,实际复制架构中大部分为异步复制。 复制的基本过程如下: 1).Slave上面的IO进程连接上Master,并请求从指定日志文件的指...
    99+
    2022-05-26
    MySQL 主从复制 配置
  • MySQL主从复制的配置及原理
    -----------------------------------------------------------mysql 5.5   环境用的数据库可的多实例----------...
    99+
    2022-10-18
  • MySQL主从复制的原理和作用
    这篇文章将为大家详细讲解有关MySQL主从复制的原理和作用,文章内容质量较高,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。首先数据库有个“bin-log”二进制文件,记录了所有SQL语句;...
    99+
    2022-10-18
  • MySQL中主从复制的原理分析
    今天就跟大家聊聊有关MySQL中主从复制的原理分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1.1.1 MySQL主从复制介绍MySQL数据库支...
    99+
    2022-10-18
  • mysql主从复制的原理是什么
    mysql主从复制的原理是什么?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、说明主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库;主数据...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作