一个大型的网落游戏服务器应该包含几个模块:网络通讯,业务逻辑,数据存储,守护监控(不是必须),其中业务逻辑可能根据具体需要,又划分为好几个子模块。
这里说的模块可以指一个进程,或者一个线程方式存在,本质上就是一些类的封装。
对于服务器的并发性,要么采用单进程多线程,要么采用多进程单线程的方式,说说两种方式的优缺点:
一、单进程多线程的服务器设计模式,只有一个进程,但一个进程包好多个线程:
网络通讯层,业务逻辑,数据存储,分别在独立的线程中,无守护进程。
优点:
1.数据共享和交换方便,使用全局变量或者单例就可以,数据存储方便。
2.单进程,服务器框架结构相对简单,编码容易。
缺点:
1.所有功能只能在单个物理服务器上,不能做成分布式。
2.不方便监控各个线程状态,容易死锁