kubeedge系列之Beehive(一)

#介绍

Beehive是kubeedge用于各模块通信的框架,基于go channel实现,并且支持模块组通信。

#注册流程(kubeedge云端模块举例)

 kubeedge系列之Beehive(一)_第1张图片

首先执行core.Run()之前,会调用各个模块的init函数进行注册,比如controller模块的注册

kubeedge系列之Beehive(一)_第2张图片

通过查看core.Register函数可知,模块会被记录到modules这个map

kubeedge系列之Beehive(一)_第3张图片

当模块注册完毕后,我们再来看core.Run函数,内容很简单,只包含了模块启动和停止的两个函数调用,这里我们主要关注模块的启动。启动也很简单,首先是获取(创建)上下文,上下文包含模块和消息两个接口的实现,都是基于go channel的实现,然后是遍历注册模块的map变量 modules,将模块添加到上下文中,然后调用模块的Start函数

kubeedge系列之Beehive(一)_第4张图片

kubeedge系列之Beehive(一)_第5张图片

kubeedge系列之Beehive(一)_第6张图片

先将模块添加到上下文的channels变量,每个模块都会绑定一个module.Message类型的channel

kubeedge系列之Beehive(一)_第7张图片

再将模块添加到上下文的typeChannels变量

kubeedge系列之Beehive(一)_第8张图片

最后以云端controller模块的Start函数为例

kubeedge系列之Beehive(一)_第9张图片

 

你可能感兴趣的:(kubeedge系列之Beehive(一))