前言
牌類遊戲與微服務是沒有什麼聯絡的,僅僅是因為筆者從事牌類遊戲行業的開發工作,近期因為老框架在負載上升後遇到很多棘手的問題,需要從架構上做調整,我選擇了微服務進行重構
- 語言層面上,選擇了golang
- 釋出部署工具上,選擇了kubernetes, 主要考慮是團隊人太少,需要一個這樣事半功倍的工具,此前也寫過一點相關的部落格,kubernetes學習筆記 (二):k8s初體驗
- 微服務框架上,選擇了micro,主要考慮是比較相信這個來自谷歌的大牛,框架寫的是相當的不錯
- 資料序列化協議選擇了protobuf替換了原來的json方式
- rpc框架上,選擇了谷歌的grpc, 主要是考慮語言中立、高效能,比較適合遊戲
- 服務發現,服務註冊,選擇了consul,主要考慮是簡單 方便.正式環境下使用k8s自帶的服務發現,後文會有詳細介紹
- service mesh暫未考慮,主要是買了本書看完感覺掌握程度不高,暫時放棄了,訪問服務以micro提供的方法硬編碼訪問(其實也很方便)
除了微服務相關的,遊戲本身業務方面也進行了一些優化,主要有:
- 遊戲房間和遊戲本身分離,使得無論是房間玩法的擴充還是遊戲玩法的擴充都很容易
- 遊戲與演算法分離,可以獨立編寫,獨立測試
- 撲克遊戲設計
- 麻將遊戲設計
- 使用proto二進位制資料傳輸的通用websocket閘道器
部落格內容
牌類遊戲使用微服務重構筆記(二): micro框架簡介:micro toolkit
牌類遊戲使用微服務重構筆記(三): micro框架簡介 go-micro
牌類遊戲使用微服務重構筆記(四): micro框架使用經驗
牌類遊戲使用微服務重構筆記(五): micro原始碼閱讀
牌類遊戲使用微服務重構筆記(六): protobuf爬坑
牌類遊戲使用微服務重構筆記(七): 使用grpc構建遊戲雙向流
牌類遊戲使用微服務重構筆記(八): websocket通用閘道器
牌類遊戲使用微服務重構筆記(九): 遊戲多版本相容與熱更新
牌類遊戲使用微服務重構筆記(十): 麻將設計
牌類遊戲使用微服務重構筆記(十一): 撲克設計
牌類遊戲使用微服務重構筆記(十二): 在k8s中部署
...
本人學習golang、micro、k8s、grpc、protobuf等知識的時間較短,如果有理解錯誤的地方,歡迎批評指正,可以加我微信一起探討學習