您好,登錄后才能下訂單哦!
怎樣實現簡單的RPC框架,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
1.定義上下文對象
在RpcContext對象中增加一個map類型的參數對象,可以存放任意擴展的參數。
2.RPC請求對象中增加上下文參數
RpcRequest增加如下字段,用于服務端調用。
3.RpcInvocation接口中增加上下文參數
在后續新增加的過濾器使用。
4.客戶端代理
RpcProxy在組裝RpcRequest對象時,從RpcContext中獲取最新的參數傳遞給RpcReuest,從而傳遞給服務端。
5.客戶端上下文過濾器
主要作用就是從本線線程變量中獲取參數傳遞給RpcInvocation。
6.服務端上下文過濾器
服務端上下文過濾器與客戶端的作用相反,是從RpcInvocation中獲取參數傳遞給本地線程變量RpcContext,后面在執行服務端方法時就可以方便的通過RpcContext獲取指定變量。
7.過濾器排序
因為我們的RpcContext是個本地線程變量,而且Rpc服務端是多線程處理業務,所以需要在請求結束后及時的清理掉相關本地線程變量信息。這就需要清理上下文的過濾動作在最后執行,否則有會出現服務端方法還沒有執行就被清空了參數。創建一個工具類,專門用來處理獲取客戶端以及服務端過濾器。增加order字段,升級排列。
8.過濾器工具類
創建ActiveFilterUtil,包含下面兩個函數。
(1)過濾器排序函數,獲取特定注解的類,然后根據注解上的排序屬性升序排序。
(2)獲取RPC過濾器列表,提供給客戶端以及服務端的一個協助方法,便于客戶端以及服務構建過濾器職責鏈。
9.客戶端以及服務端初始化
獲取過濾器map的邏輯改為調用上面ActiveFilterUtil.getFilterMap方法。
看完上述內容,你們掌握怎樣實現簡單的RPC框架的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。