<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之旅 廣告
                [RPC原理詳解](https://blog.csdn.net/cbbbc/article/details/50675240) [序列化的作用](https://blog.csdn.net/cbbbc/article/details/55214562) ***** [Go RPC 開發指南](https://doc.rpcx.io/) [用 rpc 實現遠程過程調用](https://github.com/unknwon/the-way-to-go_ZH_CN/blob/master/eBook/15.9.md) ***** RPC 是兩個子系統之間進行的直接消息交互,它使用操作系統提供的套接字來作為消息的載體,以特定的消息格式來定義消息內容和邊界。 RPC 的客戶端通過文件描述符的讀寫 API (read & write) 來訪問操作系統內核中的網絡模塊為當前套接字分配的發送 (send buffer) 和接收 (recv buffer) 緩存。 >戶端進程寫 RPC 指令消息到內核的發送緩存中,內核將發送緩存中的數據傳送到物理硬件 NIC,也就是網絡接口。NIC 負責將翻譯出來的模擬信號通過網絡硬件傳遞到服務器硬件的 NIC。服務器的 NIC, 再將模擬信號轉成字節數據存放到內核為套接字分配的接收緩存中,最終服務器進程從接收緩存中讀取數據即為源客戶端進程傳遞過來的 RPC 指令消息。 >消息從用戶進程流向物理硬件,又從物理硬件流向用戶進程,中間還經過了一系列的路由網關節點。 **一次 RPC 過程如下圖所示:** ![](https://img.kancloud.cn/65/f8/65f86f3e7e2ee8d8e53913533cd37871_811x432.png) ***** **完整的 RPC 框架 ** 在一個典型 RPC 的使用場景中,包含了服務發現、負載、容錯、網絡傳輸、序列化等組件,其中“RPC 協議”就指明了程序如何進行網絡傳輸和序列化。 ![](https://img.kancloud.cn/85/cc/85ccd491a28a66f3a1707ee7345ea3b2_1440x961.png) **RPC 核心功能** RPC 的核心功能是指實現一個 RPC 最重要的功能模塊,就是上圖中的”RPC 協議”部分: ![](https://img.kancloud.cn/96/58/965870d07dbc0448cb6cda021b0b1b4e_602x179.png) 一個 RPC 的核心功能主要有 5 個部分組成,分別是:客戶端、客戶端 Stub、網絡傳輸模塊、服務端 Stub、服務端等。 ![](https://pic2.zhimg.com/80/v2-e1f83338420d6640a73a677eac81afb5_1440w.jpg) 下面分別介紹核心 RPC 框架的重要組成: * **客戶端(Client)** 服務調用方。 * **客戶端存根(Client Stub)** :存放服務端地址信息,將客戶端的請求參數數據信息打包成網絡消息,再通過網絡傳輸發送給服務端。 * **服務端存根(Server Stub)** : 接收客戶端發送過來的請求消息并進行解包,然后再調用本地服務進行處理。 * **服務端(Server):** 服務的真正提供者。 * **Network Service:** 底層傳輸,可以是 TCP 或 HTTP。 ***** ## 深入理解 RPC 專題 阿里 **徐靖峰** 的原創文章,該系列文章由淺及深深入分析了 RPC 的核心原理。 * [簡單了解RPC實現原理](http://cmsblogs.com/?p=3867) * [深入理解RPC之序列化篇–Kryo](http://cmsblogs.com/?p=3869) * [深入理解RPC之序列化篇](http://cmsblogs.com/?p=3871) * [深入理解RPC之動態代理篇](http://cmsblogs.com/?p=3873) * [深入理解RPC之傳輸篇](http://cmsblogs.com/?p=3875) * [Motan中使用異步RPC接口](http://cmsblogs.com/?p=3877) * [深入理解RPC之協議篇](http://cmsblogs.com/?p=3879) * [深入理解RPC之服務注冊與發現篇](http://cmsblogs.com/?p=3881) * [深入理解RPC之集群篇](http://cmsblogs.com/?p=3883) * [設計RPC接口時,你有考慮過這些嗎?](http://cmsblogs.com/?p=3885)
                  <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>

                              哎呀哎呀视频在线观看