2015年阿里巴巴中介軟體比賽rpc框架

小金子發表於2016-02-18

原始碼: https://github.com/jinhang/my-RPC-Framwork.git

賽題要求:

一個簡單的RPC框架

RPC(Remote Procedure Call )——遠端過程呼叫,它是一種通過網路從遠端計算機程式上請求服務,而不需要了解底層網路技術的協議。RPC協議假定某些傳輸協議的存在,如TCP或UDP,為通訊程式之間攜帶資訊資料。在OSI網路通訊模型中,RPC跨越了傳輸層和應用層。RPC使得開發包括網路分散式多程式在內的應用程式更加容易。

框架——讓程式設計人員便捷地使用框架所提供的功能,由於RPC的特性,聚焦於應用的分散式服務化開發,所以成為一個對開發人員無感知的介面代理,顯然是RPC框架優秀的設計。

題目要求

1.要成為框架:對於框架的使用者,隱藏RPC實現。

2.網路模組可以自己編寫,如果要使用IO框架,要求使用netty-4.0.23.Final。

3.支援非同步呼叫,提供future、callback的能力。

4.能夠傳輸基本型別、自定義業務型別、異常型別(要在客戶端丟擲)。

5.要處理超時場景,服務端處理時間較長時,客戶端在指定時間內跳出本次呼叫。

6.提供RPC上下文,客戶端可以透傳資料給服務端。

7.提供Hook,讓開發人員進行RPC層面的AOP。

注:為了降低第一題的難度,RPC框架不需要註冊中心,客戶端識別-DSIP的JVM引數來獲取服務端IP

RPC其實並不難。通俗來說就是客戶端通過一定的協議把方法名稱、引數型別還有引數傳給伺服器,然後伺服器呼叫對應方法,完成以後再把結果傳回來給客戶端,僅此而已。


相關文章