![Windows 集群是否具有成本竞争力,还是我应该只安装 Mono 和 Linux?](https://linux22.com/image/523496/Windows%20%E9%9B%86%E7%BE%A4%E6%98%AF%E5%90%A6%E5%85%B7%E6%9C%89%E6%88%90%E6%9C%AC%E7%AB%9E%E4%BA%89%E5%8A%9B%EF%BC%8C%E8%BF%98%E6%98%AF%E6%88%91%E5%BA%94%E8%AF%A5%E5%8F%AA%E5%AE%89%E8%A3%85%20Mono%20%E5%92%8C%20Linux%EF%BC%9F.png)
Windows 集群是否具有成本竞争力,还是我应该只安装 Mono 和 Linux?
我的应用程序是高度并行的,几乎不需要跨处理器协调,也不需要处理器之间的消息传递,可以在机器之间均匀分配,因此它们应该都大致同时完成,并且划分问题和合并结果的时间与计算时间相比很小,因此我不介意使用像 WCF(二进制 SOAP)这样的东西来分配工作,而不是使用某种我认为比 WCF(二进制 SOAP)更有效的特定于集群的操作系统。
这是一个将现有的 Windows/C# 实现(在单台计算机上运行速度太慢)转移到集群的问题。
请发表意见...
答案1
这听起来像是 Azure 中可以很好解决的一个问题。
使用 1 个 Web 角色来输入作业。然后,此 Web 角色会拆分作业并将各部分放入队列中。
在后端,您有工作者角色,他们从队列中接收作业并执行工作。
您无需投资硬件。您只需按实际使用量付费。例如,您可以运行 100 台机器一小时。
答案2
如果您考虑收购和设置成本,那么答案永远是否定的。
Windows 服务器的价格几乎全面高于 Linux 服务器,而且随着您使用的服务器越来越先进,您为 Windows 支付的硬件成本以外的额外费用也会增加:当您开始扩大规模时,SQL Server 等工具会变得非常昂贵。此外,Windows 文化更像是一个付费市场,因此,如果您需要用于某些附带任务的附加工具是为 Windows 编写的,那么它们更有可能要求您花费大量金钱,而不是为 Linux 编写的,无论程序质量如何。
当您为每台服务器、每个工具和每个许可证支付更多费用时,就没有收支平衡点,在此之后成本就会突然降低。
话虽如此,在 Linux 服务器集群上使用 mono 运行 C# 可能需要一些真正的专业知识,例如性能调优等,而 Linux 专家往往比 Windows 专家更稀少且更昂贵。对于有 mono 等经验的管理员来说,情况更是如此,而 mono 并不是 Linux 社区的宠儿。
另一方面,在 Windows 上运行 C# 是 Windows 服务器架构的全部内容。有专门针对这一概念的课程、认证和社区。相比之下,寻找训练有素、经验丰富且经过认证的管理员出奇地容易且便宜。
话虽如此,我更喜欢使用 ASP.NET MVC2 用 C# 编写代码,但我在 Linux 下用 Mono 运行 C# 代码。我以管理 Windows 和 Linux 服务器为生;而 Windows 服务器的可靠性和维护时间要高得多。这不是 FUD,只是我的个人经验。