Rest和RPC

最近在面試過程中被問到好多次,現在想想答的都不怎麼正確。其實還是自己理解的不到位,總結一下,歡迎指正。

定義

# 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是種系列化組件
 * 負載均衡

Rest和RPC

  1. 目前的RPC框架
    • Hession,除了hessian協議之外,還提供了通過servlet方式實現的RPC框架
    • Dubbo
    • Netty
      ..

      區別

      RPC是以動詞爲中心的, REST是以名詞爲中心的, 此處的 動詞指的是一些方法, 名詞是指資源.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章