【问题标题】:Deploying an SOA style application within a PAAS在 PAAS 中部署 SOA 风格的应用程序
【发布时间】:2012-10-09 07:12:53
【问题描述】:

我目前正在考虑部署 SOA 风格 应用到云端的 PAAS。

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

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

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

我的问题是:

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

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

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

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

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

谢谢!

【问题讨论】:

    标签: heroku cloud soa cloud-foundry


    【解决方案1】:

    我会为 CloudFoundry 回答问题,因为这是我最精通的(也是我得到报酬的:)

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

    1. 假设您想要重新部署的能力,我会回答“是” 并扩展您所谓的服务(不是服务中的 CF 意义上,但在 SOA 意义上)单独
    2. 对于 CloudFoundry,答案是“否”,您必须以编程方式执行此操作。请注意,如果服务仅通过 *例如* RabbitMQ 进行通信,那么您会将它们部署为独立应用程序,但它们一开始就无法通过 Web 寻址
    3. CloudFoundry 中没有“顶级”和“其他级别”。这些应用程序是您可以扩展的。绑定到 URL 的应用程序会自动进行负载平衡。
    4. 是的。请注意,您可以将多个 SOA“服务”打包为一个“应用”,并让其中的一部分与 CloudFoundry 服务 A 对话,而其他部分与服务 B 对话。请参阅 1) 了解缺点。
    5. 从以前的答案来看,答案是否定的。如果你使用例如 RabbitMQ 作为你的消息代理,那么路由键被用作一种“目录”。

    希望这是有道理的:)

    【讨论】:

    • 感谢您的回答,这证实了我对 Cloud Foundry 实现这种模式的想法。关于 2,是否将这种安全性留给底层 IAAS 实施?有什么方法可以从外部世界对兔子实例进行寻址?
    • 很高兴我能帮上忙。您可能会对我的同事 Chris Richardson 的关于开发松散耦合应用程序的preso 感兴趣。谷歌为它。 2) 是的,有基础设施层安全性。但是您也不应该忘记您的应用程序安全性,当然要使用框架(例如,如果您使用 Spring,则使用 Spring Security)。关于可从外部访问的服务,有一个“隧道”功能可用于调试和初始设置/转储:docs.cloudfoundry.com/tools/vmc/caldecott.html
    猜你喜欢
    • 2012-07-12
    • 2014-04-12
    • 2011-06-02
    • 2016-07-05
    • 2013-07-14
    • 1970-01-01
    • 2018-05-05
    • 1970-01-01
    • 2016-04-06
    相关资源
    最近更新 更多