2015-09-25 222 views
1

我正在开发一个使用SignalR管理websockets并允许我的客户端相互对话的应用程序。关于Azure工作者角色的MongoDB

我打算在Azure工作者角色上托管这个后台。由于我的SignalR请求携带大部分时间保存在数据库中的数据,因此我想知道NoSQL的MongoDB而不是经典的SQL Server/Entity Framework对应是否是一种好方法。

假设我的应用程序的数据类型对于其中的大多数数据类型都是字符串,我认为MongoDB将是一个可靠的高性能解决方案,它将允许我摆脱Azure的SQL数据库成本。

有关信息,Azure工作者角色将在具有以下硬件的计算机上运行:1个核心CPU,3.5GB RAM和50GB SSD存储。

你觉得我在这个建筑的良好开端?

感谢

+0

在工作角色上运行的MongoDB实例或群集的问题是机器是无状态的。您不希望依赖主动节点和仲裁器 - 如果没有其他问题,请考虑使用SaaS解决方案(MongoLab/MongoDB)。我已经很成功地为MongoDB运行Azure虚拟机群集,但我必须定期修补Linux映像。 –

回答

0

Azure中拥有自己的本土的NoSQL数据库文件名为DocumentDB,有你有我看看吗?如果我是你,我会使用DocumentDB,除非你有一些你没有提到的特殊需求,但是从你发布的很少的需求信息DocumentDB可以做得很好。在基本功能方面,我不认为它与MongoDB非常相似,请参阅this article for a comparison between Azure DocumentDB and MongoDB

+0

尽管这个链接可能回答这个问题,但最好在这里包含答案的重要部分,并提供供参考的链接。如果链接页面更改,则仅链接答案可能会失效。 – Nullify

+0

@ 200OK查看我的更新。谢谢。 – 2015-09-25 12:43:10

+0

感谢您的回复。我在寻找DocumentDB,它似乎仅限于10GB的存储空间,并且涉及额外的成本。而我的工作人员角色提供的50GB固态硬盘空间更大,而且我没有在只有websocket的情况下使用它。 – Rotan

2

你觉得我在这个建筑的良好开端?

总之,没有。

用户询问有关在工作角色上运行Redis的相似问题 - Setting up Redis on Azure cloud service worker role - 该Q/A上的所有内容都与MongoDb上下文相关。

我建议你阅读我的回答,因为它进入更多细节,但为什么这是一个糟糕的架构方法的概述:

  1. 当工人的角色将被重新启动,你不能保证Azure服务结构。
  2. 在一个真实的Mongo实现中,你将运行一个集群内的多个节点,并且只有一个工作者角色(就像你在问题中提到的那样),这是不可能的。
  3. 将需要管理你的MongoDb安装在工作者角色,他们根本不是为此设计的。

如果您确实在使用Mongo,我建议您使用MongoLabs等托管解决方案(如前面的答案中所述),或考虑将其托管在Azure IaaS VM上。

如果您不是在使用Mongo,我会诚恳地建议您看看Azure DocumentDb(也是上面提到的),微软的Azure NoSQL产品 - 我已经在多个生产系统中使用过它,它当然是一个有能力的NoSQL解;授予,它可能不具备MongoDb的所有功能。

如果您正在寻找用于缓存数据的NoSQL解决方案(即,不是长期存储),我建议你看看Azure Redis Cache,这是一个非常强大的Redis产品。

相关问题