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 条评论
登录 后参与评论

相关文章

来自专栏移动安全

移动安全-api使用方式介绍

windows 环境请访问 Composer官网 下载安装包安装。unix 环境在命令行中执行以下命令安装。

5677
来自专栏.NET开发那点事

Fisrt Node-Webkit App

1.什么是Node-Webkit 基于node.js和chromium的应用程序实时运行环境,可运行通过HTML(5)、CSS(3)、Javascript来编写...

1945
来自专栏源码之家

如何通过SSH更改Linux系统下文件(或文件夹)的拥有者

1353
来自专栏我的博客

sed简单用法

sed 命令:可以利用scrpipt命令批处理文本文件 sed [-hVn][-e<script>][-f<script>] -n 不显示处理过程 参数 ...

3249
来自专栏Java技术

Jenkins部署Maven多环境项目(dev、beta、prod)的参数设置

http://blog.csdn.net/xlgen157387/article/details/50353317

662
来自专栏Alice

cocos2d-x_下载游戏引擎并创建第一个项目

拖进命令行点击回车键 ,在安装的时候有三个选择路径的,因为我做的是ios开发所有全部就是直接点了回车。

933
来自专栏康怀帅的专栏

Laravel 环境变量

不同环境加载不同的 .env 文件。 开发: development 测试: testing 预上线: staging 正式环境: producti...

3014
来自专栏我的博客

artisan详解一

php artisan 详解 php artisan optimize php artisan optimize –force Since Laravel ...

2696
来自专栏企鹅号快讯

Python模块知识1:模块知识介绍

模块是代码的归类,能定义函数、类和变量,把相关的代码分配到一个模块里,能让你的代码更好用,更易懂、也更简洁。模块在java中叫做类库。 模块的存在方式: 模块可...

1826
来自专栏Pythonista

Linux之文档与目录结构

Linux目录结构的组织形式和Windows有很大的不同。首先Linux没有“盘(C盘、D盘、E盘)”的概念。已经建立文件系统的硬盘分区被挂载到某一个目录下,用...

873

扫码关注云+社区