1

我正在为云代工设计一个应用程序。

将应用程序在其服务“接缝”处拆分到不同的进程,即每个服务在(可能多个)不同的进程上运行是最佳实践吗?

如果是这样,在这些进程之间进行通信的最佳方式是什么?通过 MQ 服务删除?这对特定服务的升级有何影响(这可能会破坏 Java API)?

如果不是,这是否意味着我应该在每个 DEA 中运行所有服务?开销不会是灾难性的吗?

4

2 回答 2

1

您可能会发现 Cloud Foundry 开发人员倡导者之一的这套牌很有用 - http://www.slideshare.net/chris.e.richardson/decomposing-applications-for-deployability-and-scalability-cf-india-julyaugust-2012

正如 Dan 提到的,RabbitMQ 是一个明显的解决方案,可以解决实例和应用程序部分之间的通信需求,并且作为 Cloud Foundry 服务堆栈的一部分“免费”提供。这并不意味着其他协议永远都不合适,但像消息传递层这样的东西肯定可以通过更简单地实现水平横向扩展来提高可伸缩性。

于 2012-09-05T15:13:35.790 回答
1

我不是 Java 方面的权威,但是是的,某种消息队列非常适合在应用程序的不同实例之间进行通信,例如 RabbitMQ 或 Resque。

我不确定您的最后一句话是什么意思,DEA 负责运行应用程序的实例,它们对服务的运行方式没有任何影响。

于 2012-09-04T14:15:12.817 回答