bigworld源码分析(4)——BaseAppMgr分析

  BaseAppMgr是用来管理BaseApp的,在整个bigworld中只有一个。本篇就BaseAppMgr的一些核心功能进行分析:

  (1) BaseAppMgr是如何通知BaseApp创建Entity的

  (2) BaseAppMgr如何针对多个BaseApp做负载的

  (3) BaseAppMgr如何给BaseApp做backup的

 

  1. BaseAppMgr通知BaseApp创建Entity的

  baseAppMgr在收到dbMgrcreateEntity命令时,通过其消息接口将消息发送给最合适的BaseApp,流程如下图:

  

  整个流程非常简单,主要就是选取一个最好的(best)baseApp,然后消息通知它就可以了。

 

  2. BaseAppMgr选取best baseApp

  那么baseAppMgr是如何选举出bestBaseApp的呢?代码也很简单,如下:

  

/**
 *    This method finds the least loaded BaseApp.
 *
 *    @return The least loaded BaseApp. If none exists, NULL is returned.
 */
BaseApp * BaseAppMgr::findBestBaseApp() const
{
    const BaseApp * pBest = NULL;

    float lowestLoad = 99999.f;
    BaseAppMgr::BaseApps::const_iterator iter = baseApps_.begin();

    while (iter != baseApps_.end())
    {
        float currLoad = iter->second->load();
     // 通过负载值比较,找出最小的一个
if (currLoad < lowestLoad) { lowestLoad = currLoad; pBest = iter->second.get(); } iter++; } return const_cast< BaseApp * >( pBest ); }

  从代码中可以看出,主要就是针对所有存在的baseApp,然后选择出load最小的一个。如果不存在的话,返回NULL。

 

  3. BaseAppMgr给BaseApp做backup

  

转载于:https://www.cnblogs.com/chobits/p/5085865.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值