<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-35  評論-33  文章-0  trackbacks-0
            當我們淡到RPC服務框架,放眼世界范圍,我目前知道的主流有thrift,fingle,grpc等。當然大型互聯網公司都會有自己的RPC服務與治理框架。經過一段時間的調研,本著簡單,高效的原則,最終選擇thrift.具體原因,等接下來寫到服務篇的時候再細說。

           對于曾經使用過thrift來開發RPC服務的同學來講,經常碰到就是client去連server端的時候,程序首先要聲明連接協議,我們以socket為例。然后開始連接到服務端,調用遠端的方法,關閉連接。

    代碼片斷如下:

    伴隨著服務越來越多,如果我們的代碼中充斥這些duplicate code,心里總是癢癢的,非得把它干掉。聯想到當初最開始寫 jdbc常用的crud方法那段時間,代碼里面也是挺多的open,close種種。其實想想,如果能有連接池,這個問題也就好解決了。于是,首先在github上找找,有沒有現成的實現。果然,有一位前輩已經實現了。于是果斷下載,地址是https://github.com/PhantomThief/thrift-pool-client

    下面是這個客戶端所實現的功能,感覺還是相當不錯的。

    A Thrift Client pool for Java

    raw and type safe TServiceClient pool

    Multi backend servers support

    Backend servers replace on the fly

    Backend route by hash or random

    Failover and failback support

    jdk 1.8 only

    不過,看了md之后,發現only support jdk8。心里涼了半截,難道老外都在用jdk8了?于是花了半天時 間,熟讀了新的語法之后,準備改造前輩的代碼。通讀代碼之后,發現里面有好幾個類使用lambda語法,flatmap,collection,filter.另外就是函數是編程function.最后還有Supplier。好在guava已經實現了后兩者,我只需要改改lambda的語法。

    核心類說明:

    ThriftClientImpl:它是客戶端的實現類,主要是業務方經常用到的iface方法,先看圖:



    里面有兩段代碼需要改動。第一個就是設置執行的方法過濾,第二個是代理方法里面調用,實際就是業務方真正調用的方法塊。關鍵點是javassist它是一種字節碼處理技術,可以動態改變方法塊。本段代碼其實類似一個代理工廠,它代理了所有業務服務的執行片斷

    DefaultThriftConnectionPoolImpl,ThriftConnectionFactory:thrift連接池實現,基本是apache pool的通用連接池處理。

    其中sokcet.open對應著makeobject.socket.close對應著destroyobject


    ThriftClientUtils:這個類有一個獲取接口中所有方法的名稱集合的方法,把lambda的語法改成熟悉的方式。


    其它類也是做了相關調整,這里就不一一說明了。最后講一下調用。

    1連接池初始化


    2 構建單例的rpc服務,因為rpc服務可能在多臺機器上,所以會有分片


    3 協議的聲明


    4 調用


    5結果,因為我有一個簡單的計算服務,已經發布在測試機器了,這里就是1+99的結果。


    主體寫完了,改天會把github的地址貼上來,請隨時關注。

    更新地址 ----》》》thrift-pool-client



    我的微信公眾號,歡迎溝通學習。
    posted on 2016-06-29 18:14 alexcai 閱讀(1529) 評論(2)  編輯  收藏

    評論:
    # re: 我的RPC服務構建之路《客戶端篇--改造基于jdk8的thrift pool client》 2016-06-30 00:42 | 蜜桃網
    路過支持一下  回復  更多評論
      
    # re: 我的RPC服務構建之路《客戶端篇--改造基于jdk8的thrift pool client》 2016-06-30 09:33 | alexcai
    @蜜桃網
    多謝  回復  更多評論
      

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 麻豆亚洲AV成人无码久久精品| 久久狠狠高潮亚洲精品| 久久精品熟女亚洲av麻豆| 一个人看的www在线观看免费| 亚洲网红精品大秀在线观看| 永久在线观看免费视频| 久久精品视频亚洲| 国产精品偷伦视频观看免费 | 亚洲AⅤ永久无码精品AA| 日韩国产欧美亚洲v片| 四虎影视精品永久免费网站| 亚洲av日韩av永久无码电影 | 红杏亚洲影院一区二区三区| 一级毛片试看60分钟免费播放| 亚洲中久无码不卡永久在线观看| 九九久久精品国产免费看小说 | 亚洲日韩中文在线精品第一| 一级有奶水毛片免费看| 亚洲VA中文字幕无码毛片| 日韩精品人妻系列无码专区免费| 亚洲高清视频免费| 夫妻免费无码V看片| 最新亚洲人成网站在线观看| 国产国拍精品亚洲AV片| 日韩免费人妻AV无码专区蜜桃| 亚洲一区中文字幕| 国产一级淫片视频免费看| 中文字幕免费视频精品一| 久久久亚洲裙底偷窥综合| 毛片免费观看的视频在线| 人妻18毛片a级毛片免费看| 亚洲AV无码专区电影在线观看| 免费影院未满十八勿进网站| 小说专区亚洲春色校园| 国外亚洲成AV人片在线观看| 91热成人精品国产免费| 视频一区在线免费观看| 亚洲毛片在线观看| 亚洲?V乱码久久精品蜜桃 | 久久精品九九亚洲精品| 免费看男女下面日出水视频|