计算与网络
Yaoploy
应用副本调度与就绪入口发布
Yaoploy 把完整应用声明落实到当前受管节点:分配副本、准备镜像、启动前台进程,并在应用就绪后更新公开入口。它分别报告进程状态与入口状态,让操作者能够区分“已经启动”“可以接收工作”和“入口已经登记”。
将应用镜像部署为服务 维护者声明镜像、副本目标与服务名称。节点接收完整分配计划,应用初始化完成后通知就绪,再把实际监听端点同步到入口。
用完整声明描述应用的期望
一份应用声明包含名称、镜像和目标副本数,还可以选择私有 TCP 监听或公共 HTTP 服务。每次设置提交完整内容,省略旧字段就是移除相应选择;把副本设为零则保留声明并表达停止意图。
控制端持久保存完整声明和不可变只读镜像。节点代理接收完整分配计划,在一致的运行环境中准备镜像并启动进程。公开 HTTP 应用还要经过两次确认:应用先通知自己已经就绪,Server 再核对当前计划、镜像与会话,才将合格端点写入 Yaogress。
应用接入从一个清楚的运行入口开始
应用交付完整镜像,并以 /app/run 作为前台入口。程序从 /app 工作目录运行,不能依赖交互式 shell、隐式环境变量或另一个守护进程替它维持生命。业务配置与所需材料应明确随运行环境提供。
接收网络请求的应用复用代理交付的监听 socket,并在依赖、路由或数据初始化真正完成后发送就绪通知。没有监听需求的 Worker 则以进程运行承担任务,不应为了进入网关而制造无意义的 HTTP 接口。
交付可运行内容
把入口、依赖与配置关系准备完整,明确进程如何正常结束以及退出前需要完成哪些业务清理。
声明副本与入口
提交完整应用声明,选择 Worker、私有 TCP 或公共 HTTP 所需的实际能力。
接收工作前报告就绪
使用已继承的监听对象,在当前进程完成初始化后发送一次有效通知。公共入口由控制端继续核对并同步。
副本在当前受管范围内收敛
节点身份来自控制连接实际使用的 IPv4。注册后还需订阅分配计划,持续接收后续安排,才成为当前受管成员;心跳、订阅和当前会话共同维持该关系。同一地址重新进入时保持节点身份,但用新会话替代旧会话。
调度保留合适的现有分配、移除超额部分,再向可用节点补足缺口,每个受管节点最多运行一个同名应用实例。失联成员退出后可以立即安排替代,旧节点上的进程可能仍然执行,因此副本目标不构成全局执行互斥。
| 形态 | 启动与就绪 | 入口行为 |
|---|---|---|
| 任务型应用(Worker) | 前台子进程存活后视为就绪 | 不分配监听入口。 |
| 私有 TCP | 接收节点交来的网络监听对象,再发出就绪信号 | 协议由应用选择。 |
| 公共 HTTP | 使用同样的监听与就绪过程 | 把合格端点同步为一份完整服务记录。 |
让应用确认自己可以接收工作
节点代理取得完整镜像并核对内容,挂载只读应用目录后启动前台程序。配置通过明确目录传入,材料相对应用工作目录读取,输出保留在控制台。应用使用共同的节点运行环境,彼此是共享 root 管理员权限的互信进程。
监听应用直接接收已经绑定端口的网络监听对象(socket),无需先探测空闲端口再重新绑定。它完成初始化后,通过独立管道发送一次就绪通知并关闭管道。只有当前活子进程的完整通知才有效,旧进程迟到的消息不能重新发布端点。
准备
接收并核验镜像,准备挂载与应用输入。
启动
绑定实际监听端口,将对应网络对象交给前台子进程。
就绪
应用完成初始化,发送完整的一次性通知。
监督
退出或失败先撤回就绪,清理完成后按当前分配重试。
执行状态与入口状态各自清楚
每个公共应用在 Yaogress 网关中对应一条稳定服务记录,统一保存域名规则与当前合格后端。端点必须匹配当前应用、镜像、节点会话和已经采用的计划。没有就绪后端时,期望入口就是移除该服务。
服务登记发生冲突时,不会只发布可用的部分域名或部分后端。执行状态与网关同步状态分别展示:应用进程可以就绪而入口仍待处理;登记完全相等也还不能证明一次真实 HTTP 请求已经成功。
| 观察 | 准确含义 | 范围 |
|---|---|---|
| 已分配(Assigned) | 当前期望分配的数量 | 当前受管成员 |
| 运行 / 就绪 | 观察到活进程/符合计划的就绪实例 | 当前有效会话 |
| 网关已同步 | 完整服务登记与当前期望相等 | 注册配置,非请求成功率 |
发布后,按同一应用逐层定位问题
调查一次发布时,先核对持久声明中的镜像与副本目标,再查看当前节点会话和已经采用的分配计划,最后对应到活子进程与入口登记。相同应用名称并不足以串起这些事实;旧会话、旧镜像或旧计划的就绪消息都不能证明当前发布完成。
若进程已就绪但入口未同步,应检查完整服务登记的冲突与同步结果;若登记已经一致,则用实际 HTTP 请求核对目的端点和应用响应。把这两段工作分开,可以避免为修复一个入口冲突而无依据地重启应用。
准入条件:当前计划下的活进程已就绪
应用、镜像、节点会话与已采用计划均匹配,才允许该端点进入当前公共服务的后端集合。
不成立的保证:副本数等于全网同时执行数
失联节点退出当前受管范围后,原进程仍可能存活。需要排他效果的业务应自行维护授权或去重。
继续核对:入口记录与期望相等
这说明登记同步结果,实际连接、请求处理和业务输出仍需相应观察。
在重连和替换时保持清楚的责任
子进程退出,包括正常退出,都会撤回就绪并进入受控重试。清理失败时仍保留原工作,阻止同一应用的冲突启动。控制连接丢失并不能证明远端进程已停;业务授权、重复抑制、独占写入和外部持久数据由应用负责。
设计中的验证从两个相同节点环境出发,检查实际监听端口接收请求、就绪端点传播、子进程重启、失联重入与控制端重启。声明与镜像应可恢复,成员与分配则从新会话重建;这些仍需对应实验记录支持。