想要改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
在10个月前关闭。
Improve this question
我正在针对新解决方案进行一些体系结构工作,该解决方案最初将在Windows Azure中运行。但是,我希望解决方案(或至少是架构/设计)是不可知的(无论实际程度如何)。有没有人在这方面做过任何工作或看过任何好的白皮书/博客文章?
我们的高级体系结构将包括一个有效载荷,该有效载荷被发送到Web服务(例如WCF),该有效载荷将被转储到队列中(出于参数考虑),而工作进程将从该队列中获取消息并对其进行处理。我们将有一个客户信息数据库,理想情况下,我们希望将其保留在云中,但是存在明显的性能考量。
渴望听到别人的想法。
干杯
戴夫
最佳答案
我认为对于云不可知论者是指对您所运行的特定平台(如GAE,Amazon EC2或Azure)不可知,并且您希望编写一个可在任何地方部署的平台。
从理论上讲,如果所有云提供商都支持相同的语言,那应该是可能的。据我了解,GAE支持Python和Java。 Amazon EC2可以在实际服务器本身上几乎使用任何东西,而Azure是一个完全的.net平台。因此,事情的实际处理方面(即编写队列Web服务和处理单元)可能很困难。
另一个障碍是,没有通用的统一API来调用云计算服务。无论如何,GAE/Azure/EC2的实现方式都是不同的,因此,其API公开的方法都是不同的,为此,您的前线代码将需要知道它将调用哪种类型的API来控制云计算资源。
但是,Web服务本质上是松散耦合的。含义是,您将努力抽象资源控制,以便可以在所需的任何云上创建实例,如果该新实例又是另一个处理Web服务的输入/计算的单元,并且公开的Web服务在GAE上是相同的以EC2为例,没有什么可以阻止这两个话题的交流了。同样,只要您在实例之间使用某种形式的Web服务/协议(protocol),您仍应该能够跨计算平台通过Internet与其他实例进行通信。也就是说,这样做会将您内部应用程序的数据公开给全世界,从而带来安全风险。
我同意disown:Java是一个不错的选择。那里有大量的EJB容器,甚至还有更多的Web服务服务器,例如Tomcat。我猜想EC2支持它(嗯,它确实可以支持,但是它们是否运行Tomcat/Geromino而不是IBM版本,收费如何,我不知道)。 GAE听起来很像limited based on this blog post-无论Google在后端做什么,他们都在设计一些非常奇怪的东西。
关于architecture - 云不可知架构?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2457735/