2012-07-08 82 views
0

我正在開發一個網站,我打算在Windows Azure中使用單個Web角色運行。該網站將使用需要作爲Windows服務運行的Sphinx搜索引擎。所以,我的問題是這個......是否可以在Web角色中安裝Sphinx Search Windows服務。Windows Azure和第三方Windows服務

從我對Azure的最初研究中,我認爲「是」是因爲Web角色是運行IIS的虛擬機。因此,我應該能夠遠程訪問,安裝該服務,並且它應該可以工作。 :)

聽起來不錯?

回答

0

在閱讀您的答案並多想一想之後,我認爲放棄安裝服務的想法將是最佳的行動方案。我一直在尋找Lucene.NET的API(這可能與Sphinx相同),並且可以在代碼中封裝索引等的編寫/管理,因此不需要服務。

對於Azure,有一個使用本地和Azure存儲管理索引文件的庫,可以使用它。我已閱讀過的情景表明,可以擁有一個Web角色來處理HTTP請求並執行搜索,並通過隊列接受數據庫更改並將其寫入索引。

+0

您是指在Windows服務或WCF服務中的服務。如果WCF服務可以通過Web角色在IIS中託管。不知道獅身人面像,但我很確定您可以將Lucene.NET作爲WCF服務託管。我很確定你可以將它作爲工作者角色託管。如果你擴大到多個網站,那麼顯然搜索引擎將需要同步。 – Paparazzi 2012-07-08 18:29:35

0

嚴格來說是的,你可以做到這一點。但是,這會假設您將在一個VM實例上運行,並且該實例不需要重新啓動。

您應該考慮查看Azure工作者角色以獲取通常作爲Windows服務存在的任何功能。

+0

不幸的是,這是不可能的,因爲Windows Service是需要在Azure中安裝的第三方服務。我希望能夠爲Web角色添加某種安裝腳本,因此如果角色被移動到另一個VM,那麼腳本將安裝Windows服務。 – MotoSV 2012-07-08 09:31:01

+0

我認爲只要VM移動/重新啓動,您可能會丟失當前的索引/目錄,並且需要重新爲您的內容編制索引。您可以嘗試使用Azure存儲,但這需要Azure特定的Sphinx實現。 – Digbyswift 2012-07-08 09:38:06

+0

我明白你的意思了。因此,如果我使用Web角色將任何內容寫入本地文件存儲(不是天藍色存儲),則無法將數據複製到新VM中? – MotoSV 2012-07-08 09:47:43

1

通過RDP安裝軟件不是Web/Worker角色實例的可行解決方案,因爲這些更改不會持續。您需要從啓動腳本或從OnStart()安裝它。既然你想作爲服務來安裝,那就意味着啓動腳本,因爲它需要提升權限。注意:安裝程序必須支持無人蔘與模式,其中所有參數均通過命令行指定,無需人爲干預。

可擴展性如何?如果你的web角色有多個實例在運行,那麼sphinx可以跨兩個實例運行嗎?從我讀的內容來看,它支持符合ODBC的數據庫,並且您可能可以將其用於Windows Azure SQL數據庫。如果是這樣的話,兩臺獅身人面像引擎可以在兩臺訪問相同數據存儲的不同機器上運行嗎?如果是這樣,這聽起來像是一個可行的解決方案。

如果安裝無法自動完成,或者您需要其他類似MySQL的東西,您可能需要考慮將sphinx搜索引擎放入虛擬機(2012年6月新增)。現在你可以啓動一個Windows 2008服務器,將RDP加入它,並按照你想要的方式進行配置。