云计算为SOA弹性服务提供内存和计算容量

使用云计算基础设施–或基础设施即服务(Iaas)–允许为SOA弹性服务提供内存和计算容量。达到高度的弹性服务有两个主要的好处。首先,它允许服务快速扩展来满足迅速增长的需求。另外一个好处是,当暂时的扩展结束后,可以缩减到原来,这可以在峰值之间节约计算费用。

英国中间件咨询公司C2B2的Steve Millidge讨论说,作为TheServerSide.com网站的Java学院的一部,弹性服务怎样感知,怎样实现。Millidge有超过10年的专业服务咨询经验,他从Java 1.0版本开始就一直致力于Java工作,而且参加了多个Java规范请求专家组。

在介绍企业架构是怎样建立映射于云基础设施的服务架构之前,Millidge定义了与云中服务有关的“弹性”的含义。“弹性很快,它是自动的,而且他提供了可以扩展和缩减的能力,”他说。他解释说“很快”的含义是几分钟,而不是几天;而“自动”意味着无需操作员的介入。

Millidge说,组织往往做好扩展的准备,但做没有适当地给缩减做准备。准备很重要,他说,因为它“涉及到了移除过度的计算容量,而且会有服务运行在那些【虚拟】的实例上。他们需要小心的关闭,而不丢失任何数据,而且不能系引起系统的任何问题。”

负载监测是建立在弹性服务基础设施中的关键功能,Millidge说。他说,重要的是要有度量在手,来监测每秒中服务请求的数量、服务的内存使用和服务的CPU负载。“并且得到的信息必须反馈给系统,然后可以触发额外的计算容量,”Millidge说。

了解增加容量的时间和方法很重要。你必须给每个服务扩展性都计算出正确的度量,Millidge说,“这样你才能将合适的因素置于应用程序性能监测【系统】中,从而设置正确的触发。”

例如,如果一个服务在它的基线容量上可以支持100个并发用户,那么达到尖峰150个并发用户就可能打破服务的服务等级协议。这就意味着应用程序性能监测应该设置成这样:当它监测到120个并发用户时,它就应该增加容量到这样一个值:服务将有能力支持更多的用户。

现在,服务仓库是必要的。Millidge说,服务仓库解决了服务的可暴露性问题。“如果我们有一个服务在一个计算主机上并为了容量启动两个新的计算主机,那么该服务的任何客户机必须能够找到那些服务器来使用服务。这往往是通过仓库实现的。”

这对承担负载自己注册的新实例和不在有必要的而要自己清理注销的旧实例都很重要。

据Millidge所说,云模型中弹性服务的一个关键因素是“网络是动态的。服务器来来去去。负载均衡必须有能力动态发现和使用服务。”他警告说要注意静态类型,开发人员会在已知节点数量的本地数据中心中使用它。然而,动态类型对于一些Java开发团队可能是一种挑战。

Millidge指出了一些小技巧给动态云服务。

-部署异构服务。不同的服务可以部署到不同的平台上。例如,有些服务可能支持高计算平台,而另外一些服务在内存密集型平台上会更好。多平台可能会适用一个单独的云基础设施厂商。

-不使用依赖关系。看看部署架构和中间件基础设施,确保没有对网络编码的静态假设网络,以及没有对服务部署位置的假设。

-避免单点故障服务。服务需要独立于其它服务,这样当任何一个服务出现故障时,其它服务才不会被波及。