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

Chr*_*ior 5 cloud soa heroku cloud-foundry

我目前正在考虑将SOA样式应用程序部署到云上的PAAS中.

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

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

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

我的问题是:

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

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

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

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

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

谢谢!

ebo*_*ard 5

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

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

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

希望这有道理:)