1. 程式人生 > >RPC(遠端過程呼叫)原理及應用

RPC(遠端過程呼叫)原理及應用

RPC 是構建 hadoop 體系結構的基石。

RPC(Remote Procedure Call Protocol)——遠端過程呼叫協議。所謂遠端過程呼叫,也即是遠端呼叫過程,它是一種通過網路從遠端計算機程式上請求服務(某一過程),而不需要了解底層網路技術的協議。RPC協議假定某些傳輸協議的存在,如TCP或UDP,為通訊程式之間攜帶資訊資料。在OSI網路通訊模型中,RPC跨越了傳輸層和應用層。

RPC採用客戶機/伺服器模式。請求程式就是一個客戶機,而服務提供程式就是一個伺服器。

遠端指不在同一個程序。Java 中通過呼叫 main 方法產生程序。遠端過程呼叫意味著對另一個 main 方法(另一個 Java 程序)中的程式進行呼叫。

遠端過程呼叫至少需要兩個過程(也即兩個 Java 程序)。

  • (1)呼叫方(client),主動發起請求,呼叫(指定ip和埠port)server中的方法
  • (2)被呼叫方(server),把呼叫結果返回給客戶端。

RPC 伺服器 與 http 伺服器

經典的 RPC 伺服器包括:hadoop 叢集結構的:

  • NameNode、SecondaryNameNode、DataNode
  • JobTracker、TaskTracker

職責介紹:

  • (1)HTTP 伺服器提供的是資原始檔,需要儲存空間足夠大
  • (2)RPC 伺服器提供的是計算過程的返回值,需要計算能力足夠強

RPC 再次明晰了客戶端和伺服器的職責。

RPC 機制的模擬

  • (0)MyBiz、MyBizable

    package rpc;
    
    import java.io.IOException;
    
    import org.apache.hadoop.ipc.VersionedProtocol;
    
    public interface MyBizable extends VersionedProtocol{
        long VERSION = 12345L;
        public abstract String hello(String name);
    
    }
    package rpc;
    
    import java.io.IOException;
    
    import
    org.apache.hadoop.ipc.VersionedProtocol; public class MyBiz implements MyBizable { @Override public String hello(String name){ System.out.println("我被呼叫了,猜猜看我會出現在哪一邊?"); return "hello " + name; } @Override public long getProtocolVersion(String protocol, long clientVersion) throws IOException { return VERSION; } }
  • (1)MyServer

    package rpc;
    
    import java.io.IOException;
    
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.ipc.RPC;
    import org.apache.hadoop.ipc.RPC.Server;
    
    public class MyServer {
    
        static final String ADDR = "localhost";
        static final int PORT = 12345;
    
        public static void main(String[] args) throws Exception {
            Server server = RPC.getServer(new MyBiz(), ADDR, PORT, new Configuration());
            // 在指定的ip,指定的埠進行監聽
            server.start();
        }
    }
  • (2)MyClient

    package rpc;
    
    import java.io.IOException;
    import java.net.InetSocketAddress;
    
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.ipc.RPC;
    import org.apache.hadoop.ipc.VersionedProtocol;
    
    public class MyClient {
    
        public static void main(String[] args) throws Exception {
            MyBizable proxy = (MyBizable)RPC.waitForProxy(MyBizable.class,
                      MyBizable.VERSION,
                      new InetSocketAddress(MyServer.ADDR, MyServer.PORT),
                      new Configuration());
            System.out.println("客戶端結果:"+proxy.hello("zch"));
            // 關閉網路連線
            RPC.stopProxy(proxy);
        }
    }

    注:

  • (1)客戶端獲得的代理物件 proxy,呼叫其hello()成員函式,是在客戶端還是在伺服器端執行的呢?

    這正是RPC(遠端呼叫的精髓所在)。如果是以遠端呼叫的方式執行物件的方法,則應是在伺服器端執行,將結果返回給客戶端。

  • (2)客戶端呼叫伺服器端的方法,意味著呼叫伺服器端的物件中的方法

  • (3)如果伺服器端的物件允許客戶端呼叫,那麼這個物件必須實現介面

  • (4)如果客戶端能夠呼叫伺服器端物件的方法,那麼這些方法一定位於物件的介面中。因為客戶端只能獲得介面(waitForProxy())

  • (5)在命令列介面,輸入jps(檢視 java 程序),會看到伺服器端的 java 程序名;

