最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

游戲制作-游戲服務(wù)端

2023-04-09 23:51 作者:游戲開發(fā)阿強(qiáng)  | 我要投稿

服務(wù)端的一些設(shè)計(jì)-關(guān)于接口的數(shù)據(jù)處理。

游戲制作-golang-服務(wù)端設(shè)計(jì)

文件結(jié)構(gòu)

  1. ? ?-

  2. ? ?- lib //不同項(xiàng)目也可以用的包

  3. ? ? ? ?- contract //通用協(xié)議、接口

  4. ? ? ? ?- db //數(shù)據(jù)庫、倉儲(chǔ)、訪問

  5. ? ? ? ?- file_ex //文件的擴(kuò)展包

  6. ? ? ? ?- xx_ex //一些其他類的擴(kuò)展包


  7. ? ?- model // 項(xiàng)目中用到的模型

  8. ? ? ? ?- area_model //區(qū)服數(shù)據(jù)庫模型

  9. ? ? ? ?- global_model //一些全局的數(shù)據(jù)模型,比如早期存放一些 環(huán)境相關(guān)的主機(jī)信息

  10. ? ? ? ?- bg_model // 后臺(tái)數(shù)據(jù)模型,也可以考慮放到schame中,主要還是看不同環(huán)境的需求

  11. ? ? ? ?- config_model //配置數(shù)據(jù)庫的模型

  12. ? ? ? ?- account_model // 賬戶相關(guān)模型

  13. ? ? ? ?- config_enum // 游戲相關(guān)的枚舉

  14. ? ? ? ?- config_model //excel表格相關(guān)的模型


  15. ? ?- common //項(xiàng)目中的一些基礎(chǔ)包

  16. ? ? ? ?- 配置數(shù)據(jù)

  17. ? ? ? ?- 一些2次處理的數(shù)據(jù)

  18. ? ?- module //業(yè)務(wù)模塊、比如英雄模塊的數(shù)據(jù)訪問、 戰(zhàn)斗模塊的數(shù)據(jù)訪問

  19. ? ?- ops //自動(dòng)化相關(guān) ?比如升級(jí)項(xiàng)目(更新配置、協(xié)議等)

  20. ? ?- ops_test //一些測(cè)試用例

  21. ? ?- proto // 協(xié)議

  22. ? ?- service // 服務(wù)接口

  23. ? ?-

model

model-數(shù)據(jù)模型設(shè)計(jì)

模型類型分類設(shè)計(jì)按游戲業(yè)務(wù)的一種領(lǐng)域劃分賬戶、配置、玩家數(shù)據(jù)、全局配置、支付、日志性能上的需求劃分對(duì)玩家數(shù)據(jù),按區(qū)服進(jìn)行分庫

在model的使用上的一些設(shè)計(jì)

  • 架構(gòu)上我們是分布式的系統(tǒng)

  • 業(yè)務(wù)進(jìn)程是無狀態(tài)的

  • 單個(gè)玩家的請(qǐng)求會(huì)通過負(fù)載均衡器、打在不同的節(jié)點(diǎn)上

數(shù)據(jù)的訪問頻率設(shè)計(jì)永久不變可通過內(nèi)存緩存熱數(shù)據(jù)分布式緩存冷數(shù)據(jù)直接訪問數(shù)據(jù)庫表任務(wù)數(shù)據(jù)合成一張表

數(shù)據(jù)處理

ORM 對(duì)象關(guān)系映射

  • 實(shí)現(xiàn)程序?qū)ο蟮疥P(guān)系數(shù)據(jù)庫數(shù)據(jù)的映射

IIdentity 唯一標(biāo)識(shí)

  • 增 Add(model)

  • 刪 remove(model)

  • 查 Find(model,sql,args)

  • 改 Save(model)

事務(wù)

  • 工作單元 UnitOfWork

    • 維護(hù)變化的對(duì)象列表

    • 將需要執(zhí)行的sql添加到工作單元中,

    • 在接口完成后通過事務(wù)提交

  • 事務(wù)處理

  1. conn.Begin()

  2. ?_, e := tx.Exec(item.Sqlstr, item.Values...)

  3. ? ?if e != nil {

  4. ? ? ? ?tx.Rollback()

  5. ? ? ? ?return e

  6. ? ?}

  7. tx.Commit()

分布式鎖

  • 加鎖

    • 輪訓(xùn)檢查key

    • 生成token

  • 解鎖

    • 先檢查是否有鎖、刪除鎖

    • 需要原子性、利用redis的腳本訪問


  1. var unlockScript = redis.NewScript(1, `

  2. ? ?if redis.call("get", KEYS[1]) == ARGV[1]

  3. ? ?then

  4. ? ? ? ?return redis.call("del", KEYS[1])

  5. ? ?else

  6. ? ? ? ?return 0

  7. ? ?end

  8. `)


游戲制作-游戲服務(wù)端的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
运城市| 迁西县| 文昌市| 酒泉市| 进贤县| 资阳市| 黔江区| 台前县| 西乌珠穆沁旗| 中方县| 社旗县| 南昌市| 理塘县| 贵州省| 镇平县| 四子王旗| 石柱| 新乡市| 九台市| 和田县| 保康县| 南宫市| 定安县| 双鸭山市| 凯里市| 梅河口市| 锦屏县| 阿城市| 海门市| 商洛市| 勃利县| 泸州市| 页游| 简阳市| 通渭县| 江阴市| 鹤峰县| 永德县| 前郭尔| 太谷县| 泽库县|