6

我正在构建一个简单的反应式服务器,它应该使用来自多个客户端的传入 protobuf/protostuff 消息,在它们上执行一些业务逻辑,并可能向其他消费者发送即发即弃的消息。我想在 Netty 中实现传输和解码部分。我的问题是:将解码消息发布到 Disruptor 的环形缓冲区性能方面是否有任何意义,或者 Disruptor 提供的额外性能会被内部 Netty 调度所否定?我应该为 Netty 提供两个线程(一个用于“接受”,另一个用于“连接”组)还是只有一个更好?也许,我应该在 Netty 的处理程序中按长度字段拆分消息,并在 Disruptor 的处理程序中执行解码?

4

1 回答 1

5

要看 ;)

干扰器允许您解耦各种不同的操作,并可能并行执行它们。所以问题是你的业务逻辑有多昂贵,你的工作负载有多突发?Disruptor 用于在线程之间传输数据,特别是可能以不同消息速率运行的线程。即它允许生产线程在消费线程忙于处理最后一条消息时产生一串消息。

例如,如果您还想将消息持久化到数据库并继续发送结果,您可以将消息发布到“出站”环形缓冲区,并让您的 netty 代码从该缓冲区和数据库持久化器中使用。

您在 Netty 中花费的时间越少,eventloop您可以处理的客户端就越多,或者传输级别的消息量就越大。

于 2014-04-10T23:35:52.020 回答