相關推薦

RPC遠端過程呼叫原理應用

RPC 是構建 hadoop 體系結構的基石。 RPC(Remote Procedure Call Protocol)——遠端過程呼叫協議。所謂遠端過程呼叫,也即是遠端呼叫過程,它是一種通過網路從遠端計算機程式上請求服務(某一過程),而不需要了解底層網

RPC遠端過程呼叫簡介

RPC(Remote Procedure Call Protocol)——遠端過程呼叫協議,它是一種通過網路從遠端計算機程式上請求服務,而不需要了解底層網路技術的協議。 之前聽過這個名詞,但是也只是大概記住了“遠端呼叫”之類的關鍵詞,而其他並沒有太多瞭解。 來到TX實習,確實如別人所說的那樣

C++ RPC遠端過程呼叫

目的 最近由於摩爾定律已經不太適用,隨著大資料、計算量不斷增加,導致單機處理能力不能滿足需求,所以需要分散式計算,這就需要RPC(遠端過程呼叫),下面簡單介紹一下這個demo,來自於GitHub上的一個專案 client程式碼 #include <stri

Java分散式:RPC遠端過程呼叫

Java分散式:RPC(遠端過程呼叫) 引入RPC   比如我們有一個查詢的介面IDBQuery,以及其實現類DBQueryImp,如果我們執行IDBQuery查詢方法,只需要new一個DBQueryImp然後呼叫request方法即可,這就是本地函式呼叫,因為在同一個地址空間或者同一塊記憶體,通過方法棧

遠端過程呼叫中介軟體資料訪問中間…

一 實習目的 通過例項掌握RMI,RPC,JDBC等中介軟體的使用。 二 實習要求 1)RPC實現遠端計算服務。伺服器端提供計算服務;客戶端呼叫計算服務。 2)RMI+JDBC遠端資料庫的訪問。實現簡單的成績查詢系統(建立表,錄入成績,查詢成績等)。在伺服器端,通過JDBC訪問資料庫。客戶端呼叫服

MLP多層感知機人工神經網路原理程式碼實現

一、多層感知機(MLP)原理簡介多層感知機(MLP,Multilayer Perceptron)也叫人工神經網路(ANN,Artificial Neural Network),除了輸入輸出層,它中間可以有多個隱層,最簡單的MLP只含一個隱層,即三層的結構,如下圖:從上圖可以看

ICA獨立成分分析方法應用於視訊分析心跳檢測

