每颗卫星一个独立服务器进程,可部署到 Kubernetes 集群(几百~几千个)。
# 安装依赖
cd satellite-server
julia --project=. -e 'using Pkg; Pkg.instantiate()'
# 本地启动单颗卫星(测试)
SAT_ID=1 julia --project=. bin/server.jl
# 自定义配置
julia --project=. bin/server.jl config/my-satellite.toml每颗卫星 = 一个独立进程
├── 轨道传播(自己的根数 → 自己的位置,零跨星依赖)
├── 本地 ISL 评估(自己的位置 + 邻居位置 → 哪些边可用)
├── 静态拓扑邻居(O(1) 自算,grid_plus/honeycomb/spiral/ring/tshape/mesh)
└── TCP 通信(与协调器:上报位置/ISL/步进完成,接收 tick/邻居位置)
# 构建镜像
docker build -t satellite-server:latest -f docker/Dockerfile .
# 部署集群(66 颗卫星 + 协调器)
kubectl apply -f k8s/satellite-cluster.yaml
# 扩到 1584 颗(Starlink 主壳规模)
kubectl scale statefulset satellite -n leo-sim --replicas=1584三种方式(优先级从高到低):
- 环境变量(K8s envSpec 注入):
SAT_ID,CONSTELLATION_T,COORDINATOR_HOST等 - TOML 配置文件:
config/satellite.toml(K8s ConfigMap 挂载) - 默认值:Iridium 66/6 规模
本项目的 foundation/orbit/link/topology 代码复制自 SatelliteSimJulia,改造为独立可运行(去跨包依赖、单星传播器)。