最近在專案中需要把客戶端的一些資訊傳送到伺服器上,聽起來是個很簡單的需求,但是實際考慮下,覺得如果自己手工實現,工作量也不小,而且盡是些繁瑣且無聊的事情,遂考慮用現成的庫來實現。對比了protocol buffer與thrift後,本著偷懶到底的原則,選擇了thrift,因為thrift本身提供了rpc框架,而protocol buffer僅是個序列化的庫而已。
首先是編譯thrift,這裡參考官方說明,需要先裝boost庫,但是如果要使用nonblocking server的話,還要再把libevent庫也裝上。
thrift提供了三種服務模型,分別是t******server, tthreadpoolserver和tnonblockingserver,除去第乙個一般僅做測試用,後兩個都可以在實際生產中拿來用。在客戶端不多的情況下,可以選用tthreadpoolserver,但是要注意tthreadpoolserver的客戶端只要不從伺服器上斷開連線,就會一直佔據伺服器的乙個執行緒,當伺服器執行緒池所有執行緒都在被使用時,新到來的客戶端將排在佇列裡等待,直到有客戶端斷開連線,使伺服器端執行緒池出現空閒執行緒方可繼續被提供服務,所以使用這種模型時,一定要注意客戶端不使用時不要長時間連線伺服器,如果確實有這種需求,請使用tnonblockingserver。
說實話,單純從**量上來講,使用nonblocking server並不比threadpool server多了多少,誰讓**都是由thrift程式生成的,使用者只需填上實際處理的**即可。
SpringBoot Valid各種註解使用說明
notempty 作用在string collection map 陣列上,不能為null,size 0 notblank 只能用於string,不能為null,也不可以是 即trim 後長度大於0 notnull 作用於任何型別,不能為null,可以為空 asserttrue 必須為true as...
Thrift 各種服務端和客戶端實現
簡單的單執行緒服務模型 import org.apache.thrift.texception import org.apache.thrift.tprocessor import org.apache.thrift.protocol.tbinaryprotocol import org.apach...
Android中各種drawable的使用
又如,通知欄圖示要多大呢?如果大小不合適,則顯示通知的時候看到的圖示可能顯示不全或者其它問題,要想知道通知欄圖示多大合適,找android系統設計的那些呀,路徑為 sdk platforms android 15 data res,在這裡搜尋notification,然後看看相同名字的通知欄圖示在不...