Python遊戲服務器開發日記(一)目標

  • 2020 年 1 月 13 日
  • 筆記

        到了新的環境,老大讓我有空研究下一代服務器技術,作為一個長期任務。

       新的服務器想達到的目標:

       1、分佈式系統,對象(Entity)之間的關係類似於Actor模型。

       2、邏輯服務,是單進程、多線程的,對象之間發消息進行通信,但是簡單讀取屬性儘可能做到直接。

       3、必須使用Python語言。開發方式類似於BigWorld引擎。

這個目標還是很宏偉的,只能從底層一步一步攻克。在這裡記錄一下解決問題的過程,既是分享,也是督促自己不要半途而廢。

我個人極度喜歡skynet框架,由於很多原因,skynet框架幾乎不可能修改為Python腳本。

原因除了眾所周知的GIL(Python全局鎖)問題以外,還有Python的Interpreter是極為重量級的,如果像skynet的獨立lua_state那樣使用,怕是什麼都不做也能把內存全部用光。所以還是用普通的對象表示每個Entity,在進程內保存所有對象即可,邏輯進程之內,也並不存在「獨立服務」的概念。

但是,在研究了skynet之後,我認為以後必然會大量參考skynet的成熟做法,甚至copy很多C語言層的代碼。畢竟和高手對架構的理解,和C語言經驗上,實在是差的太多。