<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                >[info] 分布式通信的基礎 分布式通信的基礎還是來自于不同地方的服務器,即計算機與計算機之間的網絡通信與它們之間的數據 傳輸。所采取的協議是什么? **通信協議**:TCP、UDP、WebSocket、HTTP ***** 為啥不用UDP和WebSocket? 數據可靠性與普遍性,目前HTTP可通過 Upgrade: websocket 頭升級為 WebSocket協議 ***** **協議的支持還需要看下TCP/IP和OSI模型:** ![](https://img.kancloud.cn/02/9a/029aa5ba8469baa3a7f251fcaec4f230_582x365.png) >[info] 通信的方式 方式類型:消息隊列、RPC、HTTP、Web Service * RPC RPC全稱為remote procedure call,即遠程過程調用。 ***** 借助RPC可以做到像本地調用一樣調用遠程服務,是一種進程間的通信方式 比如兩臺服務器A和B,A服務器上部署一個應用,B服務器上部署一個應用,A服務器上的應用想調用B 服務器上的應用提供的方法,由于兩個應用不在一個內存空間,不能直接調用,所以需要通過網絡來表 達調用的語義和傳達調用的數據。 >[] 注:RPC并不是一個具體的技術,而是指整個網絡遠程調用過程。 **RPC架構組成:** ![](https://img.kancloud.cn/b0/a4/b0a45065cedbfa1383d1282537120415_680x418.png) 一個完整的RPC架構里面包含了四個核心的組件,分別是 `Client,Client Stub,Server以及Server Stub` ,這個Stub可以理解為存根。 * 客戶端(Client),服務的調用方。 * 客戶端存根(Client Stub),存放服務端的地址消息,再將客戶端的請求參數打包成網絡消息,然后通過網絡遠程發送給服務方。 * 服務端(Server),真正的服務提供者。 * 服務端存根(Server Stub),接收客戶端發送過來的消息,將消息解包,并調用本地的方法 **RPC的調用過程:** ![](https://img.kancloud.cn/aa/fc/aafc6c67441152650acdf940594d057b_634x452.png) 1. 客戶端(client)以本地調用方式(即以接口的方式)調用服務 2. 客戶端存根(client stub)接收到調用后,負責將方法、參數等組裝成能夠進行網絡傳輸的消息體 (將消息體對象序列化為二進制); 3. 客戶端通過sockets將消息發送到服務端; 4. 服務端存根( server stub)收到消息后進行解碼(將消息對象反序列化); 5. 服務端存根( server stub)根據解碼結果調用本地的服務; 6. 本地服務執行并將結果返回給服務端存根( server stub); 7. 服務端存根( server stub)將返回結果打包成消息(將結果消息對象序列化); 8. 服務端(server)通過sockets將消息發送到客戶端; 9. 客戶端存根(client stub)接收到結果消息,并進行解碼(將結果消息發序列化); 10. 客戶端(client)得到最終結果 ***** RPC的 **核心模塊就是通訊和序列化**,常見RPC的組件:GRPC、Swoft、TARS-PHP等 ***** **RPC和HTTP的優缺點:** ![](https://img.kancloud.cn/d4/9a/d49ab36294c42e0e3a80c42455696daa_605x532.png) * RPC主要用于公司內部的服務調用,性能消耗低,傳輸效率高,服務質量方便。 * http主要用于對外的異構環境,瀏覽器接口調用,app接口調用,第三方接口調用等。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看