因此,我正试图最终了解基于云的企业应用程序是如何工作的,以及它们的体系结构通常是什么样的。比如说,我使用了像亚马逊这样的云提供商。我假设(如果我错了请纠正我的话),我将支付1+虚拟机的费用,这些虚拟机将根据我的应用程序的需要装载一堆软件。
我很困惑像、jclouds、或Terracotta这样的框架是如何融入其中的。jclouds自诩为“帮助您在云中入门的开源库”,并列出了一些没有有意义的示例对我来说意义不大的巨大特性。Terracotta自诩为一个高比例的集群框架。为什么我需要使用像jclouds这样的东西?我会用它来做什么具体的设想呢?
再一次,如果我使用亚马逊作为我的云提供商,他们不是已经是高度规模的吗?为什么我需要云中的兵马俑?
发布于 2011-09-28 22:36:51
应用程序“进入云端”至少有两个方面。
首先,必须对节点进行管理:在所有节点上部署应用程序,监视它们,启动新节点以实际扩展,检测和替换失败节点,实现新应用版本的一些更新场景等等。通常,没有工具就无法合理地做到这一点。JClouds适用于这里,因为它涵盖了其中的一些要点。
其次,你的应用程序本身必须是“云准备好的”。你不能把一个任意的应用程序放在多个节点上,并期望它能够很好地扩展。这里的要点是定义如何扩展对所有节点之间共享数据的访问(SQL数据库、NoSQL数据存储、可能的会话复制、.)。通常,您使用一些现有的框架/appserver/数据存储来管理您的共享状态。Terracotta就是其中之一,它提供了一种在多个节点上的JVM实例之间共享内存的有效方法。
发布于 2011-09-28 19:11:11
因此,您有您的Linux机器(虚拟实例),它运行良好。但突然之间,你需要扩大规模--也就是说,当需求上升时,你需要启动更多的实例,并在需求下降时关闭它们。因此,您可以做的基本上是使用Amazon启动EC2实例--为它们提供从管理控制台(甚至更多)可以做的一切。但是使用amazon的API基本上把你的手绑在了amazon上。对于像JCloud这样的框架,您所做的事情类似于(这是伪代码):
CloudProvider provider = new CloudProvider.getProvider("Amazon");
provider.authenticate("username", "password");
provider.startInstance("some option", numOfInstances);因此,假设您必须进行扩展,并且您使用JClouds部署在亚马逊上-您将使用类似于上面的内容,但是突然您决定从Amazon迁移到Rackspace,因此,您可以更改应用程序的所有逻辑,而不是重新设计与提供实例和使用它们有关的所有逻辑。
CloudProvider provider = new CloudProvider.getProvider("Amazon");到某种程度上
CloudProvider provider = new CloudProvider.getProvider("RackSpace");继续使用身份验证方法和startInstance,但是库将讨论如何实际“将”此库方法“转换”到给定的云提供者支持的特定方法。基本上,这是一种抽象代码的方法,它必须处理底层云提供商--只要它提供服务,您就不应该关心它是谁,对吗?
https://stackoverflow.com/questions/7587988
复制相似问题