thrift 是一个开源是rpc服务框架,支持各种主流的开发语言,性能高效稳定。前段时间由于需要排查线上服务的问题,把thrift non blocking server的源码看了好几遍,发现其服务设计得很简洁,所以做了个总结。
一般情况下,后台开发服务都是用C/C++开发,个别情况下用python,server模式无非是用threadpool或者nonblocking server模式,相比threadpool,nonblocking server要更加常用一些。因为 threadpool 模式是一个客户端连接服务端就单独用一个线程来处理它的请求,这种情况适合一些客户端数量固定且处理请求的时间较长的场景;而nonblocking server更加适合维护大量活跃连接,每个请求处理时间较短的场景。
注:本文用的thrift版本是最新的版本:0.10.0
一般情况我们在main函数中是这样去写我们的启动程序的:
int main(int argc, char **argv) {
FLAGS_max_log_size = 200;
FLAGS_logbuflevel = 0;
google::ParseCommandLineFlags(&argc, &argv, true);
google::InitGoogleLogging(argv[0]);
installQuitSignalHandler();
shared_ptr
handler(new SecurityServiceHandler());
shared_ptr