zoukankan      html  css  js  c++  java
  • [叁]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框架进行对应的配置设置。详细方法參见下一节介绍。

  • 相关阅读:
    Python Semaphore
    Python 互斥锁
    Python 递归锁
    Python GIL锁
    Python 线程调用
    进程与线程
    Python paramiko模块
    Python SocketServer模块
    MonoDevelop with Visual Studio to Linux and Mac OSX maintaining a single code base for all platforms.
    mime大全收集
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/7228411.html
Copyright © 2011-2022 走看看