一、netty+redis分佈式搭建棋牌遊戲服務器
https://github.com/shiyun3210/jyqp
https://github.com/shiyun3210/jyqp.git
二、開源麻將,供用戶學習。使用netty 開發
https://github.com/henanren/majiang
https://github.com/henanren/majiang.git
作者博客:
啓動流程:
三、使用netty4.X實現的手機遊戲服務器
支持tcp,udp,http,websocket鏈接,採用protobuf自定義協議棧進行網絡通信,支持rpc遠程調用,使用mybatis3支持db存儲分庫分表,支持異步mysql存儲,db保存時同步更新reids緩存。 使用ExcelToCode工程,將excel數據生成java類和json數據字典,DictService直接讀取json,減少數據字典部分代碼。使用game-executor工程,增加遊戲內的異步事件全局服務, 支持事件sharding,均衡的異步執行事件邏輯
https://github.com/jwpttcg66/NettyGameServer
https://github.com/jwpttcg66/NettyGameServer.git
文檔地址
https://github.com/jwpttcg66/NettyGameServer/wiki
四、JgFramework - 基於Netty的強大的遊戲服務器框架
https://github.com/bupt1987/JgFramework
https://github.com/bupt1987/JgFramework.git
特點
1、使用netty作爲底層,性能得到保障
2、支持socket和websocket2種連接模式,可以自由選擇
3、簡單實用的路由,方便handler開發
4、異步無鎖的數據同步
5、spring+Hibernia的自動注入和事務管理
6、mysql數據庫的讀寫分離以及對多數據庫的讀寫支持
7、傳輸數據的多樣化,可以自用實現接口來實現不同的傳輸數據類型,現在使用的是json
8、框架自帶了認證服務和管理服務,有簡單的管理命令,需要telnet連接到端口(默認38080)
9、方便的ip段限制功能
10、方便設置心跳檢查
11、登錄方和服務端之間的認證,可通過實際接口來完成,默認使用的rsa加密傳輸認證碼
12、性能優良的排隊系統
13、豐富的工具類:memcache、redis等
14、基本遊戲模塊的抽象
性能測試
測試信息
cpu : AMD A10
內存 : 8G
測試項目 : https://github.com/bupt1987/JgWeb
測試腳本 : src/test/java/client/TestWebSocket.java
測試方式 : 自壓
測試結果
在100個登錄用戶,每個用戶在登錄完成,再init操作之後,每個用戶發送100000個請求,
得到每秒處理請求數在3.5W左右。
歡迎加入
如果對該系統有興趣可以發郵件至 [email protected] 一起探討,歡迎加入
五、JgFramework-demo
https://github.com/bupt1987/JgWeb
https://github.com/bupt1987/JgWeb.git
注意事項
1、開發是在Eclipse下開發的,需要maven支持,jdk在1.7以上
2、啓動使用tomcat或者直接運行com.zhaidaosi.game.serve.BootStart 中的main方法。
3、如果是tomcat的訪問http://127.0.0.1/JgWeb,如果是運行main方法的,
用瀏覽器打開src/main/webapp/index.html即可
4、注意新建數據庫,sql在docs目錄下,還要注意數據庫用戶名密碼,
在src/main/java/jdbc.properties
配置文件
見src/main/java/下
1、spring的配置文件:applicationContext.xml和services.xml
2、框架配置文件:jgframework.properties,
默認配置見JgFramework框架中的default_jgframework.properties
3、數據庫配置:jdbc.properties
六、一個初級基於netty的java遊戲後臺開發框架
https://github.com/vincepeng/gameNettyDemo
https://github.com/vincepeng/gameNettyDemo.git
這是一個基於netty的java遊戲後臺開發框架,很初級但是和當前我司實際開發環境也比較類似. 使用protobuf編碼數據,使用一個short字節區分消息類型. 用法: 先搭建好protobuf環境,protobuf.exe放置在lib目錄裏面 然後運行nettyServer; 運行client1,client2,client3之一,可以自動連接服務端,服務端回包歡迎,對應客戶端發送給服務端一句話,服務端push給所有在線玩家