热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SolrCloudwiki翻译(6)近实时搜索,索引复制,灾难恢复

原文出自:http:my.oschina.netzengjieblog203876SolrCloudandReplicationSolrCloud与

原文出自:http://my.oschina.net/zengjie/blog/203876

SolrCloud and Replication

SolrCloud与索引复制

Replication ensures redundancy for your data, and enables you to send an update request to any node in the shard.  If that node is a replica, it will forward the request to the leader, which then forwards it to all existing replicas, using versioning to make sure every replica has the most up-to-date version.  This architecture enables you to be certain that your data can be recovered in the event of a disaster, even if you are using Near Real Time searching.

索引复制确保为你的数据提供了冗余,并且你可以把一个更新请求发送到shard里面的任意一个节点。如果收到请求的节点是replica节点,它会把请求转发给leader节点,然后leader节点会把这个请求转发到所有存活的replica节点上去,他们通过使用版本控制来确保每个replica节点的数据都是最新的版本。SolrCloud的这种结构让数据能够在一个灾难事故之后恢复,即便你正在使用的是一个近实时的搜索系统。

Near Real Time Searching

近实时搜索

If you want to use the NearRealtimeSearch support, enable auto soft commits in your solrconfig.xml file before storing it into Zookeeper. Otherwise you can send explicit soft commits to the cluster as you need.

如果你想要获得近实时搜索的支持,在solrconfig.xml放到ZooKeeper之前打开索引自动softCommit的特性。另外如果你需要的话可以明确的发送一个softCommit请求给集群。

SolrCloud doesn't work very well with separated data clusters connected by an expensive pipe. The root problem is that SolrCloud's architecture sends documents to all the nodes in the cluster (on a per-shard basis), and that architecture is really dictated by the NRT functionality.

如果你的数据分布在一个节点之间传输数据代价非常高的集群中,那么SolrCloud可能不会运行的很好。其根本原因是因为SolrCloud的架构会把文档发送给集群中的所有节点(会在每个shard的节点之间发送),而这种架构实际上是基于近实时功能的。

Imagine that you have a set of servers in China and one in the US that are aware of each other. Assuming 5 replicas, a single update to a shard may make multiple trips over the expensive pipe before it's all done, probably slowing indexing speed unacceptably.

想象一下你有一系列的服务器是在放在中国,还有一些放在美国,并且它们都知道彼此的存在。假设有5个replica节点,一个发送给shard的单独请求在完成之前可能在高代价的连接上传输多次,很可能把索引速度拖慢到一个不可接受的程度。

So the SolrCloud recommendation for this situation is to maintain these clusters separately; nodes in China don't even know that nodes exist in the US and vice-versa.  When indexing, you send the update request to one node in the US and one in China and all the node-routing after that is local to the separate clusters. Requests can go to any node in either country and maintain a consistent view of the data.

因此SolrCloud对这种情况的建议是把这些集群分开维护;放在中国的节点不用知道放在美国的节点的存在,反之亦然。当索引的时候,你把更新请求发送到一个放在美国的节点同时也发送到一个放在中国的节点,然后发送之后两个分开的集群之间的节点路由都是在各自集群本地进行的。

However, if your US cluster goes down, you have to re-synchronize the down cluster with up-to-date information from China. The process requires you to replicate the index from China to the repaired US installation and then get everything back up and working.

然而,如果你在美国的集群宕机了,你必须将最新的数据相关信息从中国的机器上重新同步到美国的集群中。这个处理需要你把索引从中国的机器上拷贝到美国的集群中,然后备份好数据就可以继续正常工作了。

Disaster Recovery for an NRT system

近实时系统的灾难恢复

Use of Near Real Time (NRT) searching affects the way that systems using SolrCloud behave during disaster recovery.

使用近实时搜索会影响使用SolrCloud的系统在灾难恢复时候的行为方式。

The procedure outlined below assumes that you are maintaining separate clusters, as described above.   Consider, for example, an event in which the US cluster goes down (say, because of a hurricane), but the China cluster is intact.  Disaster recovery consists of creating the new system and letting the intact cluster create a replicate for each shard on it, then promoting those replicas to be leaders of the newly created US cluster.

下面所述的处理过程是假设你正在维护一个分开的集群,跟上面所述的情况一样。考虑到如下这个例子,在美国的集群出现了宕机事件(可以说是因为一场飓风),但是在中国的集群却是完好无损的。灾难恢复由以下流程构成,首先创建一个新的系统并且让完整的集群在这个系统里面为每一个shard都创建一个replica节点,然后把这些replica节点全部晋升为新创建的美国集群里面的leader节点。

Here are the steps to take:

