我正在构建一个简单的反应性服务器,它应该使用来自多个客户端的传入的protobuf/Protu瘤消息,对它们执行一些业务逻辑,并可能向其他用户发送触发和遗忘消息。我想在Netty中实现传输和解码部分。我的问题是:向Disruptor的环形缓冲区性能发布解码消息是否有意义--或者Disruptor提供的额外性能将被内部Netty调度所否定?我应该为Netty提供两个线程(一个用于“接受”,另一个用于“连接”组),还是一个更好?也许,我应该在Netty的处理程序中按长度字段拆分消息,并在Disruptor的处理程序中执行解码吗?
发布于 2014-04-10 23:35:52
视情况而定;)
干扰器允许您解耦各种不同的操作,并潜在地并行执行它们。所以问题是你的业务逻辑有多贵,你的工作量有多大?Disruptor用于在线程之间传输数据,特别是可能以不同的消息速率运行的线程。也就是说,它允许生成线程在消耗线程忙于处理最后一条消息时产生消息突发。
例如,如果您还想将您的消息持久化到数据库以及发送结果,您可以将消息发布到“出站”循环缓冲区中,并让您的netty代码与DB持久化程序一起使用。
您在Netty的eventloop中花费的时间越少,您可以处理的客户端就越多,或者传输级别上的消息量越大。
https://stackoverflow.com/questions/22980275
复制相似问题