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
(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.卡爾曼濾波的發展過程 卡爾曼濾波的本質屬於"估計"範疇.先介紹下估計,所謂“估計”問題,就是對收到隨機干擾和隨機測量誤差作用的物理系統,按照某種效