sequioadb源碼分析

編譯:

       建議:編譯所須要的工具,儘可能提交所需版本的源碼,好讓無網狀態下能編譯數組

 

 

源碼:

pmdOptionsCB   數據結構

參數解析器app

_pmdControlleride

       一個程序有多種角色函數

                                    wKiom1TYH1jBnJyNAAOyd2xzHx0408.jpg

 

_pmdStartup工具

       爲何啓動的時候要對文件進行鎖定?ui

_pmdSystemInitspa

       包含兩個部分:線程

       1、_pmdStartuprest

              對文件ossOpen()   ossLockFile()   ossSeekAndRead()   ossSeekAndWrite()   ossFsync()

       2、_optQgmStrategyTable

              optQgmStrategyBase[][]

              _nameToStrategyMap

krcb->init()

一、初始化線程靜態變量pmdEDUCB

二、初始化role的全部control block數組_arrayCBs,並激活

三、記錄時間

_pmdPostInit()

       1、只在standlone模式下起做用

接着等待一分鐘,讓各個模塊啓動成功

pmdEDUMgr:啓動EDU_TYPE_PIPESLISTENER類型的engine dispatchable unit

一、eduMgr->startEDU

二、eduMgr->regSystemEDU

最後進入循環等待

 

 

EDU<enginedispatchable unit>

由pmdEDUMgr統一管理

全部的EDU類型:EDU_TYPES

每個類型都對應着一個入口,獲取函數:

       startEDU()    --卻由CB去調用執行

createNewEDU()

                     boost::thread agentThread (pmdEDUEntryPointWrapper, type, cb, arg ) ;    --關聯cb和入口函數,一個cb綁定一個入口函數

       pmdEDUEntryPointWrapper()

              pmdEDUEntryPoint()

getEntryFuncByType()   獲取入口函數entryFunc<不斷等待cb->waitEvent(event,OSS_ONE_SEC),不斷處理entryFunc(cb, event._Data)>

 

 

各個節點包含的控制模塊:control  block 每一個控制模塊應該是一個線程或進程

全部的cb類型:SDB_CB_TYPE

根據類型能夠獲取各個cb:

基類IcontrolBlock*版

getCBByType()

       void*

getOrgPointByType()封裝在各個類型的函數裏

Coord(協調節點)

       dpsTransCB      標示做用  相似 ID

       CoordCB           ?

       spdFMPMgr     複製組件

 

Catalog(編目節點)

       SDB_DPSCB       

       dpsTransCB

       clsCB

       sdbCatalogueCB

       SDB_BPSCB

       SDB_AUTHCB

 

Data(數據節點)

       SDB_DPSCB

       dpsTransCB

       clsCB

       SDB_BPSCB

 

共同模塊:

       SDB_DMSCB             

       SDB_RTNCB       

       SQL_CB        

       aggrBuilder       

       pmdController    用於初始化    process manager daemon

 

OM模式:

       SDB_DPSCB       

       dpsTransCB       

            SDB_BPSCB

            SDB_AUTHCB

            omManager

 

單機模式:

            略。

 

 

 

 

重要的類:不少基類都放在sdbInterface.hpp

            _IcontrolBlock 控制模塊基類        純虛函數接口子類必須實現

            _IEventHander

 

數據包:Mag.h

            MSG_TYPE     32位,RES = REQ | 0x80000000

            MsgRouteID  64

           

基本的數據結構:

            BSONObj

            BSONElement

            BSONObjBuilder

            _qgmBsonPair

 

 

 

 

重要CB的分析:

aggrBuilder

            std::map< std::string,aggrParser* >

pmdController

            按角色註冊各自Control Block到KRCB

            會話信息

            Init()

                        _pTcpListener   _pHttpListener處於listen狀態<待命狀態>

            Active()

                        _restAdptor.init

                        startEDU()

                                    EDU_TYPE_SYNCCLOCK.

                                    EDU_TYPE_TCPLISTENER

                                    EDU_TYPE_RESTLISTENER

                                   

 

 

 

 

 

 

 

 

 未完待續~

相關文章
相關標籤/搜索