概述git
RPC框架是雲端服務基礎框架之一,負責雲端服務模塊之間的項目調用,相似於本地的函數調用同樣方便。常見的RPC框架配帶的功能有:github
常見RPC框架有併發
本系列主要教你們如何實現RPC框架,使用的語音是C++,協議使用的是protobuf。負載均衡
基於protobuf的RPC框架框架
這裏不介紹具體protoc的使用方法,網上不少。在完成protoc編譯後,會輸出protobuf提供的服務框架中,主要有以下幾個類運維
在總體框架實現上基本上集成protobuf提供的類便可,採用boost的socket進行通訊,暫時考慮同步通訊的狀況。socket
對於服務端和客戶端的通訊協議上,採用的meta對象,用於記錄過程調用的參數、具體service和method。函數
服務端設計工具
採用boost的socket,直接bind和監聽,啓動後則經過accept進行阻塞,對於每一個請求進行解包,並在ProcRpcMsg函數中對具體業務操做函數的調用,並在業務操做函數完成後經過done->Run()回調OnCallbackDone實現數據回寫。spa
在service的callmethod方法中,對具體method進行調用。
此外,在服務和過程的管理上,服務端創建了key-val的map來進行管理。
客戶端設計
客戶端相對簡單,也是基於boost的socket進行connect、send、receive等同步的操做。
在echo例子中,咱們一般調用stub的函數,stub調用channel的Callmethod函數,所以個人操做須要在Channel::CallMethod中進行實現。
總結
本文簡單介紹了基於protobuf的rpc框架實現,都是使用同步模型且單線程形式。這個程序在狀態控制、併發高等上還不夠,下篇文章講如何提高收發效率。