南昌专业制作网站,长宁区网站制作设计,wordpress栏目指定二级域名,俄乌今天最新军事动态#xff08;接上篇#xff09;
EdgeCore之matamanager
前面对EdgeCore组件的edged、devicetwin、edgehub、eventbus功能模块进行了分析#xff0c;本节对EdgeCore组件的另一个功能模块metamanager进行剖析。metamanager作为EdgeCore中的edged模块与edgehub模块进行交互的桥…接上篇
EdgeCore之matamanager
前面对EdgeCore组件的edged、devicetwin、edgehub、eventbus功能模块进行了分析本节对EdgeCore组件的另一个功能模块metamanager进行剖析。metamanager作为EdgeCore中的edged模块与edgehub模块进行交互的桥梁除了将edgehub的消息转发给edged还对一些必要的数据通过SQLite进行缓存在某种程度上实现了KubeEdge的offline mode。本节就对metamanager所涉及的SQLite数据库相关逻辑和业务逻辑进行剖析metamanager数据库相关逻辑剖析metamanager业务逻辑剖析。
metamanager数据库相关逻辑剖析
metamanager的模块注册函数具体如下所示。 KubeEdge/edge/pkg/metamanager/module.go //constant metamanager module name const ( MetaManagerModuleName metaManager ) ... // Register register metamanager func Register() { dbm.RegisterModel(MetaManagerModuleName, new(dao.Meta)) core.Register(metaManager{}) }
注册函数Register()做了两件事。
在SQLite中的数据库中初始化metaManager表
2注册已经初始化的metamanager。
下面深入剖析 在SQLite中的数据库中初始化metaManager表相关内容。dbm.RegisterModel()定义具体如下所示。 KubeEdge/edge/pkg/common/dbm/db.go //RegisterModel registers the defined model in the orm if model is enabled func RegisterModel(moduleName string, m interface{}) { if isModuleEnabled(moduleName) { orm.RegisterModel(m) ... } else { ... } }
RegisterModel()函数是对[GitHub.com/astaxie/beego/orm](https://GitHub.com/astaxie/beego/tree/develop/orm)的封装。 回到在SQLite中的数据库中初始化metaManager表下面深入剖析metaManager表的具体定义dao.Meta。dao.Meta定义具体下所示。 KubeEdge/edge/pkg/metamanager/dao/meta.go // Meta metadata object type Meta struct { // ID int64 orm:pk; auto; column(id) Key string orm:column(key); size(256); pk Type string orm:column(type); size(32) Value string orm:column(value); null; type(text) }
metaManager表的具体定义包含Key、Type和Value三个字段具体含义如下。
1 Keymeta的名字
2 Type meta对应的操作类型
3 Value具体的meta值
与Meta Struct的定义在同一文件内还有对metaManager表的一些操作定义如SaveMeta、DeleteMetaByKey、UpdateMeta、InsertOrUpdate、UpdateMetaField、UpdateMetaFields、QueryMeta、QueryAllMeta。
「未完待续……」