EdgeHub
image.png
EdgeHub中有两类client,分别是httpclient以及websocket/quic client,前者用于与EdgeCore与CloudCore通信所需证书的申请,后者负责与CloudCore的日常通信(资源下发、状态上传等)
当EdgeHub启动时,其先从CloudCore申请证书(若正确配置本地证书,则直接使用本地证书)
初始化与CloudCore通信的websocket/quic client,成功连接之后将成功连接的信息传给其他组件(MetaGroup、TwinGroup、BusGroup),分别启动三个goroutine不断的进行云到边以及边到云的消息分发(单纯分发,不做任何封装或改变)、健康状态上报。当云边传送消息过程中出现错误时,则边缘端重新init相应的websocket/quic client,与云端重新建立连接。
MetaManager
当metamanager模块启动时,会开启两个goroutine,一个用于定时(默认60s)给自己发送消息通知进行边到云的podstatus数据同步;一个用于edgehub与edged/edgemesh的数据处理。
到达memanager的数据来源于两部分,一是edgehub,此时是云到边的数据,记为①;二是edged,此时是边到云的数据,记为②。
处理的消息类型:
Insert①
Update①②
Delete①
Query
根据云边连接状态以及资源类型的不同,查询的具体方式如下图所示:
image.png
- Response
- NodeConnection(edgehub->其他modules)
- MetaSync(podstatus边到云的同步)
处理的资源类型:
- secret
- configmap
- service
- podlist
- endpoints
- node
- podstatus
- servicelist
- pod
- nodestatus
Note: service/servicelist/endpoints进一步发送给edgemesh供服务发现,其余发给edged进行应用管理