0
질문 1 :클라이언트에서 서버에 대한 테스트로드 생성
작업 부하 생성기 클라이언트에서 타이머를 사용하여 서버에 메시지를 스트리밍합니다. 생성 된 쓰레드의 수나 채널 공유에 대해 다중 timertask를 사용한다는 의미입니까?
이것이로드를 생성하는 기본 방법인지 이해하고 싶습니다. 이런 식으로 다른 기하 급수 지연이나 다른 유형의 지연이있을 수 있습니다.
public class TestClientHandler extends SimpleChannelHandler {
private Timer timer = new HashedWheelTimer();
Channel channel;
public TestClientHandler() {
timer.newTimeout(new DataStreamer(this),
1000,
TimeUnit.MILLISECONDS);
}
@Override
public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) {
e.getCause().printStackTrace();
org.jboss.netty.channel.Channel ch = e.getChannel();
ch.close();
}
@Override
public void channelConnected(ChannelHandlerContext ctx,
ChannelStateEvent e) {
this.channel = e.getChannel();
ChannelFuture future = e.getChannel().write("SOMETHING");
}
}
질문 2 : 내가 요청 서로 다른 종류의 서로 다른 채널을 유지하려면 어떻게
? 우선 순위 기반 아이디어가 있습니까? OrderAwareMemoryHandler는 다른 스레드에서 논의되는 것처럼 PriorityBlockingQueue에서 플러그 인 할 때 권장되는 방법입니까?
1 : 따라서 스레드는 하나뿐입니다. Netty에서 여러 스레드에서 작업 부하를 생성하는 방법이 있습니까? 여러 클라이언트를 실행할 수 있지만 Netty가 클라이언트에서 여러 스레드를 실행해야하는 기능을 사용하려고했습니다. 나는 동시성 프레임 워크가 이것을 알고있다. Q2. 별도의 채널을 할당하여 서버에서 SLA를 사용할 수 있습니까? NIO 자체가 이벤트를 기반으로하기 때문에 이것이 의미가 있기를 바랍니다. 한 채널의 메시지는 Netty에서 처리하고 다른 유형의 메시지는 우선 순위를 낮 춥니 다. 이것은 심지어 합리적인가? –
Q1 : 일반적으로 새 채널을 만들 때 netty는이를 작업자 스레드에 할당합니다. 작업자 스레드의 총 수는 기본적으로 Number_of_cores * 2입니다. 작업자 스레드보다 채널을 많이 만들면 하나의 작업자 스레드에 더 많은 채널이 할당됩니다. 따라서 다중 스레드로드를 작성하려면 더 많은 채널을 작성해야합니다. 더 많은 스레드가 NioClientSocketChannelFactory에 대한 "workerCount"매개 변수를 조정하도록하십시오. –