「连载」边缘计算(三十)03-12:边缘部分源码(源码分析篇)

(接上篇)

metamanager业务逻辑剖析

metamanager的模块启动函数具体如下所示。

KubeEdge/edge/pkg/metamanager/module.go

func (m *metaManager) Start(c *context.Context) {

m.context = c

InitMetaManagerConfig()

go func() {

period := getSyncInterval()

timer := time.NewTimer(period)

for {

select {

case <-timer.C:

timer.Reset(period)

msg := model.NewMessage("").BuildRouter(MetaManagerModuleName, GroupResource, model.ResourceTypepodStatus, OperationMetaSync)

m.context.Send(MetaManagerModuleName, *msg)

}

}

}()

m.mainLoop()

}

启动函数Start()做了如下4件事。

1)接收并保存模块启动时传入的\*context.Context实例;

2)初始化metamanager配置;

3)启动一个goroutine同步心跳信息;

4)启动一个循环处理各种事件。

接下来,具体展开分析第2、第3、第4件事。

(1)初始化metamanager配置

InitMetaManagerConfig()定义具体如下所示。

KubeEdge/edge/pkg/metamanager/msg_processor.go

// InitMetaManagerConfig init meta config

func InitMetaManagerConfig() {

var err error

groupName, err := config.CONFIG.GetValue("metamanager.context-send-group").ToString()

...

edgeSite, err := config.CONFIG.GetValue("metamanager.edgesite").ToBool()

...

moduleName, err := config.CONFIG.GetValue("metamanager.context-send-module").ToString()

...

}

在初始化metamanager配置时,从配置文件中获取metamanager.context-send-group、metamanager.edgesitemetamanager.context-send-module,并根据获取的值对相关变量进行设置。

(2)启动一个goroutine同步心跳信息

其具体实现如下所示。

KubeEdge/edge/pkg/metamanager/module.go

go func() {

period := getSyncInterval()

timer := time.NewTimer(period)

for {

select {

case <-timer.C:

timer.Reset(period)

msg := model.NewMessage("").BuildRouter(MetaManagerModuleName, GroupResource, model.ResourceTypepodStatus, OperationMetaSync)

m.context.Send(MetaManagerModuleName, *msg)

}

}

}

在同步心跳信息的goroutine中,做了如下两件事:

1)获取通信心跳的时间间隔,具体如下所示。

period := getSyncInterval()

2)创建定时器,并定时发送心跳信息,具体如下所示。

timer := time.NewTimer(period)

for {...}

未完待续……   

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值