[叁]Pomelo游戏server编程分享 之 server结构与配置分析

网络部署结构

我们先看一下Pomeloserver网络部署情况,直接上图



Pomeloserver端框架简单地可分为两层。即链接层(Connector、Gate)和服务层(Logic、Master),也叫前端server(frontend server)和后端server(backend server)。

链接层直接与client进行网络通信,client的请求通过链接层转发到服务层的Logic进行处理,处理完后将结果交由Connector转发给client。

这种结构能够方便我们进行server扩展,特别是负责均衡。

须要特殊说明的是Gate和Master。client第一次请求是发到Gateserver,然后由Gateserver为client分配一个Connectorserver,详细的分配策略是程序可控的。Master主要负责server管理,如新开server、关闭server。

因为Logicserver能够有多个,client发送请求时就须要告诉Connector消息须要发送到哪个Logicserver上。为此Pomelo引入了路由(Route)机制。即client全部的消息须要指定路由信息。一边消息正确投递。

Logicserver按功能可划分为不同的server。如场景server、聊天server、用户信息管理server等,那么不同server之间难免须要进行通信,为此Pomelo引入了RPC机制。即全部逻辑server之间的通信能够通过RPC调用来完毕,这样就非常方便了。

文件夹结构及其配置文件

Pomeloserver框架是强依赖于脚本文件夹结构的。即server端某些文件夹尤其特殊功能定义,详细例如以下图:



当中,橙色 部分的文件夹结构是Pomelo框架规定的。蓝色部分是Node.js规定的,绿色部分是使用者定义并能够被Pomele框架依照一定规则读取的。


对部分文件夹做对应说明例如以下:

./game-server 这个文件夹是通过pomelo init命令创建项目后生成的。全部的游戏服务器相关的代码和配置文件都将放在这个里面

./game-server/app 用于放置服务器端代码文件

./game-server/app/servers 用于放置虚拟服务器代码,这个文件夹是pomelo依赖的,当我们在配置文件里指定了开启某某服务器时,pomelo会到这个文件夹以下找到名字与其相应的文件夹,然后找该文件夹下相应的handler、remote、filter文件夹下的js代码文件,并运行。


./game-server/app/servers/服务类型名称/handler 用于放置处理用户请求(基于Route的用户请求,服务器名称和handeler文件夹下的js文件名都将作为Route的一部分)的代码文件


./game-server/app/servers/服务类型名称/remote 用于放置处理服务器间调用(RPC调用)的代码文件


./game-server/app/servers/服务类型名称/filter 用于放置处理filter逻辑(包含before和after)的代码文件


./game-server/logs 用于存放日志文件


./game-server/app.js 服务器程序启动入口文件,能够在这个文件中面对Pomelo框架进行对应的配置设置,详细方法參见下一节介绍。


./game-server/config 用于放置配置文件,包含Pomelo框架的配置文件,第三方插件的配置文件。以及用户自己定义的配置文件(建议在该文件夹下将对应文件夹来存储用户自己定义配置文件。这样不至于太乱)


./game-server/config/master.json Master服务器使用的配置文件

./game-server/config/servers.json 也是给Master用的,用于定义server集群开启,如某某硬件server上开启某某游戏server

./game-server/config/log4js.json 日志配置

./game-server/config/serverProtos.json 待研究

./game-server/config/adminUser.json 待研究

./game-server/config/dictionary.json 用于定义Route压缩的字典配置文件



Pomelo框架设置

框架设置的实现途径有两种,一是通过上述的配置文件,二是通过Application.set()方法。

关于能够使用Application.set()方法进行设置的Pomelo框架參数,可參见下图


參考资料:

Pomelo框架概述 https://github.com/NetEase/pomelo/wiki/pomelo%E6%A1%86%E6%9E%B6%E6%A6%82%E8%BF%B0


Pomelo消息压缩 https://github.com/NetEase/pomelo/wiki/%E6%B6%88%E6%81%AF%E5%8E%8B%E7%BC%A9


./game-server/logs 用于存放日志文件
./game-server/app.js 服务器程序启动入口文件,能够在这个文件中面对Pomelo框架进行对应的配置设置。详细方法參见下一节介绍。

原文地址:https://www.cnblogs.com/yjbjingcha/p/7228411.html