亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

自己動手實現RPC框架

司馬極客 軟件工程師
難度中級
時長 2小時40分
學習人數
綜合評分8.97
28人評價 查看評價
9.0 內容實用
8.6 簡潔易懂
9.3 邏輯清晰
  • client模塊是rpc-client;codec是序列化模塊,commen是公用方法的模塊,proto是server與client之間的協議就定在proto里面,transport是網絡通信模塊;server是rpc-server,對service進行管理

    查看全部
  • 筆記很多,建議再看一次進行整理?。。?/p>

    查看全部
    0 采集 收起 來源:實戰篇---類圖

    2020-02-28

  • rpc 類圖

    查看全部
    0 采集 收起 來源:實戰篇---類圖

    2020-02-28

  • 3.實現網絡模塊,這里會根據rpc的通信場景對網絡通信進行一層抽象

    4.實現server模塊,server會暴露我們的服務,同時也會對這些服務做管理

    5。實現client模塊,此處會用到動態代理,在這個代理對象的內部通過網絡通信與server之間進行交互

    查看全部
    0 采集 收起 來源:實戰篇概述

    2020-02-28

  • 實戰篇目錄(代碼實現)

    查看全部
    0 采集 收起 來源:實戰篇概述

    2020-02-28

  • 技術棧之二

    查看全部
    0 采集 收起 來源:技術棧

    2020-02-28

  • 所需技術棧之一

    查看全部
    0 采集 收起 來源:技術棧

    2020-02-28

  • 首先是client要去調用client stub(存根)這個接口里面的方法,這時候這個接口的實現在遠程,所以需要sockets網絡傳輸,才能達到調用(即通過sockets建立連接,傳輸數據),在通過sockets進行傳輸之前,需要第2步的序列化(把傳輸的對象轉成可傳輸的二進制數據)。

    假設此時server的sockets拿到了數據,需要第4步的反序列化(將拿到的二進制數據反序列化為對象),在這個對象中包含了這個客戶端要調用的服務端的信息(像它調用的是那個接口,也即它調用的是哪個存根,接口里面的什么方法方法里面參數的類型,以及返回值的類型等),之后server回去找到這個接口的具體實現類的對象。通常這個對象為了性能考慮,一般會做成單例模式。

    這個server stub找到這個對象之后會通過反射來調用這個方法,方法調用完成后可以拿到計算的結果,拿到結果后又通過第7步的序列化成二進制,然后通過網絡傳輸8響應給client,client拿到這個數據之后也會通過9將其序列化為對象,然后得到結果10

    那么本次調用結束

    調用關鍵點:

    一定要的網絡模塊(用于網絡傳輸)

    序列化模塊(對象與二進制數據之間的互轉)

    client 端,(怎么就通過調用一個接口就調用到遠程方法呢?其實她內部有一個存根代理對象,而這個網絡的交互,序列化操作都是由這個代理對象來完成的)

    server端肯定需要一個對服務進行管理的組件,里面完成了服務的查找,服務的反射調用等

    查看全部
    5 采集 收起 來源:核心原理

    2020-02-28

  • RPC的調用過程如下:

    第一步:server會將她需要暴露的服務以及他的地址信息注冊到Registry這一注冊中心。

    第二步:client通過注冊中心一只關注它所需要的服務在哪里,如果此時server的地址發生改變,server會再次注冊入Registry,然后Resgistry會通知給RPC client。

    現在client已經有了server的地址以及它暴露服務的信息,就可以做最后一步調用了(即3 call 步)。

    其實在這里,注冊中心并不是必要的組件,client可以把服務端的信息直接寫死進client,然后直接去調用rpc server,實則可以發現3 call這一步才是rpc調用最關鍵的一步??!


    查看全部
    1 采集 收起 來源:核心原理

    2020-02-28

舉報

0/150
提交
取消
課程須知
1、RPC框架的核心原理 2、良好的編碼習慣、如何使用junit編寫測試用例 3、良好的工程結構以及maven怎么管理多模塊 4、常見工具包的使用(commons-io、fastjson、lombok) 5、java反射的應用、java動態代理的應用 6、Map怎么自定義key 7、如何在程序中嵌入jetty
老師告訴你能學到什么?
本課程一開始會對RPC的原理進行剖析,接著會基于Java開發一個RPC框架。在開發前要求大家對Java基礎有一定的了解,比如類和接口怎么定義。同時還會用到一些Java Servlet相關知識,主要是能區分Servlet的post和get方法的作用。

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!