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