關(guān)鍵字:
RPC Socket TI-RPC TCP UDP C/S ONC
摘要:
本文簡單介紹了RPC(Remote Procedure Call 遠(yuǎn)程過程調(diào)用)的原理結(jié)構(gòu)、特點(diǎn),
及其開放給編程人員不同層次的編程接口 。并且例舉實(shí)例示度綰甕ü齊pcgen 編譯工
具來快速開發(fā)RPC應(yīng)用 。
一、 概述
在傳統(tǒng)的編程概念中,過程是由程序員在本地編譯完成,并只能局限在本地運(yùn)行的一段
代碼,也即其主程序和過程之間的運(yùn)行關(guān)系是本地調(diào)用關(guān)系 。因此這種結(jié)構(gòu)在網(wǎng)絡(luò)日益
發(fā)展的今天已無法適應(yīng)實(shí)際需求 ??偹苤瑐鹘y(tǒng)過程調(diào)用模式無法充分利用網(wǎng)絡(luò)上其
他主機(jī)的資源(如CPU、Memory等),也無法提高代碼在實(shí)體間的共享程度,使得主機(jī)資
源大量浪費(fèi) 。
而本文要介紹的RPC編程,正是很好地解決了傳統(tǒng)過程所存在的一系列弊端 。通過RPC我
們可以充分利用非共享內(nèi)存的多處理器環(huán)境(例如通過局域汪連接得多臺工作站),這樣
可以簡便地將你的應(yīng)用分布在多臺工作站上,應(yīng)用程序就像運(yùn)行在一個(gè)多處理器的計(jì)算機(jī)
上一樣 。你可以方便的實(shí)現(xiàn)過程代碼共享,提高系統(tǒng)資源的利用率,也可以將以大量數(shù)值
處理的操作放在處理能力較強(qiáng)的系統(tǒng)上運(yùn)行,從而減輕前端機(jī)的負(fù)擔(dān) 。
二、 RPC的結(jié)構(gòu)原理及其調(diào)用機(jī)制
如前所述RPC其實(shí)也是種C/S的編程模式,有點(diǎn)類似C/S Socket 編程模式,但要比它
更高一層 。當(dāng)我們在建立RPC服務(wù)以后,客戶端的調(diào)用參數(shù)通過底層的RPC傳輸通道,可以
是UDP,也可以是TCP(也即TI-RPC-無關(guān)性傳輸),并根據(jù)傳輸前所提供的目的地址及RPC
上層應(yīng)用程序號轉(zhuǎn)至相應(yīng)的RPC Application Porgramme Server ,且此時(shí)的客戶端處于等
待狀態(tài),直至收到應(yīng)答或Time Out超時(shí)信號 。具體的流程圖如F1 。當(dāng)服務(wù)器端獲得了請求
消息,則會根據(jù)注冊RPC時(shí)告訴RPC系統(tǒng)的例程入口地址,執(zhí)行相應(yīng)的操作,并將結(jié)果返回
至客戶端 。
F1
當(dāng)一次RPC調(diào)用結(jié)束后,相應(yīng)線程發(fā)送相應(yīng)的信號,客戶端程序才會繼續(xù)運(yùn)行 。
當(dāng)然,一臺服務(wù)主機(jī)上可以有多個(gè)遠(yuǎn)程過程提供服務(wù),那么如何來表示一個(gè)唯一存
在的遠(yuǎn)程過程呢?一個(gè)遠(yuǎn)程過程是有三個(gè)要素來唯一確定的:程序號、版本號和過程號 。
程序號是用來區(qū)別一組相關(guān)的并且具有唯一過程好的遠(yuǎn)程過程 。一個(gè)程序可以有一個(gè)或幾
個(gè)不同的版本,而每個(gè)版本的程序都包含一系列能被遠(yuǎn)程調(diào)用的過程,通過版本的引入,
使得不同版本下的RPC能同時(shí)提供服務(wù) 。每個(gè)版本都包含有許多可供遠(yuǎn)程調(diào)用的過程,每個(gè)
過程則有其唯一標(biāo)示的過程號 。
三、 基于RPC的應(yīng)用系統(tǒng)開發(fā)
通過以上對RPC原理的簡介后,我們再來繼續(xù)討論如何來開發(fā)基于RPC的應(yīng)用系統(tǒng) 。
一般而言在開發(fā)RPC時(shí),我們通常分為三個(gè)步驟:
a、 定義說明客戶/服務(wù)器的通信協(xié)議 。
這里所說的通信協(xié)議是指定義服務(wù)過程的名稱、調(diào)用參數(shù)的數(shù)據(jù)類型和返回參數(shù)的數(shù)據(jù)
類型,還包括底層傳輸類型(可以是UDP或TCP),當(dāng)然也可以由RPC底層函數(shù)自動(dòng)選擇
連接類型建立TI-RPC 。最簡單的協(xié)議生成的方法是采用協(xié)議編譯工具,常用的有Rpcgen,
我會在后面實(shí)例中詳細(xì)描述其使用方法 。
b、 開發(fā)客戶端程序 。
c、 開發(fā)服務(wù)器端程序 。
開發(fā)客戶端和服務(wù)器端的程序時(shí),RPC提供了我們不同層次的開發(fā)例程調(diào)用接口 。不
同層次的接口提供了對RPC不同程度控制 。一般可分為5個(gè)等級的編程接口,接下來我們
分別討論一下各層所提供的功能函數(shù) 。
1、 簡單層例程
簡單層是面向普通RPC應(yīng)用,為了快速開發(fā)RPC應(yīng)用服務(wù)而設(shè)計(jì)的,他提供
推薦閱讀
- Sun SPARC工作站與其他類型計(jì)算機(jī)之間的遠(yuǎn)程互連
- 第二章 SUN 6800/4810/4800/3800 系統(tǒng)管理手冊筆記
- Sun數(shù)據(jù)存儲系統(tǒng)淺說
- 在Sun Blade 100上使用優(yōu)盤小記
- sun cluster 3 的點(diǎn)滴--備忘
- 給SUN打補(bǔ)丁
- solaris讓ls命令顯示顏色
- SUN E3500與D1000升級流程和心得
- 如何知道SUN機(jī)器的出廠日期
- sun cluster 培訓(xùn)筆記
