1. 程式人生 > >OceanBase RPC機制簡要說明

OceanBase RPC機制簡要說明

http://note.youdao.com/share/?id=d2163a7ba8ec1ec58e64683a961c5121&type=note

RPC是OB一個比較重要的各個元件間進行通訊的實現機制。最近在看clog的程式碼,就順著ObCLogRpc這個類,簡單總結下OB進行RPC的幾種寫法,主要偏重於寫程式碼和理解已有程式碼,不涉及到底層的RPC實現機制。 曲山的OB程式碼導讀 5.3.2節客戶端部分介紹了ObRpcStub,建議先行閱讀。 後邊是當前OB實現RPC的幾種典型寫法: 客戶端 ObCLogRpc、ObUpsRpcStub和ObRootRpcStub都繼承自common::ObCommonRpcStub,common::ObCommonRpcStub提供一些基礎的RPC實現,其繼承自ObGeneralRpcStub,ObGeneralRpcStub繼承自ObRpcStub,後者封裝了RPC的底層實現,包括ObClientManager的一個指標型別成員rpc_frame_。 客戶端實現rpc的幾種典型寫法如下: 1)rpc_frame_ -> send_request 典型實現參考ObCommonRpcStub :: send_log,是一個同步呼叫方式。 2)rpc_frame_ -> post_request 典型實現參考ObCLogRpc::post_log,此實現是一個非同步呼叫方式,需要在post_request中指明接收到響應後回撥使用的handler; 3)呼叫send_*_return_*函式,是個同步呼叫方式,具體可參見OB程式碼導讀相關章節,舉例如下:
1
int ObCommonRpcStub :: renew_lease(const common::ObServer& master, const common::ObServer& slave_addr, const in t64_t timeout_us) 2 { 3   return send_1_return_0(master, timeout_us, OB_RENEW_LEASE_REQUEST, DEFAULT_VERSION, slave_addr); 4 }
4)呼叫send_param_*/deserialize_result_*兩個配對的巨集,具體實現可參考ObGeneralRpcStub::register_server,也是一個同步呼叫方式。 其實後兩者就是呼叫1)來完成的,這些巨集會進行展開,直接傳遞基礎資料型別或是呼叫輸出輸出引數的serialize/deserialize方法進行序列化、反序列化後傳遞。 服務端
服務端的呼叫方式都是統一的。每個RPC呼叫都對應一個packet_code,在server的init_func_array函式中,使用巨集REGISTER_HANDLE_FUNC註冊特定型別的包(也即特定型別的RPC介面)的處理函式,如上文列出的ObCommonRpcStub :: renew_lease巨集,其註冊方式即為在ObRootWorker類的init_func_array函式中呼叫: REGISTER_HANDLE_FUNC(OB_RENEW_LEASE_REQUEST, &ObRootWorker::rt_renew_lease); 然後在server的handler_packet中寫上此型別包是由IO執行緒直接處理還是交給特定的worker執行緒處理。 所有註冊的處理函式介面都是一致的,接受的都是ObRequestContext& context型別的引數,表示網路包。 收到包後如何處理可以參見ObRootWorker::rt_renew_lease,無非就是從網路包中反序列化輸入引數,根據引數呼叫業務邏輯進行處理,然後將結果打包使用send_response方法返回給客戶端。

相關推薦

OceanBase RPC機制簡要說明

http://note.youdao.com/share/?id=d2163a7ba8ec1ec58e64683a961c5121&type=note RPC是OB一個比較重要的各個元件間進行通訊的實現機制。最近在看clog的程式碼,就順著ObCLogRpc這個類,簡單總結下OB進行RPC的幾種寫法

以太坊RPC機制與API實例

pro connected 再看 客戶端 side 代碼 tab 錯誤 latest 上一篇文章介紹了以太坊的基礎知識,我們了解了web3.js的調用方式是通過以太坊RPC技術,本篇文章旨在研究如何開發、編譯、運行與使用以太坊RPC接口。 關鍵字:以太坊,RPC,JS

RPC機制之AMQP協議

引用 inter nsf -a pointer sdn 提交 中間件 發送消息 openstack RPC通信Openstack 的主要組件有 Nova、Cinder、Neutron、Glance 等,分別負責雲平臺的計算、存儲、網絡資源管理。OpenStack 各組件之間

HADOOP-RPC機制

轉載自 一、RPC基本概念: 1、RPC,即Remote Procdure Call,中文名:遠端過程呼叫;   (1)它允許一臺計算機程式遠端呼叫另外一臺計算機的子程式,而不用去關心底層的網路通訊細節,對我們來說是透明的。因此,它經常用於分散式網路通

[HBase] 服務端RPC機制及代碼梳理

con already oem http ade cer 同比 nging 劃分 基於版本:CDH5.4.2 上述版本較老,但是目前生產上是使用這個版本,所以以此為例。 1. 概要 說明: 客戶端API發送的請求將會被RPCServer的Listen

Hadoop RPC機制的使用

