如何修改现有的java应用程序以利用nodejs功能?

时间:2015-03-11 06:49:13

标签: node.js tomcat

基本上,我有一个在apache tomcat上运行的现有java应用程序。

但我想检查nodejs是否可以帮助任何扩展现有Java应用程序的方式(即由于node.js的事件驱动性质而能够处理大量请求),这样我就不必更改代码java应用程序......所以我想出了一个架构,如下所示: -

我想通过node.js服务器接收请求(即使用node.js的属性来处理与apache tomcat相比的大量请求)并通过它们之间的消息队列将其传递给apache tomcat(它可以是任何。我最感兴趣的是使用ActiveMQ,因为tomcat和activemq都是apache产品)。

我想将响应从apache tomcat传递回nodejs服务器..(这看起来有点棘手,即如何维护应该响应的请求)

我想确认这种架构是否可行。如果是的话,那怎么样...... ???如果不是,那么请提出其他建议......

1 个答案:

答案 0 :(得分:0)

Node.js很快,因为它使用异步IO。这意味着,当存在文件操作时,它不会阻止下一个操作,并让服务器在同一个线程上执行其他操作。

这改变了node.js上的程序如何工作以及必须使用事件驱动代码的方式。

您正在考虑的机制只有在您可以将请求分解为node.js服务器上的多个任务并且为异步调用每个子任务的适当参数的apache服务器的情况下才有用,这将意味着多个任务将由node.js在同一请求上启动,node.js将等待每个任务完成的事件。

这可能需要做很多工作,这意味着您将控制器逻辑迁移到node.js并在java中保留您的views / html等和数据访问层。

请注意,如果您无法为单个请求并行启动任务,由于Apache方面的逻辑类型,您将最终重新开发整个应用程序,然后才能获得可观的性能提升。

更好的方法是针对更快的后端执行步骤更改。部分步骤概述如下

  1. 使用服务器端的json或xml创建应用程序API的慢速部分,并使用不需要处理的单个或多个html静态文件发送视图。为静态html添加缓存也会有所帮助。在前端需要大量的开发。
  2. 将大量时间成本api调用移至同一服务器上运行的node.js服务器,连接到相同的数据库/数据源。