你是否正在寻找关于lucene的内容?让我把最宝贵的东西奉献给你:
不管什么索引形式,面对海量数据都难免分片(sharding)。在淘宝曾做过基于lucene和Solr的分布式搜索引擎,就是这种M*N的设计,横向切分数据,纵向切分流量,请参考MySQL的Sharding以及Master-Slave。
====================
有同学要介绍下M*N的设计,已经离职不好泄漏详细的核心设计,只能提供一个思路,供大家参考:
当面对海量数据量和海量请求量时,虽然优化索引方式,优化请求处理方式可以在一定程度上解决问题,但毕竟扩展性很差,数据量和请求量几乎都是个无限增长的指标(只要你的产品还活着),因此分布式扩展是一个明显的思路。举个例子,比如当前系统可以支持4G数据索引,1w q/s请求,那么如果面对10G数据,5w q/s时,4×6的机器矩阵理论上可以支撑16G数据和6w q/s,每个doc按其id模4,分配到4个索引组中,请求也可以分配到6组横向集群,这就解决了数据量的问题。构建索引时master去构建,slave直接拖索引换库,slave只做增量索引;master做全量和增量,在不进行全量时可对外提供服务,。同时每个接受请求的机器承担横向结果的merge工作。
这个思想和MySQL海量存储的Sharding是类似的,我所了解的一些大型分布式搜索引擎底层也都差不多是这个设计。这里只能给一个粗略的思路了,但其实集群之间的同步、协作还是涉及很复杂的细节设计的。
Solr是基于lucene的,也提供分布式支持,如果有兴趣,可以参考一下它的设计。
以上就是关于lucene的全部内容,相信你一定会非常满意。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shenmilingyu/article-8071-1.html
非常同意此观点
生产加工和运输流程啊