• KBEngine源码:组件方案


    相对于skynet,KBEngine提供了完整的组件方案。

    Loginapp

    登录验证、注册、Client的接入口。

    Baseapp

    1. 通过Loginapp分配过来的Client会与Baseapp保持连接,完成客户端与服务端的交互。
    2. 定时把Entity的数据保存进数据库。
    3. Baseapp之间会进行互相备份,保证数据的安全。
    4. 灾难恢复-当Baseapp发生问题(崩溃、断开连接等)时,会自动进行恢复。

    常见用法

    Baseapp上不涉及与空间或位置相关的逻辑,所以脚本层通常会选择在baseapp上实现如:社交系统、广播聊天、排行、游戏大厅等等逻辑系统。

    BaseappMgr

    协调所有Baseapp的工作,包括Baseapp负载均衡处理等。一个KBE架构中,只会出现一个BaseappMgr。

    Cellapp

    1. 处理游戏、空间或位置有关的逻辑
    2. 空间数据管理,如增加几何映射、设置空间数据
    3. 抽象概念-Space空间的创建和摧毁。

    常见用法

    1. Navigate导航
    2. AI逻辑
    3. 战斗系统
    4. View视图的控制
    5. 可以增加一个副本或者房间

    CellappMgr

    负责协调所有Cellapp的工作,包括负载均衡处理等。一个KBE架构中,只会出现一个CellappMgr。

    DBMgr

    数据库管理器,管理与底层数据库的通讯。可以连接Mysql、Redis等多种数据库,并且能连接多台数据库进行负载均衡。

    DBMgr最多可以挂65535个数据库,这些数据库可以在不同硬件上也可以在相同的机器上,api使用时,通过Entity.writeToDB等接口和一定的算法,指定存储到某个地方,这样就可以平均分配到不同的数据库上了。同时,Mysql等数据库都有自己的分库分表机制,可以共同协助完成这项工作。

    作用

    1. 对数据库的访问。
    2. 高性能多线程的数据存取。

    默认使用Mysql作为数据库。同时,一个KBE架构中,只会出现一个DBMgr。

    Machine(信息中心)

    抽象出来的一个服务端硬件节点(一台硬件服务器只能存在一个这样的进程)。

    1. 接收远程指令,处理本机上的组件启动与关闭;
    2. 通知服务器群组各个进程的存活状态;
    3. 提供本机上运行组件的接入口;
    4. 收集当前机器上的一些信息,如:CPU、内存、带宽等。

    工具组件:

    Interfaces

    1. 快速接入第三方计费、第三方账号、第三方数据
    2. 快速与运营系统耦合

    多台机器下可以共同一个Interfaces。

    Logger

    日志服务器。收集和备份各个组件的运行日志。

    组件相关路径

    脚本:kbengineassetsscripts

    源码:kbenginekbesrcserver

    参考:

    cbe引擎概览

     

  • 相关阅读:
    浅谈Chrome V8引擎中的垃圾回收机制
    selenium反爬机制
    03 HTTP协议与HTTPS协议
    HTTP缓存机制和原理
    python 自动发送邮件
    02 Anaconda的介绍,安装记以及使用
    01 关于jupyter的环境安装
    SQLAlchemy
    django-debug-toolbar
    flask 第十篇 after_request before_request
  • 原文地址:https://www.cnblogs.com/losophy/p/9416954.html
Copyright © 2020-2023  润新知