Open 2011shenlin opened 1 year ago
show the Chinese version detail please
当订阅规则增加时,单个运行时worker无法支持,需要添加更多worker同时提供服务。这里有几个关键问题:
当在规则中创建一个Target订阅时,EventBridge会为每个任务创建一个Target Runner,用来描述当前这个Target订阅的运行态信息,详细信息可以参考表 event_target_runner:
但是目前的方式存在几个问题:
为了解决这个问题,我们在DB中,以声明的方式,引入表:event_runner_task 其中cluster_id、worker_id 指名了当前runner_name运行的集群信息和Worker信息:
Cluster 是一个虚拟的概念,用来标注同一类Worker,这类Worker拥有相同的资源配置,镜像版本等。引入Cluster的目的主要包括:
为此,我们需要在DB中,同样以声明的方式,引入一张表 event_cluster:
Worker和Runtime的区别是:Runtime代表软件的运行时,而Worker是Runtime运行时的资源节点。这个关系类似进程和系统之间的关系。理论上,一个Worker可以包含多个Runtime,但是为了简化模型,常常一个Worker只包含一个Runtime进程。 为了方便worker的管理,我们在DB中引入一张表event_worker:
当有新的Node加进来时,只需要注册到event_worker表,配置IP地址;
前提条件:新增的Node和现有集群在同一个网络中;
创建Depolyment, 默认replica为1:
Runtime支持文件、API的方式加载Task配置,对应的我们有几种方式让Worker获取被分配的Runner Task:
方式1:Manager主动将Task 配置分发给Worker
方式2: 通过Manager与Worker的通信
方式1: 如果是Node直接注册的Worker,则由客户自己管理和维护Worker的镜像 方式2: 如果是通过K8S创建的Worker,则由系统负责worker的镜像升级
event_images
发布流程:
如果都满足,则更新当前cluster下的worker到最新镜像。
问题背景 当订阅规则增加时,单个运行时worker无法支持,需要添加更多worker同时提供服务。 下面重点回答弹性资源问题:
总体架构是master-worker,master包括资源消费者(包括调度器),资源管理器;worker是任务管理器,管有资源,上报资源。 数据架构,资源是组件的核心数据,分两条线a线 现有资源,b线 待定资源 a) 4资源请求->5a 分配可用资源-> 6a 请求使用资源-> 7a 提供资源->8a 提交任务 b) 4资源请求->5b 分配待定资源-> 6b 请求新worker-> 7b 启动任务管理器->8b 注册/报告资源 a线是分配现有资源;b线请求新资源,新资源注册后成为现有资源,在a线分配
作业管理器询问所有connector task数量,总和就是资源槽数据量,Worker数量=资源槽数据量/每个Worker资源槽数
两个问题其实是一个问题,弹性资源通过增减Worker实现;参考flink的声明式资源管理,资源使用分为,资源申请,检查资源请求/检查资源声明,资源提供
使用docker的容器
When subscription rule increase, a single runtime worker cannot support it, we need to add more worker to provide services at the same time.Here are several key issues: