• 《从零开始搭建游戏服务器》架构和工具分析


    一、前言:

            在正式开始搭建框架和编写代码之前,我们首先需要在大脑里构建游戏服务器的蓝图,主要思考几个问题:

    1.一个完整的游戏需要划分为几个类型的服务器?

    2.选择哪种或者哪些(可能同时结合多种数据库使用)类型的数据库?

    3.使用什么网络通信框架和编解码(规则)工具?

    4.其他工具。

    二、概述:

    1.服务器分类:

            对于性能要求较高、用户量较多的大型游戏类型,例如Moba或者MMO游戏,服务器通常根据功能划分为:登录服务器、游戏(逻辑)业务服务器、充值服务器和日志服务器,这种分配方式可以实现业务的分离和程序的解耦。

    2.数据库的选择:

            对于游戏开发而已,选择MySQL作为数据存储服务器无疑是理智的选择,一方面是整体相较Orcle和SQL Server更加轻量级,另一方面是已有很多成熟的封装类库可以使用,无需编写太多数据库操作代码。

            处理这种永久性的数据存储数据库之外,还有另外一种用于内存缓冲的数据库,具备存取效率极高,但丢失几率相比前类服务器要高一些,主要用于需要快速操作数据,且不造成数据库死锁的方案,最常用的有Redis。存储过程大致如下:将需要频繁和快速操作的数据存储在redis数据库(内存缓冲),然后定时从Redis将数据回写到mysql数据库中。

    3.网络通信框架:

            对于Java编写网络通信,当前最为常用的网络通信框架无疑就支持分布式开发服务器的Netty这种NIO(非阻塞异步网络通信)框架,而相应的编解码方式,则可以考虑Google开发的ProtoBuffer,数据量小而且跨平台特性好。

  • 相关阅读:
    你对线程优先级的理解是什么?
    Java 中 notify 和 notifyAll 有什么区别?
    线程之间是如何通信的?
    多线程同步有哪几种方法?
    CyclicBarrier 和 CountDownLatch 的区别 ?
    int 和 Integer 有什么区别?
    Thread 类中的 yield 方法有什么作用?
    用最有效率的方法计算 2 乘以 8?
    volatile 关键字的作用 ?
    数组有没有 length()方法?String 有没有 length()方法?
  • 原文地址:https://www.cnblogs.com/KylinBlog/p/7442872.html
Copyright © 2020-2023  润新知