我正在为云代工厂设计一个应用程序。
最佳做法是将应用程序的服务“接缝”拆分为不同的进程,即每个服务是否在(可能是多个)不同的进程上运行?
如果是这样,这些流程之间的最佳沟通方式是什么?通过MQ服务删除?如何升级特定服务(可能会破坏Java API)?
如果没有,这是否意味着我应该在每个DEA中运行所有服务?开销不会是灾难性的吗?
答案 0 :(得分:1)
我不是Java的权威,但是,某种消息排队非常适合在应用程序的不同实例,RabbitMQ或Resque之间进行通信。
我不确定你的上一个陈述是什么意思,DEA负责运行一个应用程序实例,它们对服务的运行方式没有任何影响。
答案 1 :(得分:1)
您可以通过其中一个Cloud Foundry Developer Advocates找到此套牌有用 - http://www.slideshare.net/chris.e.richardson/decomposing-applications-for-deployability-and-scalability-cf-india-julyaugust-2012
正如Dan所提到的,RabbitMQ是实例和应用程序部分之间通信需求的明显解决方案,并且作为Cloud Foundry服务堆栈的一部分“免费”提供。这并不意味着其他协议永远不合适,但肯定像消息传递层这样可以通过更简单地实现水平扩展来提高可扩展性。