Pebble分布式開(kāi)發(fā)框架
Pebble定位為一個(gè)好用、可靠、高性能、易擴(kuò)展的分布式開(kāi)發(fā)框架,支持多種使用方式:
- 使用完整的pebble框架
- 獨(dú)立使用各pebble子模塊
- 在其他框架中嵌入pebble框架。
Pebble具備良好的擴(kuò)展性,可非常方便的擴(kuò)展對(duì)接現(xiàn)有系統(tǒng)?;谠摽蚣?,可以讓開(kāi)發(fā)者只需專注于業(yè)務(wù)邏輯的實(shí)現(xiàn),而不需要關(guān)注基礎(chǔ)功能的開(kāi)發(fā),如網(wǎng)絡(luò)通信,數(shù)據(jù)存儲(chǔ),集群管理等。使用pebble配套的運(yùn)營(yíng)系統(tǒng),可方便的進(jìn)行游戲開(kāi)區(qū)開(kāi)服,版本升級(jí),擴(kuò)容縮容等操作。
功能
-
通信:提供了基于消息的通信接口,默認(rèn)自帶TCP/UDP網(wǎng)絡(luò)庫(kù),用戶可方便的對(duì)接到其他網(wǎng)絡(luò)庫(kù)或消息隊(duì)列服務(wù)。
-
服務(wù)管理:有了服務(wù)管理功能,客戶端無(wú)需手工配置服務(wù)器端的地址即可通信。每一個(gè)服務(wù)(service)都有一個(gè)唯一的名字,服務(wù)由一組具體的函數(shù)組成,每個(gè)服務(wù)器進(jìn)程可以管理多個(gè)服務(wù)。Pebble提供了名字服務(wù)接口,使用Pebble框架,服務(wù)端可方便的將服務(wù)地址注冊(cè)到名字服務(wù)器,客戶端可以方便的從名字服務(wù)器拉取到服務(wù)的地址信息。我們提供了基于ZooKeeper的名字服務(wù)參考實(shí)現(xiàn),用戶也可以很方便的擴(kuò)展自己的名字服務(wù)。
-
集群管理:基于Zookeeper的名字服務(wù)實(shí)現(xiàn),服務(wù)進(jìn)程啟動(dòng)后,會(huì)自動(dòng)與ZooKeeper之間維持心跳。客戶端會(huì)定時(shí)從ZooKeeper獲取服務(wù)器端的地址信息,一旦服務(wù)進(jìn)程故障,客戶端會(huì)自動(dòng)將其從服務(wù)列表中去除。同理,增加服務(wù)進(jìn)程也是一樣。從而可方便的實(shí)現(xiàn)集群狀態(tài)管理,可方便的對(duì)服務(wù)器進(jìn)行擴(kuò)容和縮容。
-
RPC:同時(shí)支持Thrift和ProtoBuf兩種IDL,一致的RPC編程接口,支持同步、異步、并行調(diào)用,用戶可以很方便的擴(kuò)展支持其他IDL。
-
協(xié)程:協(xié)程可降低異步代碼的復(fù)雜度,讓代碼看起來(lái)像同步一樣,同時(shí)具有異步的性能。開(kāi)發(fā)框架很好的集成了協(xié)程的功能,RPC服務(wù)處理默認(rèn)在一個(gè)協(xié)程里面。當(dāng)服務(wù)器端收到客戶端的RPC請(qǐng)求時(shí),系統(tǒng)會(huì)自動(dòng)為你創(chuàng)建協(xié)程,請(qǐng)注意不要調(diào)用阻塞操作。如果要調(diào)用阻塞操作,需要將其修改為以協(xié)程的方式調(diào)用,否則整個(gè)server的處理能力會(huì)受到影響。
-
廣播:廣播是游戲業(yè)務(wù)的一個(gè)常見(jiàn)需求。pebble支持服務(wù)器端server之間的廣播,也支持多服務(wù)器與多手機(jī)客戶端之間的廣播。無(wú)論是手機(jī)客戶端還是后臺(tái)服務(wù)器,只要大家加入一個(gè)相同的頻道(channel),就可以做到一呼百應(yīng)。廣播功能是在RPC的基礎(chǔ)上實(shí)現(xiàn),所以它的編程體驗(yàn)與RPC是一致的。
-
進(jìn)程框架:它是一個(gè)單線程的開(kāi)發(fā)框架,集成了上述功能。內(nèi)置統(tǒng)計(jì)上報(bào)、過(guò)載保護(hù)、控制命令等功能,使用我們的框架,只需要調(diào)用少量接口,即可快速開(kāi)發(fā)出游戲后臺(tái)server。
-
配套工具:自帶了控制命令工具,方便集中運(yùn)維與調(diào)試。
