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

2024-03-08 7125阅读

上篇)

「连载」边缘计算(二十七)03-07:边缘部分源码(源码分析篇) 第1张
()
EdgeCore之eventbus

前面对EdgeCore组件的edged、devicetwin、edgehub功能模块进行了分析,本节对EdgeCore组件的另一个功能模块eventbus进行剖析。eventbus作为KubeEdge的edge部分与MQTT进行交互的门户,因此我们有必要将eventbus相关内容彻底分析清楚,为使用过程中的故障排查和未来的功能扩展与性能优化都会有很大的帮助。eventbus的具体业务逻辑主要集中在启动过程中,本节就侧重分析eventbus启动流程,包括eventbus的struct调用链剖析、eventbus的具体逻辑剖析。

eventbus的struct调用链剖析

「连载」边缘计算(二十七)03-07:边缘部分源码(源码分析篇) 第2张
()

eventbus的模块注册函数具体如下所示。

KubeEdge/edge/pkg/eventbus/event_bus.go

// Register register eventbus

func Register() {

mode, err := config.CONFIG.GetValue("mqtt.mode").ToInt()

if err != nil || mode > externalMqttMode || mode

mode = internalMqttMode

}

edgeEventHubModule := eventbus{mqttMode: mode}

core.Register(&edgeEventHubModule)

}

注册函数中做了两件事。

1)从配置文件中获取mqtt.mode,并对其进行判断,具体如下所示。

mode, err := config.CONFIG.GetValue("mqtt.mode").ToInt()

if err != nil || mode > externalMqttMode || mode

mode = internalMqttMode

}

mqtt.mode的具体定义如下所示。

KubeEdge/edge/pkg/eventbus/event_bus.go

const (

internalMqttMode = IoTa // 0: launch an internal mqtt broker.

bothMqttMode            // 1: launch an internal and external mqtt broker.

externalMqttMode        // 2: launch an external mqtt broker.

...

)

mqtt.mode定义分internalMqttMode、bothMqttMode和externalMqttMode三种。其中,externalMqttMode 启动内部mqtt代理;bothMqttMode 同时启动内部和外部mqtt代理;externalMqttMode 启动外部mqtt代理。

2)实例化eventbus并将其注册,具体如下所示。

edgeEventHubModule := eventbus{mqttMode: mode}

core.Register(&edgeEventHubModule)

Eventbus struct定义如下所示。

KubeEdge/edge/pkg/eventbus/event_bus.go

// eventbus struct

type eventbus struct {

context  *context.Context

mqttMode int

}

eventbus包括context、mqttMode两个属性。context负责与EdgeCore其他模块的通信;mqttMode用来区分eventbus连接mqtt的不同方式。

「未完待续……」 


    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]