服务注册与发现
中心服务同时承担着服务注册中心的角色,边缘 agent 启动后,会向中心服务发起服务注册请求,将边缘信息注册到注册中心,以便中心调度任务时可以通过服务发现的方式使用当前在线的所有属于某项目的边缘 agent
TIP
gophercron 使用 watermelon 实现服务注册与发现的自定义,实现代码见 /pkg/infra
Region
region 的概念主要用于不同网络环境中服务发现的隔离,相同 region 间的服务可以互相发现,既:想要通过 api/界面人工执行任务,就必须确保边缘 agent 同 region 下至少有一个中心服务
中心服务间是通过服务发现+proxy 的能力,实现跨网络环境通信,进而实现任意中心与任意边缘的通信。
V2.4.2 版本起,不在需要 proxy,center 与 agent 通过 agent 主动注册时建立的 gRPC Stream 实现双向通信
应用场景
- agent 启动时,优先完成服务注册,注册后,中心服务通过 agent 的注册信息(配置的 project 信息),下发需要被该 agent 执行的任务列表,由 agent 在本地实现定时执行
- 用户通过界面/接口创建或保存服务时,中心服务会把该动作通过服务发现广播到所有其他中心服务中,各中心服务通过接收到的 project、task 信息,寻找注册在自身的 agent,若存在,则通过已建立的长连接通道(gRPC stream)将更新后的任务下发至边缘 agent,进而边缘 agent 更新本地的任务列表
- 用户通过界面执行
立即执行
功能时,中心服务收到请求后会通过服务发现寻找合适的边缘 agent,并通过 gRPC 请求,调用边缘 agent 的任务执行方法,实现立即执行功能 - 界面中每个项目下的在线节点列表,通过服务发现能力实现展示边缘 agent 的实时在线情况