1、swarm manage主體構建流程
先看看manage command是如何構建的
**在swarm\main.go
這裡的action是manage函式
我們看看這個函式
**在swarm\manage.go
上面主要是tls的配置
上面構建了乙個store
上面構建了乙個cluster
上面構建了乙個strategy
上面構建了乙個filter
上面構建了乙個discovery
上面構建了乙個scheduler
最後開啟了api服務
整體的構建流程很清晰,模組化也很清晰。
下面我們乙個乙個模組來進行分析
2、store
**在swarm\state\store.go
我們先看結構體
這裡的注釋說的很清楚,就是要乙個簡單的key《--》requestedstate map儲存
我們看看requestedstate
**在swarm\state\state.go
我們再看看containerconfig
**在github.com\samalba\dockerclient\types.go
這裡很清晰了,store儲存的就是容器資訊。
下面看看store都提供了那些操作
newstore
初始化目錄路徑和map
initialize
呼叫了restore
restore
遍歷目錄下的所有檔案,並利用json進行載入
load
利用json來進行解析檔案
get從map中查詢對應的資訊
add呼叫了set
set將資訊寫入檔案,同時把資訊儲存到map中
remove
刪除檔案,同時刪除map中的資訊
replace
替換小結
stroe還是很簡單的,主要維護乙個目錄檔案和乙個map儲存。
文中如果有**講解的不對的地方,還請見諒,望指正。
iptables原始碼分析(2)
1.1 表的查詢 再回到iptc init 函式上來,它根據表名,從核心獲取對應的表的相關資訊,handle是乙個iptc handle t型別的指標,在libiptc.c中,有如下定義 transparent handle type.typedef struct iptc handle iptc ...
Leveldb原始碼分析 2
輕鬆一刻,前面約定中講過leveldb使用了很多varint型編碼,典型的如後面將涉及到的各種key。其中的編碼 解碼函式分為varint和fixedint兩種。int32和int64操作都是類似的。首先是fixedint編碼,直接上 很簡單明瞭。void encodefixed32 char bu...
jquery原始碼分析2
jquery原始碼分析系列2 results is for internal usage only 只是為了內部使用 makearray function arr,results else return ret 很多地方都使用了這個函式 判斷是否是陣列或者是類陣列 返回值是boolean funct...