本文整理自論文《Non-contact, automated cardiac pulse measurements using video imaging and blind source separation》及ICA相關資料。 獨立成分分析(Independent Component

分散式系統基礎-遠端過程呼叫RPC

1、RPC簡介 RPC(Remote Procedure Call,遠端過程呼叫)是建立在Socket之上的一種多程序間的通訊機制。不同於複雜的Socket通訊方式,RPC的初心是設計一套遠端通訊的通用框架,這個框架能夠自動處理通訊協議、物件序列化、網路傳輸等

輕鬆搞定RabbitMQ——遠端過程呼叫RPC

翻譯:http://www.rabbitmq.com/tutorials/tutorial-six-java.html在第二篇博文中,我們已經瞭解到瞭如何使用工作佇列來向多個消費者分散耗時任務。但是付過我們需要在遠端電腦上執行一個方法然後等待結果,該怎麼辦?這是不同的需求。

RPC遠端過程呼叫之我的理解附帶專案希望有人交流

最近在學習開發過程中使用到了阿里開發的dubbo框架,將專案進行分散式。 最近的學習瞭解到了一些關於RPC的原理,心血來潮就試著實現了一下自己的RPC功能。 專案主要分為三個子專案 API 專案 定義了通訊的資料模型和序列化反序列化所使用的工具以及專案測

RPC遠端過程呼叫原理模擬RPC的Demo

什麼是 RPC由於各服務部署在不同機器,服務間的呼叫免不了網路通訊過程,服務消費方每呼叫一個服務都要寫一坨網路通訊相關的程式碼,不僅複雜而且極易出錯。如果有一種方式能讓我們像呼叫本地服務一樣呼叫遠端服務,而讓呼叫者對網路通訊這些細節透明,那麼將大大提高生產力,比如服務消費方在

RabbitMQ的學習(四):RPC-遠端過程呼叫(純demo-可直接使用

前言:在前面三篇文章中,分別對rabbitmq的搭建,並對rabbitmq常用的四種不同的交換機結合路由鍵編寫了各自的demo,可以參考: 1. RabbitMQ的學習(一):Windows下安裝及配置RabbitMQ,erlang環境變數; 2. RabbitMQ的學習(二):簡單的j

服務通訊之遠端過程呼叫RPI

背景 您已應用微服務架構模式。服務必須處理來自應用程式客戶端的請求。此外,服務有時必須協作處理這些請求。他們必須使用程序間通訊協議。 解決方案 使用RPI進行服務間通訊。客戶端使用基於請求/回覆的協議向服務發出請求。 例子 RPI技術有很多例子 REST GRP

windows服務安裝System.ComponentModel.Win32Exception:遠端過程呼叫失敗

“安裝”階段發生異常。System.ComponentModel.Win32Exception:遠端過程呼叫失敗 附上提示資訊C:\Windows\Microsoft.NET\Framework\v4.0.30319>installUtil.exe C:\Users\Administrato

python Ridge 回歸嶺回歸原理應用

原理 blog 得到 one 技術 設置 fun src print 嶺回歸的原理: 首先要了解最小二乘法的回歸原理 設有多重線性回歸模型 y=Xβ+ε ,參數β的最小二乘估計為 當自變量間存在多重共線性,|X‘X|≈0時,設想|X‘X|給加上一個正常數矩陣(k>

selenium + python自動化測試unittest框架學習selenium原理應用

自動化 網上 下載安裝 src .cn 基礎 client cnblogs pytho unittest框架的學習得益於蟲師的《selenium+python自動化實踐》這一書,該書講得很詳細,大家可以去看下,我也只學到一點點用於工作中,閑暇時記錄下自己所學才能更加印象深刻

RPC 協議 Remote process call 遠端過程呼叫

RPC資訊協議由兩個不同結構組成:呼叫資訊和答覆資訊。 簡單的說,RPC就是從一臺機器(客戶端)上通過引數傳遞的方式呼叫另  一臺機器(伺服器)上的一個函式或方法(可以統稱為服務)並得到返回的結果。 RPC 會隱藏底層的通訊細節(不需要直接處理Socket通訊或Http通訊

Android--四大元件之BroadCastReceiver生命週期、實現原理使用等

####1. BroadCastReceiver是什麼? ####2. 廣播型別 ######1). 有序廣播 ######2). 無序廣播 ####3. 生命週期 ####4. 實現原理 ####5. 使用方法 ####6. 許可權問題(安全性) ####7. LocalBroad

因式分解機Factorization Machine,FM原理實踐

因子分解機(Factorization Machine),是由Konstanz大學(德國康斯坦茨大學)Steffen Rendle(現任職於Google)於2010年最早提出的,旨在解決大規模稀疏資料下的特徵組合問題。原論文見此。 不久後,FM的升級版模型場感知分解機(Field-awa

卡爾曼濾波原理應用

出於科研需要,打算開始學習卡爾曼濾波(Kalmam Filter)。很早之前就聽說過卡爾曼濾波,但一直沒能深入學習,這次終於有機會了,哈哈。 1.卡爾曼濾波的發展過程 卡爾曼濾波的本質屬於"估計"範疇.先介紹下估計,所謂“估計”問題,就是對收到隨機干擾和隨機測量誤差作用的物理系統,按照某種效