码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 通用游戏服务器架构设计


    经过研究多个框架和自己经历的项目,我总结出来一套较为通用的,以8c16g机器来说,如何设计出来一套单进程多线程、分区分服的java游戏服务器框架呢?

    1.逻辑层(带养成数据的模块,io密集)

    线程池:3*core 这样子的线程数。

    功能:进行业务线程的处理,这里主要是一些带有db操作的业务逻辑,比如:任务、背包等,好友,工会,宠物等 。利用事务+锁,遵循按照一致的顺序拿锁,这样子就不会有死锁。

    当然了要避免缓存穿透问题,根据功能是否开启去避免这种问题。

    2.场景层(实时高的游戏模块,无db之类的阻塞操作,cpu密集)

    线程池:10个左右。

    功能:主要没有db操作的,比如:进入到mmo中的场景服,打麻将的麻将服,再结算后,将结果post到逻辑层的线程池(完全是异步交互,不会出现等待,因此不会像actor那样子因为相互等待出现死锁)进行发奖计算等,这样子场景层的业务完全不会阻塞。

    3.跨服中心服

    和上面的服务完全是一套代码,通过config区分到底是跨服服务器,还是游戏服务器。CG、GC这样子命名的类进行通信。

    4.战斗校验服   // 其它服务器的一种

    GB、BG这样子进行通信,自己创建NettyClient创建连接即可。

    总结:

    其实java游戏服务器就是这么简单,这种架构适合所有的游戏服务器类型。

    虽说是分区分服,其实可以看出来扩展非常容易,比如:棋牌来说,玩家不够多时,搞个32c64g的服务器就能承载非常多玩家了。

    如果是玩家持续增长,说明游戏已经发家了,可以进一步引入服务发现,做好消息转发即可。

  • 相关阅读:
    Python与JAVA有何区别?
    用python画折线图
    使用C++界面框架ImGUI开发一个简单程序
    【大数据开发 Spark】第二篇:搭建 Spark 开发环境、 Spark 实现 WordCount 单词统计
    windows/mac/linux 用C++搭建一个刷题模拟器
    程序员越老越容易失业?码农的出路到底在哪里
    使用国内源加速pip安装包
    【openGauss】在windows中使用容器化的mogeaver
    OpenCV自学笔记十:图像平滑处理
    【从零开始学习 SystemVerilog】6.5、SystemVerilog 接口—— Clocking Blocks(上)
  • 原文地址:https://blog.csdn.net/themagickeyjianan/article/details/127885761
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号