在PAAS中部署SOA样式应用程序

时间:2012-10-09 07:12:53

标签: heroku cloud soa cloudfoundry

我目前正在考虑部署SOA样式 在云上应用于PAAS。

我正在评估一些PAAS提供商 包括Cloud Foundry,Heroku和Jelastic。

目前,为了简单起见,我只有一个grails应用程序和一个带有嵌入式Jetty服务器的服务jar文件。这将扩展为多个服务和Web前端,中间的服务通过兔子mq和http的混合进行通信。

我现在正在努力了解如何将这些部署到PAAS上的拓扑结构。

我的问题是:

  1. 是否必须将所有服务和Web应用程序部署为PAAS中的顶级“应用程序”(例如,可以使用dynos) 在Heroku?)

  2. 如果是这样,可以限制对服务的访问,以便只能从webapp(最终网关)向他们发出请求。

  3. 它们是否需要作为顶级应用程序存在才能从负载平衡(和自动扩展)中受益,因为每个服务可能有多个实例。

  4. 如果每个服务都有自己的数据存储区,我再次假定这需要它是一个应用程序?

  5. 如果有办法在不使用每个服务的完整应用程序的情况下实现此目的,那么节点如何单独寻址?他们可以使用某种目录服务注册自己吗?

  6. 谢谢!

1 个答案:

答案 0 :(得分:5)

我会回答CloudFoundry,因为这是我最熟练的(以及我付出的代价:)。

序言: CloudFoundry有应用程序的概念(运行的代码片段,可能会或可能不会暴露给外部世界有一个{{1 } 运行时)和服务(数据存储等,RabbitMQ属于该类别)。您部署 apps 并将它们绑定到零个或多个服务

  1. 假设您想要重新部署,我会回答“是” 并扩展你称之为服务的每一个(即。不在服务中 CF感觉,但在SOA意义上单独
  2. 对于CloudFoundry,答案是“否”,您必须以编程方式执行此操作。请注意,如果服务仅通过 *通信 *,例如* RabbitMQ,那么您可以将它们部署为StandAlone应用程序,但它们首先不会是Web可寻址的
  3. CloudFoundry中没有“顶级”和“其他级别”。应用程序是您可以扩展的。绑定到URL的应用程序会自动进行负载平衡。
  4. YES。请注意,您可以将多个SOA“服务”打包为一个“应用程序”,并将部分内容与CloudFoundry服务A和其他部分进行通信,与服务B进行通信。请参阅1)了解缺陷。
  5. 从以前的答案中,答案是否定的。如果您使用例如 RabbitMQ作为您的消息代理,则路由密钥将用作一种“目录”。
  6. 希望这是有道理的:)