swarm源码分析(2)---manage流程与store

说明:此文章为腾讯云机器自动从本人csdn博客搬迁过来。是本人授权操作。

申明:无本人授权,不可转载本文。如有转载,本人保留追究其法律责任的权利。

龚浩华,QQ 29185807,月牙寂 道长

第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang

上一篇文章中,分析create和join,是创建和加入swarm集群。那么swarm集群是如何工作和管理的。

下面我们就来分析下。

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java成神之路

Struts框架搭建时所遇到的问题

        解决方案:将以下7个jar拷贝到项目工程中_(workspace_项目名_webRoot_WEB-INF_lib下),其他用到的包再慢慢添加: ...

755
来自专栏Linyb极客之路

linux常用基本命令之文件搜索命令

命令:find 语法:find [搜索范围路径] -name 【文件名称】(根据文件名查找) find [搜索范围路径] -size [...

3856
来自专栏别先生

'mysql' 不是内部或外部命令,也不是可运行的程序 或批处理文件。

1、C:\Users\Aiyufei>mysql -h 127.0.0.1 -u root 'mysql' 不是内部或外部命令,也不是可运行的程序或批处理文件。...

1833
来自专栏别先生

mysql输入密码后闪退怎么办?

第一: 首先需要想到的是mysql的服务可能没开,首先打开mysql的服务 ? 第二: 打开Mysql的命令行输入密码即可 ? 第三: 登录成功 ? 第四: 顺...

2289
来自专栏主机笔记

本地ping多服务器延迟批量测试软件Pinginfoview

作为一个服务器玩家,拥有多台服务器是一件很正常的事情,这也方便了做各种测试折腾软件,但是查看起来却比较麻烦,今天就介绍一款本地使用的ping延迟批量检测软件pi...

4837
来自专栏游戏杂谈

Linux的scp命令

linux下的scp命令,用于双台linux服务器之间互拷文件(本机到远程或远程到本机)。

1572
来自专栏决胜机器学习

《Redis设计与实现》读书笔记(二十) ——Redis命令在redis服务器执行过程

《Redis设计与实现》读书笔记(二十) ——Redis命令在redis服务器执行过程 (原创内容,转载请注明来源,谢谢) 序:redis服务器是redis一切...

3424
来自专栏流柯技术学院

修改windows系统文件权限

修改windows系统文件总是提示没有权限,虽然已是administrator也不管用。

1051
来自专栏用户画像

使用Maven管理Jar包

②点击Maven project,在右侧会出现下图的菜单栏,点击刷新,即可pom文件所有的jar包到本地仓库

882
来自专栏圣杰的专栏

VSTS 执行git pull报错问题修复

因此我们在执行git pull之前添加一个Command Line指令去执行git config即可,具体配置如下:

522

扫码关注云+社区