网络部署结构

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3RiaW56aQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

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框架进行对应的配置设置。详细方法參见下一节介绍。

[叁]Pomelo游戏server编程分享 之 server结构与配置分析的更多相关文章

  1. SQL Server编程系列(1):SMO介绍

    原文:SQL Server编程系列(1):SMO介绍 续篇:SQL Server编程系列(2):SMO常用对象的有关操作 最近在项目中用到了有关SQL Server管理任务方面的编程实现,有了一些自己 ...

  2. (转) SQL Server编程系列(1):SMO介绍

    最近在项目中用到了有关SQL Server管理任务方面的编程实现,有了一些自己的心得体会,想在此跟大家分享一下,在工作中用到了SMO/SQL CLR/SSIS等方面的知识,在国内这方面的文章并不多见, ...

  3. [转]SQL Server编程:SMO介绍

    转自:周公 最近在项目中用到了有关SQL Server管理任务方面的编程实现,有了一些自己的心得体会,想在此跟大家分享一下,在工作中用到了SMO/SQL CLR/SSIS等方面的知识,在国内这方面的文 ...

  4. Oracle与SQL SERVER编程差异分析(入门)

    网上有关Oracle与SQL SERVER性能差异的文章很多,结论往往是让你根据数据量与预算来选择数据库.但实际项目中,特别是使用 .Net 开发的系统,支持以上两种数据库或者更多已经成为Boss的普 ...

  5. 分享Windows Server 2012 R2的获取正版密钥方法

    然后使用“我有ISIC卡”验证,目前可用号码:S420546009858. 分享Windows Server 2012 R2的获取正版密钥方法. 首先登陆dreamspark注册一个账号https:/ ...

  6. 跨平台网络通信与server编程框架库(acl库)介绍

    一.描写叙述 acl project是一个跨平台(支持LINUX,WIN32,Solaris,MacOS,FreeBSD)的网络通信库及server编程框架,同一时候提供很多其它的有用功能库.通过该库 ...

  7. SQL Server编程系列(2):SMO常用对象的有关操作

    原文:SQL Server编程系列(2):SMO常用对象的有关操作 在上一篇周公简单讲述了SMO的一些基本概念,实际上SMO体系结构远不止周公在上一篇中讲述的那么简单,下图是MSDN上给出的一个完整的 ...

  8. .NET编程和SQL Server ——Sql Server 与CLR集成 (学习笔记整理-1)

    原文:.NET编程和SQL Server ——Sql Server 与CLR集成 (学习笔记整理-1) 一.SQL Server 为什么要与CLR集成 1. SQL Server 提供的存储过程.函数 ...

  9. SQL Server 编程入门

    一.T—SQL 的组成 1.DML(数据操作语言 Data Manipulation Language) 查询.插入.删除和修改数据库中的数据.SELECT.INSERT.UPDATE.DELETE ...

随机推荐

  1. devenv.exe 编译Solution

    Build https://docs.microsoft.com/en-us/visualstudio/ide/reference/build-devenv-exe Builds a solution ...

  2. WEEX学习网站

    https://github.com/alibaba/weex https://alibaba.github.io/weex/  官网     http://weex.help/topic/57792 ...

  3. SpringBoot中拦截器和过滤器的使用

    一.拦截器 三种方式 继承WebMvcConfigurerAdapter   spring5.0 以弃用,不推荐 实现WebMvcConfigurer  推荐 继承WebMvcConfiguratio ...

  4. Orcal的JDBC数据连接方式

    package cn.com.db; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prepar ...

  5. Blender插件之操作器(Operator)实战

    前言 在Blender中, 操作器(Operator)是它的核心. 用户通过各种操作器来创建和操作场景中的物体. 操作器对象继承自 class bpy.types.Operator(bpy_struc ...

  6. Java 系列之spring学习--依赖注入(二)

    一.依赖注入的三种方式 接口注入,set注入,构造函数注入 二.构造函数注入 2.1.测试类 package test; public class test01 { public String msg ...

  7. 09.javaweb简单标签编程

    一.简单标签 1,  简介:由于传统标签使用三个标签接口来完成不同的功能,显得过于繁琐,不利于标签技术的推广, SUN公司为降低标签技术的学习难度,在JSP 2.0中定义了一个更为简单.便于编写和调用 ...

  8. hdu 1087 A Plug for UNIX 最大流

    题意:http://www.phpfans.net/article/htmls/201012/MzI1MDQw.html 1.在一个会议室里有n种插座,每种插座一个: 2.每个插座只能插一种以及一个电 ...

  9. 开发手机APP过程,不同使用场景APP搜索框的样式及区别

    搜索框是 app 内最常见的控件之一,可以帮助用户快速又精准找到期望的内容与功能.不同的使用场景下,根据页面中搜索的重要程度,搜索框也有着不同的样式. 下面就常州开发APP公司和大家聊聊常见的四种样式 ...

  10. 智能家居控制APPUI界面设计

    2017年,随着智能化产业进入新的市场格局,千家品牌实验室也迎来全新的升级,致力为智能产业生态链提供更全更新更深度的行业分析和品牌数据监测服务.本文为大家带来关于中国智能家居行业发展APP设计欣赏. ...