亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

FFrpc python客戶端lib使用解析

系統 2016 0

摘要:

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的定義文件為:

            
struct echo_thrift_in_t {   
 1: string data
}

struct echo_thrift_out_t {   
 1: string data
}
          

使用ffrpc-py調用echo接口:

            
HOST = '127.0.0.1'
  PORT = 10246
  ffc = ffclient_t(HOST, PORT, 1.5) # 1.5 sec為調用超時時間
  req = ttypes.echo_thrift_in_t('ohNice')
  ret = ttypes.echo_thrift_out_t()
  ffc.call('echo', req, ret, 'ff')
  print('error_info = %s' %(ffc.error_msg()), 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 的實現介紹參見:https://www.jb51.net/article/168369.htm

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 精品久久久久久久一区二区手机版 | 久久91亚洲精品中文字幕 | se94se欧美综合色 | 欧美色另类 | 亚洲你xx我xx网站 | 在线 中文字幕 日韩 欧美 | 国产成人亚洲综合小说区 | 国产久热精品 | 欧美视频在线观看免费 | 性欧美网站| 好吊妞视频在线观看 | 在线播放精品一区二区啪视频 | 99久久99久久免费精品蜜桃 | 日本中文字幕不卡免费视频 | 国产精品福利资源在线 | 日本日日黄 | 不卡一二区 | 国内精品伊人久久久久7777人 | 欧美日韩制服 | 四虎网址在线观看 | 免费视频精品一区二区 | 热灸灸这里只有精品 | 欧美视频在线一区二区三区 | 亚洲高清中文字幕一区二区三区 | 免费看真人a一级毛片 | 四虎最新紧急更新地址 | 久青草免费视频 | 国产成人免费不卡在线观看 | 正在播放亚洲 | 99精品国产久热在线观看66 | 国产色图区 | 伊人影院在线观看视频 | 久久机热re这里只有精品15 | 日本日韩欧美 | 国产l精品国产亚洲区在线观看 | 天天狠天天操 | 奇米第四色888 | 日本高清免费视频不卡a | 俺去鲁婷婷六月色综合 | 欧美性猛交xxx嘿人猛交 | 中文字幕三级久久久久久 |