接口 BeaconScheduling
public interface BeaconScheduling
本机调度 / 健康门面(FR-148):业务插件取调度候选与健康事实的唯一入口。
业务插件禁止直连 Beacon HTTP(直连不作为契约、随时可变);HTTP / JSON 实现只存在于 agent 适配器 ([ADR-0005] 延续),本接口不暴露任何传输细节,对业务插件只读——无改配置 / 改 zone 旁路。
降级语义(fail-static):控制面不可用时——acquireCandidate(java.lang.String) 走本地快照决策照常返回;
candidatesInZone(java.lang.String) / healthOf(java.lang.String) 继续供给最后快照(含 agent 重启后落盘恢复);一切方法
不抛因控制面不可达导致的异常、不阻塞玩家进服链路;控制面恢复后自动切回在线决策并补报降级期决策。
-
方法概要
修饰符和类型方法说明acquireCandidate(String zone) 在指定小区内取一台可调度候选。acquireCandidate(String zone, String purpose) 在指定小区内取一台可调度候选,并携带业务用途说明。candidatesInZone(String zone) 列出指定小区当前候选快照(本地缓存,O(1) 读,可在主线程调用)。当前数据来源状态与快照年龄。查询某台服务器的健康视图(本地候选缓存快照)。查询本服自身健康视图(随每次指标上报响应刷新,约 5s 新鲜度)。
-
方法详细资料
-
acquireCandidate
在指定小区内取一台可调度候选。异步返回(内部走独立线程,绝不阻塞调用线程与 MC 主线程);控制面不可用时自动降级为本地快照决策, future 仍正常完成(fail-static,不因控制面不可达异常完成)。等价于
acquireCandidate(zone, null)。- 参数:
zone- 目标小区名(namespace 内唯一)- 返回:
- 决策结果 future;
ScheduleResult.chosen()为 null 表示本次未取到候选
-
acquireCandidate
在指定小区内取一台可调度候选,并携带业务用途说明。- 参数:
zone- 目标小区名purpose- 业务用途说明(可空,如lobby-transfer),随决策记录入库供排查- 返回:
- 决策结果 future
-
candidatesInZone
列出指定小区当前候选快照(本地缓存,O(1) 读,可在主线程调用)。非实时,最长滞后一个刷新周期;缓存未覆盖该小区时返回空列表(非 null)。
-
healthOf
查询某台服务器的健康视图(本地候选缓存快照)。- 返回:
- 缓存未覆盖该服时返回 null
-
selfHealth
HealthView selfHealth()查询本服自身健康视图(随每次指标上报响应刷新,约 5s 新鲜度)。- 返回:
- 从未上报成功时返回 null
-
dataSource
DataSourceState dataSource()当前数据来源状态与快照年龄。
-