FFRPC 是一款高性能 C++ 異步 RPC 框架,廣泛應用於遊戲服務器開發中。在微服務架構下,Gate Server、Game Server、DB Server 等進程間通信至關重要。FFRPC 通過 Broker 模式封裝位置透明性,使得調用方僅需知道服務名即可發起調用,無需關心目標服務的具體部署拓撲,極大簡化了系統架構。
早期 FFRPC 僅提供 C++ 客戶端/服務端實現。但在實際項目中,常需由腳本語言(Python、PHP 等)調用 C++ 服務接口——例如 GM 後台、運營工具、Web 管理界面等。為滿足這類跨語言調用需求,FFRPC 推出了 Python 客戶端庫 ffrpc-py。
req → ret 一一對應),使用體驗如同調用本地函數False,可通過 error_msg() 獲取詳細錯誤信息namespace cpp ff
namespace py ff
service EchoService {
string echo(1: string msg)
}
from ffrpc import ffclient_t
from ff.ttypes import echo_thrift_in_t
# Broker 地址
HOST = "127.0.0.1"
PORT = 10246
# 創建客戶端,第三個參數為超時時間(秒)
client = ffclient_t(HOST, PORT, 1.5)
# 構造請求參數
req = echo_thrift_in_t()
req.msg = "Hello FFRPC!"
# 調用遠程服務
ret = echo_thrift_in_t() # 返回值對象
success = client.call("echo_service", req, ret, "ff")
if success:
print(f"調用成功: {ret.msg}")
else:
print(f"調用失敗: {client.error_msg()}")
| 參數 | 說明 |
|---|---|
ffclient_t(host, port, timeout) | 構造函數,連接 Broker 監聽地址與端口,設置調用超時 |
call(service_name, req, ret, namespace) | 發起 RPC 調用:服務名、請求對象、返回值對象、命名空間(需與 C++ 服務端註冊一致) |
| 返回值 | True 表示成功,False 表示失敗,失敗時可調用 error_msg() 獲取原因 |
FFRPC Python 客戶端讓腳本語言與高性能 C++ 服務無縫對接,是構建多語言微服務體系的關鍵拼圖。