Lucene如何分布式(WWW与Lucene服务器分离)

这两天一直再搞这个东西,呵呵,为了提升WWW服务器整体性能,准备把Lucene系统放在另一台服务器上,当用户进行查询时,先向WWW服务器提出请求,由

WWW服务器组装数据并提交给LuceneWebService服务器,LuceneWebService服务器根据其条件返回相应的数据结果集,最后由WWW将结果返回给客户端。

说的很清楚,看一下要实现这种方式的几个知识点:

1 服务器与服务器之间的通信

可能有人会想到WCF,Remoting,它们确实也可以实现,但今天我还是用WS吧,呵呵,WS是走SOAP的,简单的说就是只能传输简单的数据类型,向List,List<T>,T这种类型是不可以的,所以在进行通信时我们需要先将这些类型转化为byte[]字节数组。

2 Lucene架构要灵活

Lucene项目可能由几个索引生成器组成,它们可以是新闻索引,产品索引,用户索引等等,所以你的Lucene项目架构要足够的灵活,可能是这样:

image

上面的项目架构事实上把每个索引生成器都分开成子项目了,这样有利于生成索引时按需生成的要求,而生成索引的核心代码被整理到另一个文件夹项目里,它们由一个通用项目和若干的具体功能项目组成,这样做的好处是引用方便,呵呵。

3 每个层的具体功能和作用(什么层干什么事,自己干自己的,职责单一)

WWW层,主要用于收集从客户端请求过来的参数,如查询关键字,页号,及最终页地址等。(为读索引组装参数)

LuceneWebService层,主要用来获取具体索引及进行复杂对象向简单对象的转化等等。(读索引)

Lucene层,主要用来建立索引,它可能有若干个应用程序组成,每个应用程序负责自己业务索引文件的生成(写索引)

原文地址:https://www.cnblogs.com/lori/p/2363277.html