我正在为我的应用程序开发Microservices API。我从Spring Boot应用程序开始。我创建了两个工件- “带有嵌入式tomcat的 业务代码 ” 和 “没有嵌入式tomcat的业务代码” 。
比较性能结果时,我可以看到“非嵌入式tomcat”(即在独立的tomcat上执行)由于本机执行而提供了良好的输出。
那么, 关于实现,嵌入式tomcat和独立tomcat 基本上有 什么区别?
两次执行之间的性能如何变化?
我发现了此问题的真正根本原因。
APR(Apache可移植运行时)在tomcat线程执行中起着重要作用。
默认情况下,嵌入式tomcat执行NIO。 NIO和BIO是基于Java的执行,而APR是本机执行。当我们比较NIO和APR的性能时,APR的速度要快得多。
实际上,所有基于Linux的tomcat软件包都随附于tomcat lib文件夹下的APR库。
在嵌入式tomcat中启用APR后(即Spring Boot),与独立tomcat相比,性能执行相同。
http://tomcat.apache.org/tomcat-7.0-doc/apr.html