2017-02-28 116 views
0

我有一个节俭的服务器应用程序和另一个客户端应用程序通过Apache节俭通信。Singleton Apache Thrift客户端比多个客户端实例更好吗?

3个问题:

1 - 在我的客户端应用程序,创建节约客户端和打开载通信的时候,是它更好地重复使用相同的客户端和运输为整个应用程序生命周期单身(又名总是打开),保持运输机打开,或者最好创建一个新的客户机,打开运输机,然后在每次与节俭服务器通话时关闭它。

2 - 为什么?

3 - 就性能而言,是否会改变任何事情(考虑通过同一客户端打开和关闭传输和数据吞吐量的开销)?

回答

2

'1 &'2。具有I/O堆栈(proto/trans)的单个Thrift客户端代表单个连接。安装和拆卸的连接费用相对较高,因此如果您定期使用客户端,那么保留它通常是个好主意。但是,客户端对象通常不是线程安全的,因此如果您的应用程序是多线程的,则需要管理对客户端的访问,以便RPC请求/响应操作被序列化。 '

'3。如果经常发出RPC请求,打开和关闭连接会增加很多开销,所以通常最好保持连接打开。另一方面,如果您很少发出RPC请求,那么在不使用它们时保持连接处于打开状态会占用服务器上的资源,因此最好为每个稀疏请求打开和关闭。

我的真空建议是为每个独立线程创建一个客户端,但真正的答案是对每个案例进行实验并测量结果,选择最快/最便宜的结果。