如下是需要进行的步骤:

  1. Take the downed system offline to all end users.
  2. Take the indexing process offline.
  3. Repair the system.
  4. Bring up one machine per shard in the repaired system as part of the ZooKeeper cluster on the good system, and wait for replication to happen, creating a replica on that machine.  (SoftCommits will not be repeated, but data will be pulled from the transaction logs if necessary.)
    Icon

    SolrCloud will automatically use old-style replication for the bulk load. By temporarily having only one replica, you'll minimize data transfer across a slow connection.

  5. Bring the machines of the repaired cluster down, and reconfigure them to be a separate Zookeeper cluster again, optionally adding more replicas for each shard.
  6. Make the repaired system visible to end users again.
  7. Start the indexing program again, delivering updates to both systems.
  1. 使宕机的系统对所有用户来说都变成离线状态。
  2. 停止提供索引处理服务。
  3. 修复系统。
  4. 从待修复系统中每个shard拿一台机器加入到没有问题的系统中作为ZooKeeper集群的一部分,然后等待索引复制的开始,在每台机器上都会创建一个replica节点。(软提交不会被复制,但是如果有必要的话会从事务日志中拉取相关的数据)SolrCloud会自动的使用旧的主从方式来进行索引的批量加载。由于你只是临时的创建一个replica节点,所以通过慢速的连接传输的数据会减少到最少。
  5. 把这些本来是待修复集群中的机器停掉,然后把它们重新配置成一个分开的ZooKeeper集群,可以为每个shard添加更多的replica节点。
  6. 让修复的系统对所有终端用户可见。
  7. 重新启动索引程序,把更新请求同时分发给两个系统。

推荐阅读
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
  • 本文深入探讨了如何利用Maven高效管理项目中的外部依赖库。通过介绍Maven的官方依赖搜索地址(),详细讲解了依赖库的添加、版本管理和冲突解决等关键操作。此外,还提供了实用的配置示例和最佳实践,帮助开发者优化项目构建流程,提高开发效率。 ... [详细]
  • 在安装并配置了Elasticsearch后,我在尝试通过GET /_nodes请求获取节点信息时遇到了问题,收到了错误消息。为了确保请求的正确性和安全性,我需要进一步排查配置和网络设置,以确保Elasticsearch集群能够正常响应。此外,还需要检查安全设置,如防火墙规则和认证机制,以防止未经授权的访问。 ... [详细]
  • Nacos 0.3 数据持久化详解与实践
    本文详细介绍了如何将 Nacos 0.3 的数据持久化到 MySQL 数据库,并提供了具体的步骤和注意事项。 ... [详细]
  • 一个建表一个执行crud操作建表代码importandroid.content.Context;importandroid.database.sqlite.SQLiteDat ... [详细]
  • 为什么多数程序员难以成为架构师?
    探讨80%的程序员为何难以晋升为架构师,涉及技术深度、经验积累和综合能力等方面。本文将详细解析Tomcat的配置和服务组件,帮助读者理解其内部机制。 ... [详细]
  • 本文详细介绍了如何在 Linux 系统上安装 JDK 1.8、MySQL 和 Redis,并提供了相应的环境配置和验证步骤。 ... [详细]
  • 本文介绍了如何通过安装 rpm 包来使用 resize2fs 和 ext2online 工具进行系统文件的扩容。提供了详细的步骤和注意事项。 ... [详细]
  • 如何使用 `org.apache.tomcat.websocket.server.WsServerContainer.findMapping()` 方法及其代码示例解析 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • 本文详细介绍了在CentOS 6.5 64位系统上使用阿里云ECS服务器搭建LAMP环境的具体步骤。首先,通过PuTTY工具实现远程连接至服务器。接着,检查当前系统的磁盘空间使用情况,确保有足够的空间进行后续操作,可使用 `df` 命令进行查看。此外,文章还涵盖了安装和配置Apache、MySQL和PHP的相关步骤,以及常见问题的解决方法,帮助用户顺利完成LAMP环境的搭建。 ... [详细]
  • Squaretest:自动生成功能测试代码的高效插件
    本文将介绍一款名为Squaretest的高效插件,该工具能够自动生成功能测试代码。使用这款插件的主要原因是公司近期加强了代码质量的管控,对各项目进行了严格的单元测试评估。Squaretest不仅提高了测试代码的生成效率,还显著提升了代码的质量和可靠性。 ... [详细]
  • 本文深入解析了Java 8并发编程中的`AtomicInteger`类,详细探讨了其源码实现和应用场景。`AtomicInteger`通过硬件级别的原子操作,确保了整型变量在多线程环境下的安全性和高效性,避免了传统加锁方式带来的性能开销。文章不仅剖析了`AtomicInteger`的内部机制,还结合实际案例展示了其在并发编程中的优势和使用技巧。 ... [详细]
  • Docker镜像加载优化:开发者的高效实践指南
    Docker镜像加载优化:开发者的高效实践指南 ... [详细]
author-avatar
crazyuzy327
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有