回覆列表
  • 1 # 劉環環993

    dubbo

    1) 遠端通訊協議基本原理

    a) 網路通訊:將二進位制流從一臺計算機傳輸到另外一臺計算機,基於傳輸協議和網路IO來實現

    b) 傳輸協議有 http 、 tcp 、 udp, 都是在基於 Socket 概念擴充套件而來

    c) 網路IO,主要有 bio 、 nio 、 aio, 所有的分散式應用通訊都基於這個原理而實現

    過程:

    狹義RPC過程

    a) 假設兩臺伺服器A,B,一個應用部署在A伺服器上,想要呼叫B伺服器上應用提供的函式/方法,由於不在一個記憶體空間,不能直接呼叫,需要透過網路來表達呼叫的語義和傳達呼叫的資料

    b) 首先A和B建立TCP連結,並且確定好RPC框架的網路埠,能夠進行網路通訊

    c) 然後A伺服器將需要呼叫B伺服器的方法和引數進行序列化(Serialize)

    d) 透過第一步建立的連結,將序列化後的二進位制流傳送給B

    e) B伺服器收到請求後,需要對引數進行反序列化,恢復為記憶體中的表達方式

    f) 然後B伺服器找到對應的方法(定址的一部分)進行本地呼叫,然後得到返回值

    g) B伺服器對返回值再次進行序列化,並且透過相同的途徑傳送給A

    h) A對B伺服器返回的資訊再進行反序列化,得到返回結果

    i) 三個關鍵點

    Call ID對映: 要呼叫的方法名, 必須是唯一的

    序列化和反序列化: 二進位制流

    網路傳輸: 透過rpc協議

    分散式RPC過程

    a) 傳輸協議: thrift,hession等

    b) client代理,服務引用方呼叫方法透過代理傳送遠端呼叫

    c) 協議編解碼壓縮,如序列化和反序列化 netty

    d) 註冊中心,服務註冊和服務發現,存放服務資訊 zookeeper

    e) 負載均衡,服務容錯策略其他:服務降級,服務隔離,服務治理

    4) dubbo是一個分散式RPC框架

    a) 包含四個角色服務提供者(provider),消費者(consumer),服務註冊配置中心(registry),監控(monitor)

    b) 服務註冊中心包含configServer+zookeeper,也支援redis

    c) 服務提供者provider

    啟動時主動與ConfigServer建立Scoket長連線

    同時將自己的IP,提供的服務名稱,埠等資訊直接傳送給ConfigServer

    configserver將provider提供的服務資訊傳送到zookeeper

    zookeeper透過watcher機制推送提供者資訊給消費者(此時可能沒有服務消費者)

    d) 服務消費者consumer

    啟動時主動與ConfigServer建立Socket長連線

    同時將自己的IP等相應資訊傳送給ConfigServer

    configserver將consumer提供的資訊傳送到zookeeper

    拿到服務提供者資訊後,與它們都建立連線,後面就可以直接呼叫服務

    當有多個服務提供者的時候,Client根據一定的規則來進行負載均衡,如輪詢,隨機,按權重等

    消費者自己宕機了, 沒法自己通知configserver和zookeeper, 只能透過心跳機制

    e) 服務註冊配置中心: configServer+zookeeper

    configserver跟所有服務提供者和消費者作心跳檢測

    當某個Server不可用,就觸發修改zookeeper中服務提供者的請求

    zookeeper資訊發生變更後,透過watcher機制通知消費者,即推送最新的服務提供者資訊

    消費者重新連線服務提供者

  • 中秋節和大豐收的關聯?
  • 現在想用照片了,怎麼樣轉換成JPEG格式?