1. 程式人生 > >01分散式基礎(五)-分散式通訊框架-rmi

01分散式基礎(五)-分散式通訊框架-rmi

分散式通訊框架-RMI

回顧

  1. 分散式架構的定義以及分散式架構的演進。
  2. 分散式架構和叢集的區別
  3. TCP/UDP、全雙工、半雙工、3次握手協議、4次揮手協議
    1、FIN標識的報文給到server端
    2、server端接收到FIN報文以後,表示Client端沒有資料要發給Server端了
    3、server端傳送ACK給到Client端,表示Server端的資料已經發完了。準備關閉連結
    4、client端收到ACK報文以後,知道可以關閉連線了,傳送ACK請求到Server端,自己進入TIME-WAIT
    5、Server端接收到ACK以後,表示可以斷開連線了
    6、Client端等待一定時間後,沒有收到回覆,表示Client可以關閉連線
  4. TCP的非阻塞IO
  5. 序列化
    1.SerialVersionUID
    2.靜態變數序列化問題、Transient關鍵字、父子類的序列化問題
    3.kryo、FST、JSON、XML、protobuf、Hessian、Avro、Thrift
  6. http和https協議、RESTful規範
  7. 客戶端發起一個https請求
    a)客戶端支援的加密方式
    b)客戶端生成的隨機數(第一個隨機數)
  8. 服務端收到請求後,拿到隨機數,返回
    a)證書(頒發機構(CA)、證書內容本身的數字簽名(使用第三方機構的私鑰加密)、證書持有者的公鑰、證書籤名用到的hash演算法)
    b)生成一個隨機數,返回給客戶端(第二個隨機數)
  9. 客戶端拿到證書以後做驗證
    a)根據頒發機構找到本地的跟證書
    b)根據CA得到根證書的公鑰,通過公鑰對數字簽名解密,得到證書的內容摘要 A
    c)用證書提供的演算法對證書內容進行摘要,得到摘要 B
    d)通過A和B的對比,也就是驗證數字簽名
  10. 驗證通過以後,生成一個隨機數(第三個隨機數),通過證書內的公鑰對這個隨機數加密,傳送給伺服器端
  11. (隨機數1+2+3)通過對稱加密得到一個金鑰。(會話金鑰)
  12. 通過會話金鑰對內容進行對稱加密傳輸

分散式通訊框架-RMI

RPC

什麼是RPC

Remote procedure call protocal
RPC協議其實是一個規範。Dubbo、Thrif、RMI、Webservice、Hessain
網路協議和網路IO對於呼叫端和服務端來說是透明;

一個RPC框架包含的要素

在這裡插入圖片描述

RMI的概述

RMI(remote method invocation) , 可以認為是RPC的java版本
RMI使用的是JRMP(Java Remote Messageing Protocol), JRMP是專門為java定製的通訊協議,所以踏實純java的分散式解決方案

如何實現一個RMI程式

  1. 建立遠端介面, 並且繼承java.rmi.Remote介面
  2. 實現遠端介面,並且繼承:UnicastRemoteObject
  3. 建立伺服器程式: createRegistry方法註冊遠端物件
  4. 建立客戶端程式

如果自己要去實現一個RMI

  1. 編寫伺服器程式,暴露一個監聽, 可以使用socket
  2. 編寫客戶端程式,通過ip和埠連線到指定的伺服器,並且將資料做封裝(序列化)
  3. 伺服器端收到請求,先反序列化。再進行業務邏輯處理。把返回結果序列化返回
    在這裡插入圖片描述

在這裡插入圖片描述