<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] ### Rpc 全稱**Remote Procedure Call,遠程過程調用**,調用遠端的方法就像調用本地的一樣 ### RPC和HTTP 區別 HTTP和RPC不是 對等 的概念 `RPC是一個完整的遠程調用方案`,它包括了:接口規范+序列化反序列化規范+通信協議等。 而`HTTP只是一個通信協議`,工作在OSI的第七層,不是一個完整的遠程調用方案。 所以可以說 RPC是能夠基于 HTTP 實現,也可以不基于,基于更下一層的 TCP/ UDP協議 ### RPC原理 ![](https://img.kancloud.cn/1e/1d/1e1d31c33964073c93fd38bd0ab2bef5_843x430.png) ①服務調用方(client)以本地調用方式調用服務; ② client stub接收到調用后負責將方法、參數等組裝成能夠進行網絡傳輸的消息體; ③ client stub找到服務地址,并將消息發送到服務端; ④ server 端接收到消息; ⑤ server stub收到消息后進行解碼; ⑥ server stub根據解碼結果調用本地的服務; ⑦ 本地服務執行并將結果返回給server stub; ⑧ server stub將返回結果打包成能夠進行網絡傳輸的消息體; ⑨ 按地址將消息發送至調用方; ⑩ client 端接收到消息; ? client stub收到消息并進行解碼; ? 調用方得到最終結果。 ### GRPC grpc只是一個框架,是對rpc的封裝,類似的框架還有`thrift`等。 > 目標是只需要關心第1步和最后1步,中間的其他步驟統統封裝起來,讓使用者無需關心 #### grpc解決的rpc三大問題 ①協議約定。gRPC 的協議是 Protocol Buffers,是一種壓縮率極高的序列化協議,Google 在 2008 年開源了 Protocol Buffers,支持多種編程語言,所以 gRPC 支持客戶端與服務端可以用不同語言實現。 ②傳輸協議。gRPC 的數據傳輸用的是 Netty Channel, Netty 是一個高效的基于異步 IO 的網絡傳輸架構。Netty Channel 中,每個 gRPC 請求封裝成 HTTP 2.0 的 Stream。 ③服務發現。gRPC 本身沒有提供服務發現的機制,需要通過其他組件。 ### RPC接口和傳統的http接口的區別 1. 傳輸協議 >RPC:可以基于TCP協議,也可以基于HTTP協議。 > HTTP:基于HTTP協議。 2. 傳輸效率 >RPC:使用自定義的TCP協議,可以讓請求報文體積更小,或者使用HTTP2協議,也可以很好的減少報文的體積,提高傳輸效率。 > HTTP:如果是基于HTTP1.1的協議,請求中會包含很多無用的內容,如果是基于HTTP2.0,那么簡單的封裝以下是可以作為一個RPC來使用的,這時標準RPC框架更多的是服務治理。 3. 服務治理 >RPC:能做到自動通知,不影響上游。 HTTP:需要事先通知,修改Nginx/HAProxy配置。
                  <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>

                              哎呀哎呀视频在线观看