kbengine:简单介绍
之前想分析一个开源服务器很久了,思前想后,还是选择了kbengine。
KBEngine的服务端底层框架使用c++编写,游戏逻辑层使用Python(支持热更新)。现在服务器大多数是用C++做的,python作脚本也比较多,另外一个就是lua。
kbengine底层架构被设计为多进程分布式动态负载均衡方案, 理论上只需要不断扩展硬件就能够不断增加承载上限,单台机器的承载上限取决于游戏逻辑本身的复杂度。这里对多进程分布式不是很理解,以后再解答。
kbengine主要组件
baseapp,baseappmgr,cellapp,cellappmgr,dbmgr,loginapp,machine。
工作组件:
bot,guiconsole,interfaces,logger。
后缀有mgr的组件都是相应的管理器。
数据库用的是mysql,可以考虑一下加上redis。
必要组件描述
· loginapp:
登录验证、注册、接入口。可在多台机器部署多个loginapp进程来负载。
· dbmgr:
高性能多线程的数据存取。默认使用Mysql作为数据库。
· baseapp:
客户端与服务端的交互只能通过loginapp分配的baseapp来完成。定时写entity的数据到数据库、baseapp数据相互备份、灾难恢复。可在多台机器部署多个baseapp进程来均衡负载。脚本层通常会选择在baseapp上实现如:社交系统、广播聊天、排行、游戏大厅、等等逻辑系统。
· baseappmgr:
协调所有baseapp的工作,包括baseapp负载均衡处理等。
· cellapp:
处理游戏与空间和位置有关的逻辑,如:AOI、Navigate、AI、战斗等等。可在多台机器部署多个cellapp进程来动态均衡负载。
· cellappmgr:
负责协调所有cellapp的工作,包括负载均衡处理等。
· machine:
抽象出一个服务端硬件节点(一台硬件服务器只能存在一个这样的进程)。主要用途是接收远程指令处理本机上的组件启动与关闭, 提供本机上运行组件的接入口以及收集当前机器上的一些信息, 如:CPU、内存等。 这些信息会提供给一些对此比较感兴趣的组件。
· client:
客户端我们将提供基础框架,这个框架不包括渲染部分和输入输出部分的具体实现, 我们将提供一个lib文件和一套API接口,开发者可以选择使用自己比较适合的图形渲染引擎与输入输出控制部分。Unity3D, HTML5, Cocos2d等技术我们提供了相关插件,能够快速的和服务端对接。
工具组件描述
· interfaces:
支持快速接入第三方计费、第三方账号、第三方数据, 快速与运营系统耦合。
· logger:
收集和备份各个组件的运行日志。
其它组件描述
服务端组成
架构:
- |----------|
- | client | x N
- |----------|
- ------------------------|-----|-------------------------------
- |----------| |----------| |----------|
- | loginsrv | x N | basesrv | x N |basesrvmgr| x 1
- |----------| |----------| |----------|
- ------------------------|-----|-------------------------------
- |----------| |----------|
- | cellsrv | x N |cellsrvmgr| x 1
- |----------| |----------|
- ------------------------|-----|-------------------------------
- |----------| |----------|
- | dbmgr | x 1 |interfaces| x 1
- |----------| |----------|
- ------------------------|-----|-------------------------------
- |----------|
- | mysql | x 1
- |----------|
目录结构:
- |- kbengine (KBE_ROOT 根目录)
- |- assets (默认的游戏项目资产库,你可以添加新的资产库通过环境变量绑定)
- |- res (所有资源文件)
- |- spaces (通常存放游戏场景相关的资源,例如Navmesh)
- |- server (通常放置服务端相关的配置文件)
- |- scripts (所有的游戏逻辑,Python文件)
- |- base (Base的Python逻辑)
- |- cell (Cell的Python逻辑)
- |- client (Client的Python逻辑)
- |- bots (机器人的Python逻辑,压力测试)
- |- common (逻辑公共文件夹)
- |- data (游戏逻辑用到的数据资源)
- |- db (dbmgr扩展脚本)
- |- entity_defs (实体定义与声明)
- |- interfaces (实体的接口声明)
- |- server_common (服务端逻辑公共)
- |- user_type (自定义用户类型目录)
- |- kbe (引擎目录)
- |- tools (引擎工具)
- |- server (引擎服务端工具)
- |- guiconsole (可视化的控制台工具)
- |- install (引擎安装工具)
- |- pycluster (跨平台的集群控制Python脚本工具)
- |- xlsx2py (游戏数据表导出工具)
- |- src (KBEngine源代码)
- |- build (makefile公共脚本)
- |- client (客户端插件和例子目录)
- |- kbengine_dll (Windows应用程序插件源代码)
- |- common (公共目录)
- |- lib (各种模块源代码)
- |- client_lib (客户端底层公共框架)
- |- cstdkbe (KBEngine标准库)
- |- db_mysql (Mysql存取实现)
- |- dbmgr_lib (数据存取公共接口)
- |- dependencies (依赖库)
- |- entitydef (实体定义解析模块)
- |- helper (一些通用的协助性模块)
- |- math (数学相关)
- |- navigation (2D/3D导航模块)
- |- network (网络模块)
- |- pyscript (脚本插件)
- |- python (python源代码)
- |- resmgr (资源管理器)
- |- server (服务端公共模块)
- |- thread (多线程模块)
- |- xmlplus (xml解析库)
- |- libs (编译后的*.lib, *.a文件)
- |- server (服务端app源代码)
- |- baseapp (baseapp源代码)
- |- baseappmgr (baseappmgr源代码)
- |- cellapp (cellapp源代码)
- |- cellappmgr (cellappmgr源代码)
- |- dbmgr (dbmgr源代码)
- |- loginapp (loginapp源代码)
- |- machine (machine源代码)
- |- resourcemgr (resourcemgr源代码)
- |- tools (服务端助手工具)
- |- interfaces (支持第三方计费、第三方账号等接口)
- |- bots (压力测试, 虚拟客户端, 源码)
- |- guiconsole (可视化的控制台工具源码)
- |- message_log (服务端log收集工具源码)
- |- res (引擎资源目录)
- |- key (RSA密钥)
- |- scripts (Python脚本库)
- |- server (服务端引擎配置)
- |- log4cxx_properties (log4cxx配置)
- |- doc (指南文档源代码)
- |- bin (编译后的可执行文件存放目录)
- |- client (编译后的客户端exe可执行文件存放目录)
- |- server (编译后的服务端可执行文件存放目录)
- |- logs (服务端运行日志)
- |- tutorial (指南文档)
kbengine:简单介绍的更多相关文章
- kbengine简单介绍(1)
什么是kbengine? 一款开源的游戏服务端引擎,客户端通过简单的约定协议就能与服务端通讯, 使用KBEngine插件能够快速与(Unity3D, OGRE, Cocos2d-x, HTML5, 等 ...
- [原创]关于mybatis中一级缓存和二级缓存的简单介绍
关于mybatis中一级缓存和二级缓存的简单介绍 mybatis的一级缓存: MyBatis会在表示会话的SqlSession对象中建立一个简单的缓存,将每次查询到的结果结果缓存起来,当下次查询的时候 ...
- 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍
一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构 ...
- 利用Python进行数据分析(4) NumPy基础: ndarray简单介绍
一.NumPy 是什么 NumPy 是 Python 科学计算的基础包,它专为进行严格的数字处理而产生.在之前的随笔里已有更加详细的介绍,这里不再赘述. 利用 Python 进行数据分析(一)简单介绍 ...
- yii2的权限管理系统RBAC简单介绍
这里有几个概念 权限: 指用户是否可以执行哪些操作,如:编辑.发布.查看回帖 角色 比如:VIP用户组, 高级会员组,中级会员组,初级会员组 VIP用户组:发帖.回帖.删帖.浏览权限 高级会员组:发帖 ...
- angular1.x的简单介绍(二)
首先还是要强调一下DI,DI(Denpendency Injection)伸手获得,主要解决模块间的耦合关系.那么模块是又什么组成的呢?在我看来,模块的最小单位是类,多个类的组合就是模块.关于在根模块 ...
- Linux的简单介绍和常用命令的介绍
Linux的简单介绍和常用命令的介绍 本说明以Ubuntu系统为例 Ubuntu系统的安装自行百度,或者参考http://www.cnblogs.com/CoderJYF/p/6091068.html ...
- iOS-iOS开发简单介绍
概览 终于到了真正接触IOS应用程序的时刻了,之前我们花了很多时间去讨论C语言.ObjC等知识,对于很多朋友而言开发IOS第一天就想直接看到成果,看到可以运行的IOS程序.但是这里我想强调一下,前面的 ...
- iOS开发多线程篇—多线程简单介绍
iOS开发多线程篇—多线程简单介绍 一.进程和线程 1.什么是进程 进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 比如同时打开QQ.Xcod ...
- iOS开发UI篇—UITabBarController简单介绍
iOS开发UI篇—UITabBarController简单介绍 一.简单介绍 UITabBarController和UINavigationController类似,UITabBarControlle ...
随机推荐
- Office365开发者计划——账户信息上显示已是订阅用户,点击其他授权信息,仍然需要激活
一.申请过程跳过. 二.安装之后,点击账号,查看授权状态,如题所述. 解决办法: 链接地址:https://answers.microsoft.com/zh-hans/msoffice/forum/a ...
- 解决最近vs2017总是在加载工程的时候卡住不不动
就像这样 解决方法 删除工程目录下的.vs目录
- GIT命令行笔记
一次常规的初始化+推送: git initgit config user.email "you@example.com"git config user.name "asm ...
- collections之python基本应用
Collections主要功能 Counter 类 defaultdict 类 namedtuple 类 deque类 orderedDict类 Counter 是一个有助于 hashable 对象计 ...
- C# ORM修改实体层
实体层:[数据库中是么以偶Contents2这个字段的],之所以在实体层添加一个Contents2,是因为: 所以在添加之后: 返回json形式,就用Contents,后台添加就用Contents2. ...
- tomcat -web.xml里的内容
<?xml version="1.0" encoding="UTF-8"?> <Server port="8005" sh ...
- Java 递归详解
递归详解: 1.递归一句话通俗讲就是一个方法自动重复调用自己的过程. 2.因为是重复调用自己了,所以看起来像一个循环,所以为了避免内存溢出系统崩溃,我们需要在方法里加一个返回值判断,用于递归循环的跳出 ...
- SQL Server通过外部程序集注册正则表达式函数(CLR函数) [转]
转自:http://blog.csdn.net/binguo168/article/details/76598581 1.下载dll程序集(通过C#编写的支持正则的方法),百度网盘下载: 1.1如果只 ...
- Java课程作业之动手动脑(五)
1.请阅读并运行AboutException.java示例. import javax.swing.*; class AboutException { public static void main( ...
- Robot Operating System (ROS)学习笔记---创建简单的机器人模型smartcar
搭建环境:XMWare Ubuntu14.04 ROS(indigo) 转载自古月居 转载连接:http://www.guyuehome.com/243 一.创建硬件描述包 已创建catkin_ ...