有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

云端上的java动态集群调整

我是一名Java开发人员,正在考虑将AWS、Rackspace和Heroku作为我应用程序的潜在云提供商。以前只使用过传统的web主机(虚拟专用服务器计划),我有点不知所措

我的理解是,有了云,您可以根据需要生成/杀死虚拟设备(具有预配置软件堆栈的虚拟机,如应用服务器、数据库服务器等)。因此,如果现在是午夜或假日,没有人使用我的应用程序,那么我可以减少运行实例的数量并节省一些钱。但是,如果这是一个星期六的早晨,我正危险地接近峰值负载,我可以生成新的服务器,并且我的应用程序不会崩溃

因此,如果我的理解有任何错误或缺陷,请首先纠正我

假设我对云的看法或多或少是正确的,那么我应该构建自己的监视器来监视应用程序使用的突然增加/减少/模式(我假设基于网络流量和带宽?!)。当流量增长到某一点时,我应该实例化更多的VM,反之亦然,当流量减慢时

因为JClouds允许您这样做,所以我的监视器将只使用JClouds API来生成/杀死服务器

让我窒息的是:我应该使用什么算法/公式来告诉我的监视器何时生成/杀死虚拟机?我编写了一个初步的算法,基本上可以确保我在任何时候都拥有两倍于我所需要的“马力”(VMs)。监视器大约每10秒轮询一次每个节点,如果系统上的当前负载已改变某个增量,它允许ClusterResizer启动并确定是否需要更多/更少的节点

虽然我花了几个小时设计这个动态调整大小系统的大纲/框架,但我还是想在我走得太远之前停下来,在这里做一次理智检查,以防我做了一些不必要的、错误的或纯粹是疯狂的事情

其他云应用程序如何监控和调整其虚拟机的大小?我应该熟悉哪些算法或最佳实践?提前谢谢


共 (1) 个答案

  1. # 1 楼答案

    在AmazonEC2上,您不需要自己实现监控,有一个名为cloudwatch的功能可以为您进行弹性伸缩——当负载增加时自动伸缩,当负载减少时自动伸缩。因此,您不需要自己实现监控服务。在RackSpace上,有一个称为Scalr的第三方自动缩放解决方案。可能还有一个与Amazon的CloudWatch相当的本地RackSpace功能,您应该进行调查,以避免从头开始构建此基础设施