标签:
本文原文QQ空间链接:http://user.qzone.qq.com/29185807/blog/1462853926
本文原文csdn博文链接: http://blog.csdn.net/screscent/article/details/51362116
上一篇文章中,分析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存储。
文中如果有哪里讲解的不对的地方,还请见谅,望指正。
龚浩华
QQ 月牙寂 29185807
2016年5月10日
(版权声明:本文为作者原创,如需转载请通知本人,并标明出处和作者。擅自转载的,保留追究其侵权的权利。)
【原创】swarm源码分析(2)---manage流程与store
标签:
原文地址:http://blog.csdn.net/screscent/article/details/51362116