一、基礎概念 概念: RPC(Remote Procedure Call)–遠端過程呼叫,它是一種通過網路從遠端計算機程式上請求服務,而不需要了解底層網路技術的協議。RPC協議假定某些傳輸協議的存在,如TCP或UDP,為通訊程式之間攜帶資訊資料。在OSI網路通訊

【劉文彬】以太坊RPC機制與API例項

原文連結:醒者呆的部落格園,https://www.cnblogs.com/Evsward/p/eth-rpc.html 上一篇文章(【劉文彬】探路以太坊)介紹了以太坊的基礎知識,我們瞭解了web3.js的呼叫方式是通過以太坊RPC技術,本篇文章旨在研究如何開發、編譯、執行與使用

Hadoop原始碼分析之二(RPC機制之Call處理)

下面介紹在整個處理機制中怎麼把具體的Request Call轉換並呼叫到整體的實現邏輯。 主要以NameNode Client PRC Server作為例子來說明,整個轉換通過Google Protocol Buffer RPC來實現。           fina

Android觸控事件傳遞機制簡要分析

Android開發中經常會遇到多個View、ViewGroup巢狀的情況, 此時就可能遇到滑動衝突的問題。 為了這種問題,就必須對View的事件傳遞機制有一定的瞭解。 本篇部落格就以一些簡單的例子, 來看看Activity、View、ViewGroup三

Hadoop RPC機制-原理篇

       RPC是Hadoop的基礎元件,提供分散式環境下的物件呼叫功能。之前用了三天時間分析與測試RPC,目的是想弄清楚它的整個執行機制。        概括的說,RPC採用客戶機/伺服器模式。

RPC機制與hdfs下載原始碼剖析

這裡沒有貼出原始碼,有興趣的可以debug跟蹤然後根據我的原始碼描述,看懂hdfs是怎麼下載檔案的 1.RPC機制 介面代理: public interface Businesable{ pu

Dalvik虛擬機器垃圾收集機制簡要介紹和學習計劃

       伴隨著“Dalvik is dead,long live Dalvik“這行AOSP程式碼提交日誌,在Android5.0中,ART執行時取代了Dalvik虛擬機器。雖然Dalvik虛擬機器不再使用,但是它曾經的作用是不可磨滅的。因此,在研究ART執行時的垃圾收

Hadoop學習筆記—3.Hadoop RPC機制的使用

一、RPC基礎概念 1.1 RPC的基礎概念   RPC,即Remote Procdure Call,中文名:遠端過程呼叫;   (1)它允許一臺計算機程式遠端呼叫另外一臺計算機的子程式,而不用去關心底層的網路通訊細節,對我們來說是透明的。因此,它經常用於分散式網路通訊中。 RPC協議假定某些傳輸

Hdoop日記Day10---RPC機制

一、RPC(Remote Procedure Call)簡介 RPC 是遠端過程呼叫(Remote Procedure Call),即遠端呼叫其他虛擬機器中執行的javaobject。RPC 是一種客戶端/伺服器模式,那麼在使用時包括服務端程式碼和客戶端程式碼,還有我們呼叫的遠端過程物件。HDFS 的執行就

HBase原始碼分析2 – RPC機制:客戶端

先澄清一些本文中術語的涵意 客戶端 – 指的是HBase client API.提供了從使用者程式連線到HBase後臺伺服器即Master server及Region server的功能 服務端 – 即指的是HBase的Master server 及 Region serv

Hadoop詳解(二)——HDFS的命令,執行過程,Java介面,原理詳解。RPC機制

HDFS是Hadoop的一大核心,關於HDFS需要掌握的有:分散式系統與HDFS、HDFS的體系架構和基本概念、HDFS的shell操作、Java介面以及常用的API、Hadoop的RPC機制、遠端debugDistributed  File System資料量越來越多,在一

閱讀Hadoop 原始碼最重要的就是明白rpc機制,client與master,master和slave的通訊

本部落格微信公共賬號:hadoop123(微訊號為:hadoop-123),分享hadoop技術內幕,hadoop最新技術進展,釋出hadoop相關職位和求職資訊,hadoop技術交流聚會、講座以及會議等。二維碼如下: 個人談談閱讀hadoop原始碼的經驗。

Android -- Vold機制簡要分析

同時,Vold的主函式中還有一個重要的函式呼叫process_config():static int process_config(VolumeManager *vm) { std::string path(android::vold::DefaultFstabPath()); //獲取到vold.f

Hadoop RPC機制詳解

     網路通訊模組是分散式系統中最底層的模組,他直接支撐了上層分散式環境下複雜的程序間通訊邏輯,是所有分散式系統的基礎。遠端過程呼叫(RPC)是一種常用的分散式網路通訊協議,他允許運行於一臺計算機的程式呼叫另一臺計算機的子程式,同時將網路的通訊細節隱藏起來,使得使用者無需額外地為這個互動作用程式設計,大大

轉Android進程間通信(IPC)機制Binder簡要介紹和學習計劃

trac named 組成 get tle 能力 計劃 英文 其中 轉自:http://blog.csdn.net/luoshengyang/article/details/6618363/ 在Android系統中,每一個應用程序都是由一些Activity和Ser