2017-02-28 73 views
0

我有一個節儉的服務器應用程序和另一個客戶端應用程序通過Apache節儉通信。Singleton Apache Thrift客戶端比多個客戶端實例更好嗎?

3個問題:

1 - 在我的客戶端應用程序,創建節約客戶端和打開載通信的時候,是它更好地重複使用相同的客戶端和運輸爲整個應用程序生命週期單身(又名總是打開),保持運輸機打開,或者最好創建一個新的客戶機,打開運輸機,然後在每次與節儉服務器通話時關閉它。

2 - 爲什麼?

3 - 就性能而言,是否會改變任何事情(考慮通過同一客戶端打開和關閉傳輸和數據吞吐量的開銷)?

回答

2

'1 &'2。具有I/O堆棧(proto/trans)的單個Thrift客戶端代表單個連接。安裝和拆卸的連接費用相對較高,因此如果您定期使用客戶端,那麼保留它通常是個好主意。但是,客戶端對象通常不是線程安全的,因此如果您的應用程序是多線程的,則需要管理對客戶端的訪問,以便RPC請求/響應操作被序列化。 '

'3。如果經常發出RPC請求,打開和關閉連接會增加很多開銷,所以通常最好保持連接打開。另一方面,如果您很少發出RPC請求,那麼在不使用它們時保持連接處於打開狀態會佔用服務器上的資源,因此最好爲每個稀疏請求打開和關閉。

我的真空建議是爲每個獨立線程創建一個客戶端,但真正的答案是對每個案例進行實驗並測量結果,選擇最快/最便宜的結果。