metamanager源码分析
metamanager
Start
定期发送MetaSync操作消息,以同步在边缘节点上运行的Pod的状态。同步间隔可在conf/edge.yaml中配置
runMetaManager
runMetaManager从beehive中读取metamanager的消息,交给process处理
process
判断动作,然后执行相对应的操作
insert
insert获取了消息的内容
使用parseResource,根据resource返回资源类型,资源ID,
将数据存入数据库,
判断资源类型是service和endpoint的消息发送给edgemesh,其他的发送给Edged
最后将所有的insert消息发送给edgehub
update
当资源类型为 servicelist endpointslist podlist时需要更新数据库,发送消息给edgemesh,发送消息到edgehub
当资源类型为其他类型时首先判断资源是否变化(实际上只判断了pod的状态),代码如下
更新数据库
当来源是edged时消息发送给cloud和edged
当消息来源是edgecontroller时,判断资源类型是否为service或endpoint类型。如果是发送消息给edgemesh,不是则发送消息给edged
当来源是funcmgr时,发送消息给edgefunction
当来源是edgefunction时消息发送给edgehub
delete
删除数据库内容
转发消息给edged
返回响应到edgehub
query
判断资源类型是否依赖远端查询,切远端为已连接状态且连接到云端,
当资源在本地查询失败,或者资源类型为node或类型为volume attachment
则向云端发送查询请求,将返回信息存储,并根据类型(service,endpoints)发送消息给edgemesh还是edged
其他资源直接由metamanager返回,并通知edged同步状态
当资源不需要远端查询,则在本地查询进行返回
response
当来源是云端,判断类型是否为service和endpoint,则发送消息给edgemesh,否则发给edged
不是云端则发给云端
node/connection
设置云端连接状态
meta-internal-sync
用于同步pod状态
当pod在db中无记录则跳过
当有pod状态记录无pod记录时,删除pod状态记录
将所有的pod状态记录发送到云端
action
本地保存后将消息发送给,edgefunction
action_result
本地保存函数执行结果,返回给云端
createvolume、deletevolume、controllerpublishvolume、controllerunpublishvolume
发消息给edged,返回结果传给云端
Last updated