五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(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ó)家法律
西畴县| 伊吾县| 甘谷县| 黄骅市| 和政县| 娱乐| 鞍山市| 青浦区| 个旧市| 瑞昌市| 长泰县| 延吉市| 集贤县| 大连市| 红原县| 新安县| 明溪县| 闻喜县| 河西区| 德清县| 尚志市| 松桃| 达州市| 招远市| 汪清县| 恩平市| 进贤县| 自治县| 福建省| 道真| 永和县| 隆子县| 肥西县| 五家渠市| 会同县| 根河市| 溆浦县| 万盛区| 和平区| 西盟| 溧水县|