Thrift Server的选择

参见:https://github.com/m1ch1/mapkeeper/wiki/Thrift-Java-Servers-Compared


之前用TNonblockingServer,发现一个严重的问题:server端是按客户端的请求顺序依次处理,而不是并发处理。这是完全不可接受的。Google的结果便有了本文。

简单地说,用TThreadedSelectorServer或TThreadPoolServer替换TNonblockingServer。究竟采用哪个参见本文最前面的链接。

推荐TThreadedSelectorServer。代码如下:

TNonblockingServerSocket tnbSocketTransport = new TNonblockingServerSocket(
addr);
TThreadedSelectorServer.Args args = new TThreadedSelectorServer.Args(
tnbSocketTransport);
args.transportFactory(new TFramedTransport.Factory());
args.protocolFactory(new TCompactProtocol.Factory());
args.processor(new XXX.Processor<>(new XXXProcessor()));
args.selectorThreads(10);
args.workerThreads(300);
server = new TThreadedSelectorServer(args);


需要根据硬件和软件的实际情况设置两个参数,selectorThreads和workerThreads。

你可能感兴趣的:(Thrift Server的选择)