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

相关文章

来自专栏沈唁志

Chrome代码格式化高亮扩展推荐-JavaScript and CSS Code Beautifier

1734
来自专栏编程微刊

扩展的方法:es6 安装模块builder模块化打包工具:webpack

1294
来自专栏www.96php.cn

WeiPHP插件模板中快速引入公共模板文件

WeiPHP插件模板中快速引入公共模板文件,weiphp建立于onethink之上,简单修改代码,无需填写绝对路径实现轻松引入模板。记录一下,分享给需要的人。 ...

2253
来自专栏macOS 开发学习

Mac开发基础练习:制作一个状态栏(NSStatusBar)上的App(二)

1.1 选中ViewController.m文件,添加鼠标左键点击事件监听,实现代码如下图:

603
来自专栏向治洪

微信小程序开发入门篇

本文档将带你一步步创建完成一个微信小程序,并可以在手机上体验该小程序的实际效果。 开发准备工作 获取微信小程序的 AppID 登录 https://mp.wei...

2656
来自专栏彭湖湾的编程世界

【webpack】流行的前端模块化工具webpack初探

有一天我突然意识到一个问题,在使用react框架搭建应用时,我使用到了sass/less,JSX模版以及ES6的语法在编辑器下进行开发,使用这些写法是可以提高开...

874
来自专栏wblearn

程序员的你是否熟练掌握Chrome开发者工具?

回归正题,本文主要是介绍一下Chrome developer tool(开发者工具)的使用,以方便我们的日常开发与调试。其实在没用Chrome开发之前就时不时的...

944
来自专栏xdecode

内嵌tomcat启动速度慢

项目上最近要把内置的jetty换成tomcat, 来更好的支持servlet 3.0 本来以为换个容器, 几十行代码就好了. 实际上换了tomcat后, 一开始...

2638
来自专栏技术博客

ExtJs十一(ExtJs Mvc图片管理之一)

图片管理要在两个地方使用:一是标签页内的图片管理,一是文章内容编辑时嵌套到插入图片的窗口内。因而,将图片管理做成一个扩展比较方便。当然,做成MVC模式也行,不争...

813
来自专栏SAP最佳业务实践

SAP最佳业务实践:ETO–报价处理(232)-17比较项目版本和实际数据

image.png CN41比较项目版本和实际数据 项目版本是项目某个特定时刻的快照,可以作为一个文档。另外它还可以与实际数据进行比较。这一步,项目版本数据与项...

3388

扫描关注云+社区