`
wbj0110
  • 浏览: 1588156 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

solr 搜索架构优化

    博客分类:
  • sorl
阅读更多

solr 搜索架构优化

 

     刚刚将solrt升级到最新版本3.6.1,除了精简了索引结构设计,新版本的天生优势更加重要,比之前solr1.4的性能算是小部分提升,响应由100ms以内占80%升到了90%,且搜索系统稳定性好了很多,出现挂掉的机率降低了,当然还得继续观察。同时优化了旧的搜索系统架构 ,加上系统的配置优化管理,方便修改调整,对外提供的接口重新设计了一翻,加入了一些请求的跟踪,方便接口升级时能找到对应的前端请求位置,对症下药。同时对后面的架构优化打下很好的基础 .

 

 

    将现在架构大小索引方式,一个大索引有几千万数据 ,小索引几万数据,还有另一个结点有三百万左右数据,现在每天有900万左右的请求量,已经可以达到90%以上在100ms以下响应。但还是有少许的搜索可能达到了两秒以上,还有一个就是现在索引是放在共享内存里,如果那天这两台神机没有了话就比较麻烦,这次的升级就是一个经验,说明我们更希望在某些情况能使用更普通的机器就能完成,特别是在机器比较不允许的条件下, 这样的架构的存活才有可能 .

 

     所以才开始有想过测试将大索引切分为多个核来使用,因为搜索默认排序是由多维度动态计算的值来排序,所以,特别是在命中特别多文档的时候,计算耗时比较大,比如搜索高频词的时候。所以切为多个核,可以将这些计算分到其它机器,大索引分拆为小索引,倒排表索引数据 也变小,轻量级了,搜索命中这个环节也会提升,动态计算的这个,由于分担到多个机器并行计算,这两者的提升对于整体性能来说很重要。

当然这个也是有代价的,要牺牲一定的网络带宽以及http连接数,以前三个结点,对于每次的请求就变成了2*3+1=7个请求,现在分了差不多要10个结点,那么一个请求就变为了2*10+1=21个请求,还好这些请求是并发进行的,所以只取两个阶段请求最耗时再加结果合并消耗的时间 .所以这样的设计理论上应该是可以提高性能的,当然再怎么优化都需要经过实践才能证实,所以为了更好了做压力测试,引用了tcpcopy这个工具,引流线上的真实用户请求模拟测试对比。

 

暂时只需要测试大索引切分的几个结点的耗时,使用4台8核8g的机器作测试:(8个核 ,每个核大概是1G多索引数据,所以每台机器放两个核)

将索引数据全放在内存里,测试性能 响应特快,比现在的架构快了几倍

然后再把其中一台机器索引放到了硬盘,使用MMapDirectory方式,作对比后,效果也不错,性能没减。

现在全部使用MMapDirectory,看看效果是不是一样,如果这种方式可行的话,比完全放内存的方式维护方面更佳。测试效果也不错

整体性能可以估计提升了3倍左右,单测试高频词,更不只3倍,即使命中文档在1千万左右,也能在一秒左右响应,当然现实搜索这种情况会比较少,测试搜索长词的时候大多也是在100-200ms,当然实际中用户搜索串都是在7个字以内,响应都能保持在100ms以内,并且cpu的负载也不会太高。

 

测试10万请求只有1%的响应高于100ms。

 

当然现在变多个核,管理方面的优化也是要的,方便升级与调整,还有分多结点的时候,索引应该如何切分也是个要解决的问题。。

现在只是确认方案可行性。

 

可以测试搜索效果:http://so.56.com/all/%E6%A2%A6%E6%83%B3%E7%A7%80/

 

摘自互联网

 

分享到:
评论

相关推荐

    Apache Solr 搜索架构分析外部设计篇PDF

    ### Apache Solr搜索架构分析——外部设计篇 #### 一、引言 随着互联网技术的飞速发展,数据量呈爆炸性增长,高效且准确地检索海量数据成为了现代信息技术领域的一项重要挑战。Apache Solr作为一款开源的企业级...

    solr搜索引擎的使用介绍

    Solr搜索引擎的使用介绍 Solr,全称为Apache Solr,是Apache软件基金会的一个开源项目,基于Java开发,是一款高效、灵活且强大的全文检索服务引擎。它构建在Lucene库之上,提供了更高级别的企业级搜索功能,如...

    Apache Solr 架构分析内部设计篇PDF

    同时,还具备可伸缩性,支持高效地复制到其他Solr搜索服务器,并拥有高度可配置的缓存机制。 5. Solr对开发者是什么(What Is Solr To Developers):开发者视角下的Solr是一个Java Web应用程序(WAR),它拥有类似...

    solr 企业搜索引擎教程

    ### Apache Solr 企业搜索引擎教程知识点总结 #### 1. Apache Solr 概述 - **Solr**:Apache Solr 是一款高度可扩展且高性能的企业级搜索平台,由Apache软件基金会维护。它是一个开源搜索服务器,使用Java语言编写...

    solr导航搜索工具+文档+配置代码

    3. 调优和监控:优化Solr的配置,监控性能指标,确保系统的稳定性和高效性。 4. 高级特性:探索Solr的近实时搜索(NRT)、复制、 faceting(分类)、highlighting(高亮显示)等功能。 这个压缩包提供的资源涵盖了...

    solr实现的搜索引擎

    结合《解密搜索引擎技术实战》第八章的代码,你可以逐步学习并实践上述知识点,理解Solr搜索引擎的实现原理,从而掌握构建高效搜索引擎的技术。记得在实际操作中不断调试和优化,以适应不同的业务场景和性能需求。

    solr-6.2.0源码

    Solr是Apache软件基金会开发的一款开源全文搜索引擎,它基于Java平台,是Lucene的一个扩展,提供了更为方便和强大的搜索功能。在Solr 6.2.0版本中,这个强大的分布式搜索引擎引入了许多新特性和改进,使其在处理大...

    基于solr的网站索引架构(一)

    在本篇博文中,我们将探讨基于Apache Solr构建的网站索引架构,这是搜索引擎技术中的一个关键组件。Solr是一个开源、高性能的全文检索服务,它允许开发者为大量数据建立索引,从而实现快速的搜索功能。在"基于solr的...

    搜索引擎solr5.5

    Solr 5.5 是一个重要的版本,它是Apache Solr搜索平台的一个里程碑。Solr是一个开源的全文搜索引擎,被广泛应用于构建高效的、可扩展的搜索解决方案。它支持各种数据源,包括文本、图像和其他类型的数据,并能进行...

    高效的企业级搜索引擎Solr

    ### 高效的企业级搜索引擎Solr #### 一、Solr概述 Solr是一款高性能、可...总之,Solr作为一款成熟的企业级搜索引擎,不仅提供了丰富的功能,还支持多种性能优化手段,使得它能够在复杂的应用场景下发挥出最佳效能。

    人工智能-项目实践-搜索引擎-基于solrj开发solr主从搜索引擎服务的dubbo组件

    本项目实践聚焦于利用Solrj开发一个支持主从复制的Solr搜索引擎服务,并通过Dubbo组件实现服务的分布式部署与调用。以下将详细阐述这个项目的重点内容和关键技术。 首先,Solr是Apache软件基金会的一个开源项目,它...

    solr(solr-9.0.0-src.tgz)源码

    Solr的架构基于Lucene,一个强大的全文搜索引擎库。它提供了分布式、可扩展、高可用性的搜索服务。Solr通过RESTful API与客户端进行交互,支持XML、JSON、CSV等多种数据格式。 2. **核心组件** - **索引**:Solr...

    solr的优化实例1

    ### Solr优化实例详解 #### 一、Solr概述与扩展策略 Solr是一款高性能、可伸缩的企业级搜索引擎,广泛应用于网站搜索、数据分析等领域。随着业务增长和技术进步,Solr需要不断进行优化以满足更高的性能需求。本文...

    Apache Solr lucene 搜索模块设计实现

    - **Debug and Statistics**:提供调试信息和统计指标,帮助优化搜索性能。 7. **Plugins**:Solr 和 Lucene 支持大量插件,允许自定义行为,如响应写入器、查询解析器、分析器等,这极大地增强了系统的灵活性和可...

    solr4.3源代码一

    Solr4.3是Apache Solr的一个早期版本,它是一个基于Lucene的全文搜索服务器,提供了高可配置、可扩展的搜索和分析功能。Solr4.3源代码的获取通常是为了深入理解其内部工作原理,进行定制开发或优化。在你提供的信息...

    基于Solr的搜索引擎研究与实现

    总的来说,本文旨在为读者提供关于搜索引擎,特别是基于Solr的搜索引擎的全面理解和实践指导,帮助读者掌握搜索引擎的原理和技术,为开发和优化搜索系统提供理论支持和实践经验。通过对Lucene和Solr的学习,开发者...

    搜索引擎 Lucene、Solr

    在互联网行业应用架构中,搜索引擎技术不断进化,从基础的爬虫和索引,到自然语言处理和用户界面设计,每一个环节都是搜索引擎优化用户体验、提升信息检索效率的关键。了解和掌握这些技术对于设计和优化搜索引擎至关...

Global site tag (gtag.js) - Google Analytics