最近在面試過程中被問到好多次,現在想想答的都不怎麼正確。其實還是自己理解的不到位,總結一下,歡迎指正。
定義
# Restful
英文全稱爲 Representational State Transfer,即表述性狀態傳遞。
1. 面向資源-URL即資源
2. 使用HTTP協議
3. 使用HTTP動詞(GET、POST、PUT、DELETE等)來實現資源的添加,修改,刪除等操作。即通過HTTP動詞來實現資源的狀態扭轉
1) GET 用來獲取資源,
2) POST 用來新建資源(也可以用於更新資源),
3) PUT 用來更新資源,
4) DELETE 用來刪除資源
4. Server和Client之間傳遞某資源的一個表現形式,不限制格式,xml、json等
# RPC
即遠程過程調用,調用遠程計算機上的服務,就像調用本地服務一樣。也就是A服務器調用B服務器的方法的過程。
1. 調用原理
* 服務消費方(client)調用以本地調用方式調用服務;
* client stub接收到調用後負責將方法、參數等組裝成能夠進行網絡傳輸的消息體;
* client stub找到服務地址,並將消息發送到服務端;
* server stub收到消息後進行解碼;
* server stub根據解碼結果調用本地的服務;
* 本地服務執行並將結果返回給server stub;
* server stub將返回結果打包成消息併發送至消費方;
* client stub接收到消息,並進行解碼;
* 服務消費方得到最終結果。
RPC的目標就是要2~8這些步驟都封裝起來,讓用戶對這些細節透明。
2. 需要解決的問題
* 通訊,可以使用HTTP、TCP(速度快,目前框架多是它)
* 服務尋址
* 序列化,hession是種系列化組件
* 負載均衡
- 目前的RPC框架
- Hession,除了hessian協議之外,還提供了通過servlet方式實現的RPC框架
- Dubbo
- Netty
..區別
RPC是以動詞爲中心的, REST是以名詞爲中心的, 此處的 動詞指的是一些方法, 名詞是指資源.