本文將分享一個高可用的池化 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)建、刪除連接所耗費的服務資源是巨大的。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉無線電——不安全的藍牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現JSON轉Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應用分析 2017-07-26
- 集合結合數據結構來看看(二) 2017-07-26