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

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

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

我目前正在努力了解如何将这些部署到PAAS的拓扑。

我的问题是:

  • 是否必须将所有服务和Web应用程序都部署为PAAS中的顶级“应用程序”(例如,可以使用dynos
    在Heroku中?)
  • 如果是这样,可以限制对服务的访问,以便只能从Web应用程序(最终是网关)向它们提出请求。
  • 它们是否需要作为顶级应用程序存在才能从负载平衡(和自动扩展)中受益,因为每个服务可能有多个实例。
  • 如果每个服务都具有自己的数据存储,我再次假设这将要求它成为一个应用程序?
  • 如果有一种方法可以在不为每个服务使用完整应用程序的情况下实现此目标,那么如何分别寻址节点?他们可以在某种目录服务中注册自己吗?

  • 谢谢!

    最佳答案

    我将为CloudFoundry回答,因为这是我最精通的(以及所支付的费用:)

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

  • 如果您想要重新部署的功能,我会回答"is"
    并扩展您所谓的服务(即不在
    CF意义上,但在SOA意义上)
  • 对于CloudFoundry,答案是“否”,您必须以编程方式执行该操作。请注意,如果服务仅通过*例如* RabbitMQ进行通信,则您将它们部署为StandAlone应用,并且它们首先通过
  • 不能通过Web寻址。
  • CloudFoundry中没有“顶级”和“其他级别”。您可以扩展应用程序。绑定(bind)到URL的应用程序将自动进行负载平衡。
  • 是。请注意,您可以将多个SOA“服务”打包为一个“应用程序”,并使部分内容与CloudFoundry服务A对话,而其他部分与服务B对话。有关缺点,请参见1)。
  • 从先前的答案中得出的答案为“否”。如果您使用例如RabbitMQ作为您的消息代理,但是路由键用作一种“目录”。

  • 希望这是有道理的:)

    关于heroku - 在PAAS中部署SOA风格的应用程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12794676/

    10-14 18:34
    查看更多