直接使用Lucene做分布式很难实现,官方不支持这种设计,好像也没打算支持。因为大多数情况下,使用基于Lucene的Solr或者Elasticsearch很容易地实现分布式需求。

索引限制

因为机器环境各部相同,一般来说,Lucene可以处理500-8000万规模的索引数据。利用分布式技术,可以让Lucene达到数十亿文档的处理规模。

Lucene与hadoop

Lucene的Directory是一个接口,默认的实现类有RAMDirectory 和抽象类FSDirectory,如果可以将Directory交给hadoop管理,并且自己实现基于hadoop客户端的IndexWriter和IndexReader,就可以将索引文件自由拆分,实现一个分布式的Lucene结构。

利用shard

Lucene的shard是索引的一个分片,在查询的时候,所有的shard在同一时刻被处理,然后返回聚合后的数据。你可以将每一个shard放在不同机器上,达到扩展的目的。各个shard相互备份,就能组成一个简单的分布式环境。
这种方式就是SolrCloud的分布式方案。

Logo

更多推荐