Thrift 各种server 使用模式

来源:互联网 发布:绿城和万科哪个好 知乎 编辑:程序博客网 时间:2024/05/29 03:20

最近在项目中需要把客户端的一些信息发送到服务器上,听起来是个很简单的需求,但是实际考虑下,觉得如果自己手工实现,工作量也不小,而且尽是些繁琐且无聊的事情,遂考虑用现成的库来实现。对比了protocol buffer与thrift后,本着偷懒到底的原则,选择了thrift,因为thrift本身提供了RPC框架,而protocol buffer仅是个序列化的库而已。

   首先是编译thrift,这里参考官方说明,需要先装boost库,但是如果要使用nonblocking server的话,还要再把libevent库也装上。

    thrift提供了三种服务模型,分别是TSimpleServer, TThreadPoolServer和TNonblockingServer,除去第一个一般仅做测试用,后两个都可以在实际生产中拿来用。在客户端不多的情况下,可以选用TThreadPoolServer,但是要注意TThreadPoolServer的客户端只要不从服务器上断开连接,就会一直占据服务器的一个线程,当服务器线程池所有线程都在被使用时,新到来的客户端将排在队列里等待,直到有客户端断开连接,使服务器端线程池出现空闲线程方可继续被提供服务,所以使用这种模型时,一定要注意客户端不使用时不要长时间连接服务器,如果确实有这种需求,请使用TNonblockingServer。

    说实话,单纯从代码量上来讲,使用Nonblocking server并不比ThreadPool server多了多少,谁让代码都是由thrift程序生成的,用户只需填上实际处理的代码即可。

1 0
原创粉丝点击