GameServer启动
(role, misc, mail, offline)
从共享内存中加载数据到m_mBlob中如果共享内存没有则从DB加载主要是修改了同步共享内存,共享内存同步数据库
{//role,misc getRoleByUid() 内存 map<uint32_t, list<>::iterator> m_map;//管理内存cache list<pair<uint32_t, Role*>> m_list;blob
mfw::CMemKV m_mBlob; 存储:zlib压缩sdp存储,//管理共享内存共享内存
getRoleByUid: 访问内存,如果内存没有,从blob加载出来并放到内存中RoleManager::loop(50ms)
{ 1.Role::loop 2s bChanged->serialieze()->setBlobByUid() m_mBlob.set --写入到m_mBlob中,写了共享内存2.loop删除的时候如果 bChanged->serialieze()->setBlobByUid()
定时删除不活跃,和根据配置的最小和最大数量删除 }{
BlobRoleManager::loop BlobMiscManager::loop 将变化的blob放入入库的线程队列中 SyncDbThread map<string, SyncDataTypePtr> m_mQueueItem; mfw::CThreadQueue<SyncDataTypePtr> m_dataQueue; }SyncDbThread
{ syncThreadEntry入库线程 从队列m_dataQueue,m_mQueueItem pop出来入库 executeSave 执行入库操作 执行完成之后放入完成队列mfw::CThreadQueue<SyncDataTypePtr> m_finishQueue }loop从完成队列m_finishQueue取出来。。
}BlobMailManager::getInstance()->startThead//mail入库线程
}{//offline
BlobOfflineManager::getInstance()->startThead//offline入库线程}数据库GameServer关闭