当前位置: 首页 > 知识库问答 >
问题:

使用Apache Camel和Netty对TCP流量进行负载平衡会导致事务失败

柴英锐
2023-03-14
    null

1.这是Apache Camel-Netty的有效用例吗?我应该看米娜还是其他人?

2.是否可以尝试将tcp通信路由到JMS或其他组件,然后最终到达tcpendpoint?

3.我是否需要编码器/解码器,或者这个配置应该工作?

编辑2:

我增加了客户端的接收超时,并立即注意到预期缓冲区长度的不匹配问题下降到小于1%。但是,我看到使用和不使用Camel时每个事务的响应时间都很大;几乎高出10倍。你能帮我减少每个事务的响应时间吗?我的客户端收到的消息从5000到20000字节不等。以下是我的最新路线:

from(“netty:tcp://this-ip:9445?sync=true&allowdefaultcodec=false&workercount=20&requesttimeout=30000”).threads(20).loadbalance().roundrobin().to(“netty:tcp://backend-1:9445?sync=true&allowdefaultcodec=false”,“netty:tcp://backend-1:9445”,“netty:tcp://backend-2:9445”,“sync=true

我还使用了某些性能增强,比如:context.SetAllowUseOriginalMessage(false);disableJMX();Context.SetMessageHistory(false);Context.SetlazyLoadTypeConverters(true);

你能告诉我如何减少个人交易次数的正确方向吗?


共有1个答案

隗轶
2023-03-14

对于netty4组件,没有名为DefaultCodec的参数。它被称为AllowDefaultCodec。http://camel.apache.org/netty4.html同样,请先尝试类似的操作。

from("netty4:tcp:\\this-ip:9445?textline=true&sync=true").to("netty4:tcp:\\backend1:9445?textline=true&sync=true")

上面的意思是发送的数据是普通文本。如果您发送字节或其他东西,您将需要为netty提供解码/编码来处理数据。

和一个旁注。在运行Camel路由之前,通过sockettest之类的标准tcp工具手动测试发送测试消息,以验证一切正常。然后通过camel实现相同的操作。您可以在http://sockettest.sourceforge.net/找到sockettest。

 类似资料:
  • 我有两条溪流。一个是事件流,另一个是数据库更新流。我想用从DB更新流构建的信息丰富事件流。 事件流非常庞大,使用5个字段进行分区。这给了我很好的分配。DB流不那么喋喋不休,并且使用两个字段进行分区。我目前正在使用两个公共字段连接这两个流,并使用flapMap来丰富第一个流。flatMap运算符使用ValueState维护状态,状态由两个公共字段自动键入。 除了实现自定义逻辑来手动提取键并更新维护状

  • 我正在使用编写负载均衡器。 负载平衡器侦听本地传输地址。就Netty而言,只创建了一个频道来监听该地址。然后,(单线程事件循环组的)单线程将传入的UDP数据包调度到工作线程池进行处理(这里,处理意味着执行负载平衡)。 在出站端,可以使用多个服务器。对于每个接收到的UDP数据包,关联的工作线程选择一个服务器,并将UDP数据包转发到此服务器。为了转发UDP数据包,需要一个通道。 我可以看到四种方法:

  • 我有一个使用Spring Boot和Netflix OSS构建的微服务。我使用过中央配置服务器、Eureka和Zuul。由于可伸缩性,服务的多个实例运行在不同的端口上。所有实例都在Eureka中注册,但请求只会发送到最后一个注册的服务器。 ZUUL配置

  • 我是微服务的新手。(学习阶段)。我有一个问题。我们在云中部署微服务。(例如 AWS)。云已经提供了负载平衡和日志。我们还在Spring Boot中实现了负载平衡(功能区)和日志(Rabbit MQ和Zipkin)。这两种实现有什么区别?我们两者都需要吗?有些人可以回答这些问题吗? 提前感谢。

  • 试图自学如何使用库伯内特斯,但有一些问题。 我的下一步是尝试使用LoadBalancer类型的服务来访问nginx。 我建立了一个新的集群并部署了nginx映像。 然后,我为LoadBalancer设置服务 设置完成后,我尝试使用LoadBalancer入口(我在描述LoadBalancer服务时发现)访问nginx。我收到一个此页面无法工作的错误。 不太确定我哪里出错了。 kubectl获得sv

  • Eureka是否提供开箱即用的负载平衡,是否需要另一个依赖项? 为什么是丝带而不是尤里卡? 为什么通过API网关使用负载平衡? Spring-cloud-starter-loadbalancer,为什么需要这个? 客户端平衡还是服务器端负载平衡,为什么用一个胜过另一个?