与骆驼式码头和骆驼式servlet相比,骆驼式马具的性能更好-有任何特殊原因吗?

时间:2018-09-11 08:38:32

标签: apache-camel restlet

我创建了一个spring-boot应用程序,在其中我使用camel-restlet组件将我的骆驼路线作为其他端点公开。

我的骆驼路线很简单:它们接受来自北向休息端点的请求,进行请求处理,通过camel-netty4-http组件调用另一个南向休息端点,处理响应并将其发送回北向。

现在,我正在使用JMeter进行性能分析。我观察到有10个线程时,我直接通过JMeter调用相同的南行其余端点时,我的骆驼路由性能(平均延迟220ms和吞吐量〜38)与从JMeter获得的结果相匹配(平均延迟210ms和吞吐量〜39) 。

但是当我在Jmeter中将线程数从10增加到100或更多时,结果很奇怪:

  • 当我直接呼叫向南的其余端点时:延迟2230 ms和吞吐量〜20
  • 当我通过骆驼路线呼叫相同的向南休息终点时,延迟为230毫秒,吞吐量约为38。

我只是通过将其余组件从骆驼-restlet更改为骆驼-servelet,进行了相同的测试,结果与我从JMeter直接通过JMeter调用Southbound rest端点时得到的结果相匹配(avg Latency 2230毫秒和吞吐量〜20)。

有人能帮助我理解与其他骆驼组件(骆驼式码头或骆驼小服务程序)相比,使用骆驼-座套组件获得更好性能的原因吗?

1 个答案:

答案 0 :(得分:0)

默认情况下,骆驼式座便器是异步的,并且更适合您的测试。您可以将端点上的选项sync = true设置为相同条件。

<from uri="restlet:/path/?synchronous=true" />

http://camel.apache.org/restlet.html

或在骆驼servlet上启用异步:

<servlet> 
  <servlet-name>CamelServlet</servlet-name> 
  <display-name>Camel Http Transport Servlet</display-name> 
  <servlet-class>org.apache.camel.component.servlet.CamelHttpTransportServlet</servlet-class> 
  <init-param> <param-name>async</param-name> <param-value>true</param-value> </init-param> 
  <load-on-startup>1</load-on-startup> 
  <async-supported>true</async-supported>
</servlet>

您还可以尝试netty4端点(您已经将其用作客户端),该端点具有完全的反应性并且可以处理大型并发连接。

<from uri="netty4-http:http://0.0.0.0:{{port}}/path/">

http://camel.apache.org/netty4-http.html