程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> FFrpc python客戶端lib

FFrpc python客戶端lib

編輯:C++入門知識

摘要:

         Ffrpc可以很方便的構建c++ server, 在網游服務器程序開發中,進程間通訊非常的重要,比如gateserver和gameserver或dbserver之間的通信。而ffrpc可以使得進程間通信非常簡單,是由於ffrpc的broker模式封裝了位置無關性,使得如gate調用gameserver的接口只需要知道對方的服務名,從而使得程序中各個節點的關系與系統的拓撲關系是完美吻合的。這也使得系統的架構更加清晰,系統的實現更健壯和易維護。

         之前ffrpc只提供了c++ server/client的實現,在網游服務器程序開發中經常有些需求是需要其他語言和C++server通信的,比如一些工具程序,一些web配置、管理後台登通常用腳本語言實現更加敏捷。比如開發一個gm後台,就可以使用python開發一個web頁面實現,而gm後台指令需要發給c++ server去執行。所以,腳本語言對於C++ server的的接口調用的需求是確實存在的。所以ffrpc中提供python的客戶端禮庫ffrpc-py。

特性

  •   C++ server 通常是使用二進制協議傳輸數據的,但是如果手動用python組二進制包則非常的困難,好在有google protobuf和thrift兩大神器,而google protobuf在服務器程序開發領域已經被廣泛接受。所以由於C++ server定義接口時使用了protobuf(或者像我一樣偏愛thrift),那麼與腳本通訊就變得小輕松了。
  •   對於C++ server 來講,通信時異步的,這是由於C++ server一般是邏輯層單線程,為了保持高並發能力,io操作異步化是必然選擇。但是對於腳本如python這種,一般而言還是使用同步調用模型,而剛好ffrpc的通信模式要求所有的接口都是req<->ret一一對應的,ffrpc-py調用c++ server的接口,只需要制定輸入消息,然後調用接口,接收返回消息,像調用本地函數一樣直接,這也是rpc lib的存在意義。
  •   Ffrpc-py 支持protobuf和thrift,當然必須和c++ server采用的通信協議一致。

示例

         本例采用c++ sever thrift作為示例。由於ffrpc example目錄的tutorial已經實現了一個c++ echo server,本例就利用ffrpc-py調用echo接口。

         其中thrift的定義文件為:

: : 

 

         使用ffrpc-py調用echo接口:

  

    HOST = = 10246= ffclient_t(HOST, PORT, 1.5) 
= ttypes.echo_thrift_in_t(=, req, ret, ( %

 

ffrpc接口的參數的解釋:

  •   ffclient_t(HOST, PORT, 1.5) 構造函數的參數為broker的監聽地址和端口。Ffrpc-py只需要知道broker的位置,至於調用的是哪個服務器的接口,這個由broker確定,至於目標服務器是跟broker在同一個進程,還是通過網絡連接,ffrpc-py無需知道細節。
  •   call 接口調用遠程的服務器接口,參數一為c++server接口注冊的服務名,ffrpc-py只需要知道服務名就可以定位目標服務器的位置
  •   call第二個參數為請求參數
  •   call第三個參數為c++ server返回的消息類型,如果call返回true,那麼該消息會被自動賦上值
  •   第四個參數為消息的命名空間,比如定義thrift的文件的時候定義了命名空間,那麼需要第四個參數填入命名空間,這裡跟C++ server的注冊的消息一致即可,如果C++ server也沒有消息的命名空間,那麼省略這個參數即可
  •   Call接口成功返回True,失敗為false,同時error_msg接口可以輸出錯誤原因

總結

         Ffrpc提供了python lib,可以實現py與c++ server的通信,這樣利用python編寫工具、後台都更加方便了。

         同時ffrpc將會對於php進行支持,相應的client lib 不久就會開放出來。

   Github: https://github.com/fanchy/FFRPC

     c++ server 的實現介紹參見上一篇:http://www.cnblogs.com/zhiranok/p/ffrpc_client_server.html

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved