2012-07-08 74 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加入它,并按照你想要的方式进行配置。