我们计划用Java实现我们的新系统。由于系统的性质,需要与各种内部网/外部网/互联网系统进行交互,并与各种外部系统共享相同的逻辑(略微调整),我们计划将业务逻辑从前端移出,使其成为一种服务,并计划使用JMS互连表示层和业务逻辑层。表示层发送请求,业务逻辑层发送处理结果的响应。
在做了一个小型POC系统之后,我们发现这种方式非常有前景。但Oracle人员(我们计划将weblogic用于ap服务器和JMS服务器)表示总是存在性能问题,因为消息队列的性质不适用于请求 - 响应模式。
对于甲骨文家伙的意见有什么建议吗?我们对Java世界还是一个新手(完全没有关于java的经验,必须在内部实现这个系统,没有外包选项),虽然我们测试了我们的POC每秒大约300 req-resp(这似乎足够我们的系统),我们仍然无法确定系统在线后是否肯定会出现性能下降...
答案 0 :(得分:2)
绝对不是性能问题。
由于JMS的事务性质,您输了一点。在业务层开始处理之前,必须在表单中记录来自表示层的消息,同样必须在表示层开始处理答复之前记录答复。
然而,这种小缺点不仅可以通过在重负载期间并行处理的能力以及在极端负载下安全地排队请求的能力来补偿。 (在这些情况下,RPC应用程序只是简单地死掉JMS才会减速)。
主要问题是处理异步环境中的错误。如果您的表示层发送请求,在假设业务服务器端出现问题之前,它应该合理等待回复多长时间?如果表示层炸毁你应该对回复消息做什么,特别是如果它是某种更新?所有这些问题都可以解决,但是,你需要考虑如何。