目录

容灾处理

容灾备份、恢复方案的重要性不言而喻,用户在服务端的核心业务越来越依赖于系统的可靠运行,同时系统中的关键业务数据已经成为用户最为重要的资产。因此,是否对关键业务数据进行备份保护,甚至提供自动的恢复处理是衡量一款引擎是否可靠的关键标准之一。

在我们CBE引擎设计之初,已把容灾处理作为核心。随着版本的迭代,引擎可以对数据进行自动备份、自动恢复,甚至对实体、实体状态、Cellapp上的Space等都可以进行恢复。

本文内容介绍:

Machine进程的作用:

我们在app介绍的一文已经提到,Machine进程是用于监视服务器进程的,每个服务器机器上都有一个Machine,它可以:

  • 启动或停止服务器进程
  • 通知服务器群组各个进程的存活状态
  • 监视机器的使用状态:CPU/内存/带宽等

当某个app出现问题(如crash、断开连接等)时,会通知服务器群组。有了它可以让引擎第一时间知道问题,并进入容灾处理状态。


Baseapp的容灾处理:

在Baseapp中提供了自动存档、自动备份、自动恢复的功能。

1. 自动存档:

间隔一个周期,自动保存数据进数据库,使实体上的属性都被存档。

当然,你也可以手动进行存档,通过调用API-Entity.writeToDB

该周期值,可以在{项目资产库}/res/server/kbengine.xml中,找到baseapp的标签块,修改archivePeriod中的值(如果没有,自行增加)。

<root>
    ...
    <baseapp>
        <!-- 自动存档的时间周期(秒)
            (Automatic archiving time period(secs)) 
        -->
        <archivePeriod> 300 </archivePeriod> 	
    </baseapp>
    ...
</root>

这个值是一个Float型,单位为秒,默认为300秒。


2. 自动备份:

间隔一个周期,自动把Entity备份到其他Baseapps上去。见下图:

1

一个实体会每隔一个周期,自动备份到其他Baseapps上,这个策略是引擎内部自动进行的。你可以修改自动备份的时间间隔(backupPeriod)以及是否备份未定义的属性(backUpUndefinedProperties)。

<root>
    ...
    <baseapp>
        <!-- 自动备份的时间(秒)
            (Automatic backup time period(secs)) 
        -->
        <backupPeriod> 300 </backupPeriod>								

        <!-- 是否备份未定义的属性
            (Whether backup undefined property) 
        -->
        <backUpUndefinedProperties> 0 </backUpUndefinedProperties>
    </baseapp>
    ...
</root>

backupPeriod中的值是Float型,单位秒,默认为300。

backUpUndefinedProperties中的值是Bool型(0或1),默认为0表示不备份未定义的属性。


3. 自动恢复(尚未实现):

一旦某Baseapp crash后就变得不可用:

1

与Crash的Baseapp连接的客户端会被断开连接,当重新连接后,它们将继续与其原来的Proxy进行连接(如果没有timeout的话)。

注意:该功能暂且未实现。


Cellapp的容灾处理:

在Cellapp中提供了自动备份、自动恢复的功能。

当某一个Cellapp出现问题(如crash、断开连接等)时,引擎会根据负载自动寻找一个健康的Cellapp,并把crash的Cellapp上所有Space和当前拥有base的Entity进行恢复。而每个被恢复的Entity会调用其回调函数onRestore(),使脚本层收到通知,并可自行进行应对处理。开发者要做的,就是正确处理onRestore(),使自己的业务逻辑不受影响。


Copyright © 2018 Yolo Technologies. Publication: 2.0-025. Built: 2018-12-07.