在目前的体系结构中,我们使用基于碎片的db modelMYSQL和一个Solr服务器云模式,它有32 GB的内存,可以容纳1000万个条目的切分数据。由于计算逻辑上的业务需求,应用程序需要每天对每个碎片执行完整的重新索引。为了执行完整的重新索引,我们创建了临时solr服务器,并将索引数据交换给solr服务器。这种做法行之有效,我们没有遇到任何问题。
由于我们将从关系数据模型移到nosql模型,因此我们计划使用Solr,因为基于碎片的模型正在消失。我非常关注Solr云每天如何支持2亿次更新。在这些更新过程中,相同的solr服务器还负责为数百万get业务操作请求提供服务。
有人会建议我们,SolrCloud是否会在为get请求提供服务的同时,维持每天2亿项的更新?
发布于 2017-03-18 21:46:46
更新文档时,SOLR将将旧版本标记为已删除,并插入新版本。任何查询都找不到已删除的文档( **查询只返回未删除的文档),但它们仍然占用磁盘空间,并且会减慢搜索速度(通过炸毁筛选查询的位图)。
SOLR索引被分解成不同大小的段。偶尔会合并一些段,这也会从这些段中删除已删除的文档。
但问题是,段越大,合并越少,被删除的文档就越多。
我们运行一个SOLRCloud安装程序,主集合中有60兆个文档,分成6个碎片,磁盘上的总集合大小为30-50 GB,每天更新约30兆次;每个集群由两个8核128 GB服务器组成。
我们解决这个问题的方法是确保我们设置中的每个碎片小于10 GB。为此,我们有三个SOLR实例在每个服务器上独立运行(端口8983、8984和8985)。当每个碎片低于10 GB时,SOLR的合并段机制对我们非常有用。
https://stackoverflow.com/questions/42877081
复制相似问题