说明:此文章为腾讯云机器自动从本人csdn博客搬迁过来。是本人授权操作。
申明:无本人授权,不可转载本文。如有转载,本人保留追究其法律责任的权利。
龚浩华,QQ 29185807,月牙寂 道长
第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang
上一篇文章中,分析create和join,是创建和加入swarm集群。那么swarm集群是如何工作和管理的。
下面我们就来分析下。
先看看manage command是如何构建的
代码在swarm\main.go
这里的action是manage函数
我们看看这个函数
代码在swarm\manage.go
上面主要是tls的配置
上面构建了一个Store
上面构建了一个cluster
上面构建了一个strategy
上面构建了一个filter
上面构建了一个discovery
上面构建了一个scheduler
最后开启了api服务
整体的构建流程很清晰,模块化也很清晰。
下面我们一个一个模块来进行分析
代码在swarm\state\store.go
我们先看结构体
这里的注释说的很清楚,就是要一个简单的key《--》RequestedState map存储
我们看看RequestedState
代码在swarm\state\state.go
我们再看看ContainerConfig
代码在github.com\samalba\dockerclient\types.go
这里很清晰了,store保存的就是容器信息。
下面看看store都提供了那些操作
初始化目录路径和map
调用了restore
遍历目录下的所有文件,并利用json进行加载
load
利用json来进行解析文件
从map中查找对应的信息
调用了set
将信息写入文件,同时把信息保存到map中
删除文件,同时删除map中的信息
替换
stroe还是很简单的,主要维护一个目录文件和一个map存储。
文中如果有哪里讲解的不对的地方,还请见谅,望指正。