WSO2 esb UDP 到 TCP 转换 - 提高性能

WSO2 esb UDP to TCP conversion - Improve performance

我想将 UDP 流转换为 TCP/HTTP 并将其提供给 WSO2 CEP。因此,对于 UDP 到 HTTP 的转换,我使用了 WSO2 ESB。如我所见,使用 ESB 代理可以将大约 2000UDP 消息顺利转换为 HTTP。在那种情况下,ESB 占用了大约 2.2GB RAM。但我需要比这更高的性能(每秒大约 50,000 次转换)。

我的转换ESB代理如下。有什么办法可以达到上述性能吗? (我假设 ESB 在这里使用 HTTP NIO)。

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="UDPProxy"
       transports="udp"
       statistics="disable"
       trace="disable"
       startOnLoad="true">
   <target>
      <inSequence>
         <property name="OUT_ONLY" value="true" scope="default" type="STRING"/>
         <payloadFactory media-type="xml">
            <format>
               <events xmlns="">
                  <event>
                     <metaData>
                        <http2>dddd</http2>
                     </metaData>
                  </event>
               </events>
            </format>
            <args>
               <arg value="eee"/>
            </args>
         </payloadFactory>
      </inSequence>
      <endpoint>
         <address uri="http://127.0.0.1:9783/endpoints/http2">
            <suspendOnFailure>
               <errorCodes>-1</errorCodes>
               <progressionFactor>1.0</progressionFactor>
            </suspendOnFailure>
            <markForSuspension>
               <errorCodes>-1</errorCodes>
            </markForSuspension>
         </address>
         <property name="OUT_ONLY" value="true"/>
         <property name="messageType" value="application/xml" scope="axis2"/>
      </endpoint>
   </target>
   <parameter name="transport.udp.port">9998</parameter>
   <parameter name="transport.udp.contentType">text/plain</parameter>
   <description/>
</proxy>

对于上述转换,我使用 ESB 可以实现的最大 TPS 约为每秒 3500。那就是 axis2_nhttp 配置。最好的解决方案是使用单独的 UDP 到 TCP/HTTP 程序,这样我们可以获得高吞吐量(不使用 ESB)。

无论如何,我需要这个对话,因为 CEP 不接受 UDP 消息。所以我认为最好的解决方案是使用提到的 'separate UDP to TCP/HTTP program' 为 CEP 编写一个 UDP 适配器(接收器)。在那种情况下,我每秒最多可以发送 100,000 条 udp 消息。