博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多进程服务器架构
阅读量:6156 次
发布时间:2019-06-21

本文共 954 字,大约阅读时间需要 3 分钟。

 

最近哼哧的成果出炉啦,整合之前的c++工具类、网络库、半成品go服务器,http、tcp、udp,前端,后台轮一遍,组合出这套架构,一套完整解决方案哟,基础的启动、登录、数据库相关全实现了。

有三个比较满意的地方:
一、消息通信全被封装成了rpc形式,且无需手动注册,只要在枚举处声明并添加同名rpc_function即可自动调用。使用方便:
    前端接口形式:CallRpc(rpcName, sendFunc, recvFunc)
    后台响应函数:自带 recvBuf(由client写入的参数构成,按同样顺序读取)、backBuf(要回复对方的数据流,若有写入会自动发送,交由对端填入的 recvFunc 处理)
二、 继承以前写的go多进程服务器优势,全部后台的连接关系由一份配表统一维护。非常容易改变连接关系、添加新的后台模块。
    统一的连接获取方式
        var g_cache_battle_conn *tcp.TCPConn
        func SendToBattle(msgID uint16, msgdata []byte) {
            if g_cache_battle_conn == nil {
                g_cache_battle_conn = netConfig.GetTcpConn("battle", 0)
            }
            g_cache_battle_conn.WriteMsg(msgID, msgdata)
        }

    统一的网络服务创建方式
        func main() {
            common.LoadAllCsv()
            netConfig.RegMsgHandler() 

            gamelog.Warn("----Battle Server Start-----")

            if netConfig.CreateNetSvr("battle") == false {
                gamelog.Error("----Battle NetSvr Failed-----")
            }
        }
三、散列化玩家数据:按业务区分成块,各自独立处理,比如:邮件、任务、基础、战斗、VIP......各部分均可独立从数据库读出
 
go服务器:
c++战斗服:
客户端网络模块: 

转载于:https://www.cnblogs.com/3workman/p/6750491.html

你可能感兴趣的文章
“羊贵妃”没走“牛魔王”又来?牛肉价格屡创新高
查看>>
0基础如何入门Python编程
查看>>
JavaScript写贪吃蛇游戏,代码思路都有,想学的自己看
查看>>
人工智能与大数据的耦合,将会怎么影响我们的生活
查看>>
数据运营的三种角色
查看>>
【译】CSS 自定义属性的策略指南
查看>>
从零实现一个自定义 HTML5 播放器
查看>>
WeGeek Talk | 美团外卖
查看>>
使用 Karma、Mocha、Chai 搭建支持 ES6 的测试环境
查看>>
linux/unix编程手册-16_20
查看>>
[译] Android 的多摄像头支持
查看>>
【个人思考系列】美团点评 Java 后端新人第一年总结&面试经验 | 掘金技术征文...
查看>>
从零开始netty学习笔记之BIO
查看>>
快来围观一下JavaScript的Proxy
查看>>
基于可靠消息方案的分布式事务:Lottor介绍
查看>>
分布式存储的六大优点
查看>>
闭包总结(2018.03.19)
查看>>
Exploiting “BadIRET” vulnerability (CVE-2014-9322, Linux kernel privilege escalation)
查看>>
磁盘分区原理:从MBR到GPT
查看>>
再谈 Go 语言在前端的应用前景
查看>>