einx 用於遊戲伺服器的golang框架

2021-09-06 09:47:24 字數 3115 閱讀 5454

einx 是乙個由 golang 編寫的用於遊戲伺服器或者應用伺服器的開源框架。使用簡便,便於初級程式設計師進行邏輯開發,同時einx能夠靈活擴充套件,開發團隊可根據需求設計網路拓撲.

特性:*  支援簡單型別序列化與反序列化的rpc

*  高效能與高精度的定時器

*  支援業務模組化

* einx/db 元件化資料庫相關操作

* einx/network 元件化網路io

* einx/log 非同步日誌庫

* einx/timer 時間輪定時器

* einx/module 模組

* einx/component 元件

* einx/lua 指令碼相關操作

---------------

每個模組有且僅有乙個goroutine用於處理被投遞到本模組中的訊息,在模組中的邏輯不需要考慮同步問題,簡化了邏輯開發難度,模組與模組之間可以通過rpc互動

使用 einx 搭建乙個簡單的伺服器

----------------------------------

安裝 einx

建立乙個簡單的einx例子:

einx的任務核心是module,module中可以新增各種component作為元件:

cyinx/einx/network    網路相關的component

cyinx/einx/db        資料庫相關的component

建立乙個tcpserver的component管理器:

建立乙個邏輯module,並將tcpserver管理器加入到module之中,伺服器就可以啟動,並監聽2345埠的請求

註冊訊息handler與rpc:

註冊訊息handler需要事先註冊乙個message:

在註冊rpc時,使用字串作為rpc名,註冊handler時,需要使用之前註冊的msgid

import (

"msg_def"

)var logic = einx.getmodule("logic")

func initdbhandler()

func testrpc(sender inte***ce{}, args inte***ce{}) )

註冊定時器使用module.addtimer函式,返回值為timerid,如果要提前停止timer,可以執行module.removetimer(timerid):

import (

"msg_def"

)var logic = einx.getmodule("logic")

var testtimerid uint64 = 0

func initdbhandler()

func testrpc(sender inte***ce{}, args inte***ce{})

}func testtimer(args inte***ce{})

func checkversion(agent agent, args inte***ce{})

einx 乙個用Go構建的遊戲伺服器

a example server for einx einx 是乙個由 golang 編寫的用於遊戲伺服器或者應用伺服器的開源框架。設計核心 每個模組有且僅有乙個goroutine用於處理被投遞到本模組中的訊息,在模組中的邏輯不需要考慮同步問題,簡化了邏輯開發難度,模組與模組之間可以通過rpc互動 ...

mysql 做遊戲伺服器配置 遊戲伺服器部署

bin bash 小菜鳥 掛機 版本 1.0 遊戲伺服器部署 基礎環境 mysql資料庫svn客戶端需部署才能執行此指令碼 if uid 0 then echo game server install else exit 1 firead p please create the storage ga...

mysql遊戲伺服器快取 遊戲伺服器快取策略

1 什麼是快取 在資料庫與伺服器邏輯之間加入的資料層 2 作用 減少資料庫操作 伺服器使用mysql作為資料庫,mysql每秒鐘併發數量有限,所以我們要減少mysql的操作。3 erlang的快取 erlang 在記憶體中可用 程序字典 gen state ets 儲存變數,理論上三種方式都可以作為...