gpt4 book ai didi

apache-camel - 与 camel-jetty 和 camel-servlet 相比,Camel-reSTLet 的性能更好——有什么具体原因吗?

转载 作者:行者123 更新时间:2023-12-05 07:30:28 29 4
gpt4 key购买 nike

我创建了一个 spring-boot 应用程序,我在其中使用 camel-reSTLet 组件将我的 camel 路由公开为 rest 端点。

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

现在我正在使用 JMeter 进行性能分析。我观察到使用 10 个线程时,我的 Camel 路由性能(平均延迟 220 毫秒和吞吐量 ~38)与我通过 JMeter 直接调用相同的南向休息端点时从 JMeter 获得的结果相匹配(平均延迟 210 毫秒和吞吐量~39) .

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

  • 当我直接调用南向休息端点时:延迟 2230 毫秒和吞吐量 ~20
  • 当我通过 Camel 路线调用同一个南行休息终点时,延迟为 230 毫秒,吞吐量约为 38。

我通过将其余组件从 camel-reSTLet 更改为 camel-servelet、camel-jetty 进行了相同的测试,结果与我通过 JMeter 直接调用南向休息端点时从 JMeter 获得的结果相匹配(平均延迟2230 毫秒 & 吞吐量 ~20)。

谁能帮助我理解与其他 camel 组件(camel-jetty 或 camel-servlet)相比,camel-reSTLet 组件获得更好性能的原因?

最佳答案

camel-reSTLet默认是异步的,更适合你的测试。您可以将端点上的选项 synchronous=true 设置为相同的条件。

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

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

或者在 camel 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 端点(您已经将其用作客户端),它是完全响应式(Reactive)的并且可以处理大型并发连接。

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

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

关于apache-camel - 与 camel-jetty 和 camel-servlet 相比,Camel-reSTLet 的性能更好——有什么具体原因吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52271939/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com