我们在我们的应用程序中使用Lucene,并将索引文件保存在应用程序运行所在的同一服务器的磁盘中。如何处理分布式Lucene集群中的索引文件?
索引文件几乎是2Gb的此刻,他们也许某个时候更新,例如,当新的数据被插入到数据库中,我们可能需要重新建立索引的那部分,并添加他们。
到目前为止好,因为只有一个应用程序服务器,现在我们得再添做集群,所以我不知道如何处理索引文件?
顺便说一句,出来的应用程序应该是独立于平台的,因为我们的客户使用不同的操作系统,如Linux,其中一些甚至使用云平台,如亚马逊EFS或Azure存储不同的存储。
好像我有两个观点:
1每台服务器保存索引文件的副本,并且使它们彼此同步。
但同步机制将取决于OS上,我们试图避免这种情况。如果两台服务器在某个时间用不同的文档更新索引文件,我不确定是否会导致冲突。
2使索引文件共享。 与1)一样,文件共享机制具有平台意识。也许将它们保存到数据库是一种选择,但性能如何?我曾经想过使用memcached来保存它们,但是我没有找到任何示例。
你如何处理这类问题?