2011-08-29 27 views
3

我有一個電子商務網站,我想實現它的搜索。在閱讀了很多關於Lucene和SOLR的文章後,我最終選擇了SOLR,因爲它增加了JSON API方面等功能。SOLR,獨立於Jetty服務器或作爲現有Tomcat中的Web應用程序?

SOLR帶有一個內置的Jetty服務器,在後臺運行,並且我的webapp在Tomcat服務器上運行。我想知道從長遠來看,對我來說什麼會更好,性能明智,易於定製和使用,無論是將SOLR作爲獨立版保留在不同的Jetty服務器上還是將SOLR集成到Tomcat中,在JAVA_OPTS中列出catalina.bat

我個人覺得在Tomcat中放置SOLR會降低我的性能,因爲它需要更多的時間才能加載,而且我不希望每次重新部署我的webapp時都會重新啓動SOLR,但隨後它可能會集中在一個地方加點(不確定)。我期待着來自使用SOLR的人的一些看法,對於我來說什麼是最好的,數據集是巨大的,並且每天都吸引成千上萬的用戶。

回答

2

將所有這些全部放在單個Tomcat實例上將使管理更加輕鬆。您可以easily redeploy your webapp independently of Solr,Tomcat被設計爲託管多個應用程序。如果你不得不將Solr和你的網絡應用放在一個盒子裏,我會避免擁有兩臺Web服務器,除非你有一個真實的,可衡量的,令人信服的理由。

+0

爲了擴展這一點,當您只想重新啓動一個應用程序或其他應用程序時,不應該重新啓動所有Tomcat。 –

1

Mauricio的回答是一個很好的答案。

共享相同Tomcat的操作簡單性的對應點是將Solr隔離到其自己的整個JVM和堆中的潛在安全性。這樣,您不必擔心在Solr取下主應用程序時發生內存泄漏或死亡或巨大GC暫停的問題。

在Websolr,我們在Tomcat中運行Solr,因爲這是我們所知道的。但是,如果我們實現了在同一實例類型上運行多個Java服務的設計,我們將認真考慮切換到多個Jettys以提高隔離度。

權衡利弊:操作簡單性與完全隔離性。你的旅費可能會改變。如果這種隔離不具有說服力,那麼堅持在Tomcat中託管。如果有任何關於此的事情會讓你感到緊張,請設置monit和munin來關注一切。

並且不要重新啓動所有的Tomcat來重新加載它的一個Web應用程序。

0

考慮到安全性,您可能希望您的solr服務器被隔離並且只能從您的webapp訪問。

在這種情況下,最好託管到不綁定在公共地址上的其他實例。

相關問題