Skip to content

feat(network): Stage-5a+5b MongoEndpointRegistry/Watcher + 双视图路由表 + 地址自报 #485

Description

@AlianBlank

背景

C143 umbrella 的 Stage-5a+5b 落地。服务注册中心 + Watcher(DynamicPhase-0/1 发现层)。Mongo 运行时依赖在此 issue 引入。

设计源:gfx-doc/dev/online-platform/process-topology-isomorphism-design-2026-09-21.md § D11-D18。
Change 文件:gfx-doc/dev/startup/changes/C143d-process-topology-stage5ab-registry-watcher-discovery/change.md

范围

  • EndpointParser 统一 scheme://host:port 解析(域名/容器名/Kubernetes Service 名/IPv4/IPv6 方括号)。
  • MongoEndpointRegistry 写侧(环境变量 AdvertiseHost 一等缺省 + 出口地址探测 fallback + 5s 心跳 upsert + 优雅退出 Stopped)。
  • MongoEndpointWatcher 读侧(5s 轮询 + lastHeartbeat 三周期阈值 + 双视图路由表原子替换 + Instance* 事件 + incarnation 判定)。
  • 控制库 gameframex_control database(接入 MultiDbRegistry,C143a 落地)。
  • RoleRouter case 2/3 真实实现(消费双视图路由表)。

任务

  • EndpointParser 实现(域名/IPv4/IPv6 方括号/Kubernetes Service 名支持;端口/scheme 缺失抛 EndpointFormatException
  • ParsedEndpoint / InstanceDescriptor / InstanceStatus 数据模型
  • MongoEndpointRegistry 写侧
  • MongoEndpointWatcher 读侧
  • 控制库 gameframex_control 接入 MultiDbRegistry
  • RoleRouter case 2/3 真实实现
  • 地址格式 CI 用例
  • Mongo 集成测试(Mongo2Go / testcontainers-mongodb)
  • heartbeat 失败缓存 + 连接恢复批量重发
  • dotnet test 全绿 + CI gate 绿

验收

  • AC-4 动态扩缩:无状态 Role 实例增减 ≤10s 全网感知;缩容走 Draining→Stopped 优雅语义。
  • AC-4a 地址格式统一:endpoint 一律 scheme://host:port,所有形态支持。
  • D15 路由表重建:双视图原子替换;事件广播正确;incarnation 判定准确。
  • D17 上下线感知四通道:Mongo 心跳写侧 + SessionManager(→ C143e)+ 控制库 player_route(→ C143e)+ 进程退出信号(→ 本 issue 落地 Stopped)。

依赖

  • 依赖:C143a(MultiDbRegistry 控制库支持)+ C143c(RoleRouter 占位 case 2/3)
  • 阻塞:C143e

标签约定

P1 project:gameframex.server.source blocked-by-dependency

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions