【问题标题】:One war calling another in Tomcat一场战争在 Tomcat 中召唤另一场战争
【发布时间】:2016-04-08 16:10:41
【问题描述】:

我目前正在实现一个小型应用程序 A。此应用程序 A 从用户那里获取一些对象并进行一些预处理,然后将这些对象传递给不同的 Web 应用程序 B,最终将存储这些对象的信息。

现在问题是:从应用程序 A 调用应用程序 B 的可能方法是什么?哪一个效率最高(就运行速度而言)?

此调用是单向的,可能可以异步完成,并且总是在同一个 tomcat 服务器中发生。

【问题讨论】:

  • 你可以使用webservice来做到这一点,B调用A提供的服务
  • 从消息队列到通过不同协议(例如 REST/HTTP)直接连接的大量可能性。不过,您现在不应该担心效率。
  • @RafikBELDI:感谢您的意见,您说的是哪种网络服务?对于运行时效率,您会推荐哪种类型?
  • @Kayaman 为什么我不应该担心效率呢?将每个调用保持在 10 毫秒以下是一项硬性要求,并且在此期间必须进行大量繁重的计算,因此效率实际上是我主要关心的问题..
  • @kajk 好吧,因为你似乎不知道你在做什么,因为你在问这个问题。您主要关心的应该是学习在您的 Web 应用程序之间以 any 方式进行通信,而不是想知道您没有的解决方案的理论速度。但至少现在你有一个可以用谷歌搜索的关键字(网络服务),但你离解决方案还有很长的路要走。

标签: java tomcat tomcat7


【解决方案1】:

最好的方法是在架构方面对其进行更改:单体与微服务。

您可以将两个应用程序中的 REST、WSDL(soap)服务公开给其他应用程序,也可以在外部公开。

通常 REST 没有 SOAP 标准化,WSDL 也需要这样的合同分期付款

REST 独立于协议,可以使用任何有标准化 URI 方案的协议

【讨论】:

  • 遗憾的是,我没有足够的时间重写整个应用程序 B 以将其模块化为多个微服务。但无论如何,这超出了这个问题的范围。休息或肥皂API的开销不是很大吗?难道没有其他方法可以在同一个 tomcat 服务器中的应用程序之间以更少的开销进行通信吗?
【解决方案2】:

使用内存中的消息队列,例如 ZeroMQ,它提供快速异步通信、不断打开的连接(避免 REST 会出现的连接延迟)以及许多其他功能。

【讨论】:

  • 对不起,我有一段时间没有使用 SO,因为我自己的研究通常已经足够了。我没有看到“征求建议”的选项。非常感谢您提供 MQ 指针,这似乎是一个非常好的选择。
  • 不用担心,当问题没有足够的信息时,从回答者的角度来看只是令人沮丧。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-08
  • 1970-01-01
  • 2015-03-19
  • 1970-01-01
相关资源
最近更新 更多