U40 Nacos 实验
本目录是 Issue #77 的公开实验入口。它使用官方 Nacos 2.5.5 server 压缩包与 com.alibaba.nacos:nacos-client:2.5.5,JDK 17 编译客户端;本次实测实际运行的 JDK 为 Liberica 21.0.11。服务端限制为 2 个逻辑 CPU、-Xmx384m,客户端 -Xmx192m,仅绑定 127.0.0.1。run.py 要求环境变量 U40_NACOS_ARCHIVE 指向 SHA-256 为 449bba862bd154736edb1cc5cdc118261b5675467e5a3a4822e6767d4d322758 的官方包,U40_MAVEN_REPO 指向本次准备的 Maven 缓存;不自动下载或启动外部服务。
运行:
U40_NACOS_ARCHIVE=/path/to/nacos-server-2.5.5.tar.gz \
U40_MAVEN_REPO=/path/to/u40-maven-cache \
python3 labs/nacos/run.py输出中的五条 U40 ...=PASS 是本次客户端观测:配置 v1、非法值拒绝并保留旧对象、合法值恢复;临时实例注册/注销/重注册;服务停止期间应用快照边界;服务重启后的目录与配置恢复;最后定向清理。证据保存在 evidence/u40-2026-10-30.json。
2.5.5 源码的 gRPC 默认 forPort 会监听所有网卡;实验使用 agent/LoopbackAgent.java 仅将本实验 JVM 的 shaded Netty 服务端绑定改为回环,并使用 macOS sandbox 限制入站、启动后逐项检查监听地址。它改变了监听地址,不改变 Nacos 注册与配置逻辑;需要 macOS 的 sandbox-exec、lsof 和可用端口。默认认证关闭仅供这个回环实验。
这是真实的单机服务和客户端运行,不证明跨主机网络分区、集群多数派、TLS/生产鉴权、容量、跨地域延迟或所有实例同时切换。服务端启动使用临时目录;脚本退出时关闭子进程,不删除用户已有 Maven 缓存。