本文將分享一個高可用的池化 Thrift Client 及其源碼實現,歡迎閱讀源碼(Github)并使用,同時歡迎提出寶貴的意見和建議,本人將持續(xù)完善。

本文的主要目標讀者是對 Thrift 有一定了解并使用的童鞋,如對 Thrift 的基礎知識了解不多或者想重溫一下基礎知識,推薦先閱讀本站文章《和 Thrift 的一場美麗邂逅》。

下面進入正題。

為什么我們需要這么一個組件?

我們知道,Thrift 是一個 RPC 框架體系,可以非常方便的進行跨語言 RPC 服務的開發(fā)和調用。然而,它并沒有提供針對多個 Server 的 Smart Client【1】。比如,你有一個服務 service,分別部署在 116.31.1.1 和 116.31.1.2 兩臺服務器上,當你需要從 Client 端調用該 service 的某個遠程方法的時候,你只能在代碼中顯式指定使用 116.31.1.1 或者 116.31.1.2 其中的一個。這種情況下,你調用的時候無法預知所指定 IP 對應的服務是否可用,并且當該服務不可用時,無法隱式自動切換到調用另外一個 IP 對應的服務。也就是說,服務的狀態(tài)對你并不是透明的,并且無法做到服務的負載均衡和高可用。

此外,當你調用遠程方法時,每次你都得新建一個連接,當請求量很大時,不斷的創(chuàng)建、刪除連接所耗費的服務資源是巨大的。

延伸閱讀

學習是年輕人改變自己的最好方式-Java培訓,做最負責任的教育,學習改變命運,軟件學習,再就業(yè),大學生如何就業(yè),幫大學生找到好工作,lphotoshop培訓,電腦培訓,電腦維修培訓,移動軟件開發(fā)培訓,網站設計培訓,網站建設培訓學習是年輕人改變自己的最好方式