原創 swarm原始碼分析(2)

2022-04-07 05:54:09 字數 1034 閱讀 1578

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...