Pebble-RPC分布式開發(fā)框架
Pebble是一個(gè)分布式開發(fā)框架?;谠摽蚣埽梢宰岄_發(fā)者只需專注于業(yè)務(wù)邏輯的實(shí)現(xiàn),而不需要關(guān)注基礎(chǔ)功能的開發(fā),如網(wǎng)絡(luò)通信,數(shù)據(jù)存儲,集群管理等。使用pebble配套的運(yùn)營系統(tǒng),可方便的進(jìn)行游戲開區(qū)開服,版本升級,擴(kuò)容縮容等操作。
當(dāng)前發(fā)布的Pebble版本,是一個(gè)Linux平臺C++版本的后臺開發(fā)框架。整個(gè)分布式開發(fā)框架包括:服務(wù)管理、集群管理、RPC通信、協(xié)程、廣播、進(jìn)程框架。
服務(wù)管理:有了服務(wù)管理功能,客戶端無需手工配置服務(wù)器端的地址即可通信。每一個(gè)服務(wù)(service)都有一個(gè)唯一的名字,服務(wù)由一組具體的函數(shù)組成,每個(gè)服務(wù)器進(jìn)程可以管理多個(gè)服務(wù)。我們使用ZooKeeper來幫助完成服務(wù)和集群狀態(tài)管理:使用Pebble框架,服務(wù)端可方便的將服務(wù)的地址注冊到ZooKeeper,客戶端根據(jù)服務(wù)名字可方便的從ZooKeeper獲得服務(wù)器地址。
集群管理:服務(wù)進(jìn)程啟動后,會自動與ZooKeeper之間維持心跳??蛻舳藭〞r(shí)從ZooKeeper獲取服務(wù)器端的地址信息,一旦服務(wù)進(jìn)程故障,客戶端會自動將其從服務(wù)列表中去除。同理,增加服務(wù)進(jìn)程也是一樣。從而可方便的實(shí)現(xiàn)集群狀態(tài)管理,可方便的對服務(wù)器進(jìn)行擴(kuò)容和縮容。
RPC通信:RPC(Remote Procedure Call,遠(yuǎn)程過程調(diào)用),可以讓開發(fā)者基于接口編程,更加專注于業(yè)務(wù)邏輯。借用于接口描述語言(IDL)和工具,可以自動生成客戶端和服務(wù)器端的接口代碼,服務(wù)器按需實(shí)現(xiàn)自己的業(yè)務(wù)邏輯,客戶端只需要按接口調(diào)用。雙方均無需要關(guān)心協(xié)議編解碼、網(wǎng)絡(luò)發(fā)送的細(xì)節(jié),減輕了開發(fā)量的同時(shí)也減少出錯(cuò)的可能。
協(xié)程:協(xié)程可降低異步代碼的復(fù)雜度,讓代碼看起來像同步一樣,同時(shí)具有異步的性能。開發(fā)框架很好的集成了協(xié)程的功能,服務(wù)器端的處理已經(jīng)在一個(gè)協(xié)程里面。當(dāng)服務(wù)器端收到客戶端的RPC請求時(shí),系統(tǒng)會自動為你創(chuàng)建協(xié)程,請注意不要調(diào)用阻塞操作。如果要調(diào)用阻塞操作,需要將其修改為以協(xié)程的方式調(diào)用,否則整個(gè)server的處理能力會受到影響。
廣播:廣播是游戲業(yè)務(wù)的一個(gè)常見需求。pebble支持服務(wù)器端server之間的廣播,也支持多服務(wù)器與多手機(jī)客戶端之間的廣播。無論是手機(jī)客戶端還是后臺服務(wù)器,只要大家加入一個(gè)相同的頻道(channel),就可以做到一呼百應(yīng)。廣播功能是在RPC的基礎(chǔ)上實(shí)現(xiàn),所以它的編程體驗(yàn)與RPC是一致的。
進(jìn)程框架:它是一個(gè)單線程的開發(fā)框架,集成了上述功能。使用我們的框架,只需要調(diào)用少量接口,即可快速開發(fā)出游戲后臺server
