首页 > 安全资讯 >

【原创】swarm源码分析(2)---manage流程与store

16-08-16

【原创】swarm源码分析(2)---manage流程与store。

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存储。

文中如果有哪里讲解的不对的地方,还请见谅,望指正。

相关文章
最新文章
热点推荐