跳到主要内容

阶段 C / D 路线图(含 r-server + py-server)

前提(已完成):阶段 A+B — RDS 承载 P0+P1+P2;Dell 上 biof3-r-server + biof3-py-server + R/Python 容器。
目标控制面 API 上 ECSDell = 纯算力(R 池 + Python 池 + 任务执行);RDS + OSS 不变

ECS 上目录(当前 BioF3 vs 历史,勿混)

路径说明
/opt/biof3-tutorial/current-site当前静态站(deploy.sh --site
/opt/biof3-r-server阶段 C:r-server API(C1)
/opt/biof3/opt/halo历史项目,与当前 BioF3 无关 — 勿当部署/改配置目标

1. 现在三台「逻辑服务」都在 Dell

进程端口(典型)角色资源特点
biof3-r-server3001主 API:登录、单细胞云、Copilot、调 RNode 轻~中;Copilot 并发
biof3-py-server3002空间/ Python 任务 API、调 biof3-python 容器Node 轻;算力在 Python 容器(可达 96G)
R 容器DockerSeurat/ggplot 等内存大户
Python 容器Dockercell2location / Tangram 等内存大户

用户访问路径今天:

biof3.com (ECS nginx)
├─ /api/r/* ──frp──► Dell:3001 (r-server)
└─ /api/py/* ──frp──► Dell:3002 (py-server) # 若 nginx 已配

阶段 C/D 必须同时考虑 py-server:不能只迁 r-server,否则空间分析仍绑在 Dell 的 API 入口 上。


2. 目标架构(阶段 D 结束态)

flowchart TB
U[用户] --> ECS

subgraph ECS["阿里云 ECS · 控制面"]
WEB[静态站]
NGX[nginx]
RAPI[biof3-r-server 或合并网关]
PYGW[py 路由 / 或轻量 BFF]
end

subgraph Data["阿里云数据"]
RDS[(RDS)]
OSS[(OSS)]
end

subgraph Dell["Dell · 算力面"]
RPOOL[R Docker]
PYPOOL[Python Docker]
WR[Worker: 执行队列任务<br/>可选与 r/py 进程合并]
end

U --> WEB
NGX --> RAPI
NGX --> PYGW
RAPI -->|内网| RDS
RAPI --> OSS
RAPI -->|内网/专线| Dell
PYGW -->|内网/专线| Dell
Dell --> RDS
Dell --> OSS
组件阶段 D 应在哪
页面、nginxECS
r-server(鉴权、项目、Copilot 网关、入队)ECS
py-server(接收空间任务、鉴权、入队)ECS 推荐(与 r 同 VPC 连 RDS);或短期仍 frp 到 Dell:3002
R / Python 实际执行Dell(或未来阿里云大内存 Worker)
RDS / OSS阿里云

3. 阶段 C 与 D 划分

阶段 C —「API 上云,算力留 Dell」

序号任务说明
C1ECS 与 RDS 同地域/VPC新建或迁入 VPC;API 用 RDS 内网地址(可弃 Dell 公网连 RDS)
C2ECS 部署 biof3-r-serverDATABASE_URLBIOF3_P2_PG=1跑 R 容器
C3nginx 灰度/api/r/ 部分或全部 → 127.0.0.1:3001(ECS),不再 frp 到 Dell
C4Dell r-server 降级停对外 3001 或仅内网监听;Dell 只保留 任务执行 + R 池
C5py-server 策略二选一C5a py API 也上 ECS(推荐,与 r 一致);C5b 暂保留 frp → Dell:3002,仅 r 上 ECS(过渡)
C6服务间鉴权Dell Worker 只接受 ECS 来的 BIOF3_API_TOKEN / 内网 IP
C7验收登录、单细胞任务、Copilot、空间/py 任务 全链路

阶段 D —「Dell 纯 Worker」

序号任务说明
D1任务队列统一分析任务:ECS API 写 RDS analyses + 推队列;Dell 消费并调 R/Python
D2去掉 Dell 对公网 API关闭 frp 上的 3001/3002 公网映射(或仅 VPN)
D3RDS 白名单移除家里 IP;仅 ECS(+ 可选 Worker 内网)
D4py-server 本地 DBpyserver.db 若仍用:迁 RDS 或保留 Dell 仅作任务状态(需单独评估)
D5监控与扩容ECS API 水平扩展;Dell 按 R/Python 内存加机器或升配

4. py-server 阶段 C 要注意什么

建议
端口生产 PY_SERVER_PORT=3002
Dockerbiof3-python 容器 留在 Dell(96G 那台),ECS 上不跑 Python 重镜像
API 迁 ECS 后ECS 上 py-server 只负责:鉴权、写任务、HTTP 调 Dell 内网 WorkerRedis/DB 队列
nginxlocation /api/py/ → ECS:3002(与 /api/r/ 并列)
envECS /etc/biof3.envpy-server/.env:OSS、BIOF3_API_TOKENDATABASE_URL(若 py 任务元数据进 RDS)
与 r-server共用同一 JWT_SECRET / 用户体系(RDS users

5. 推荐实施顺序(你说「接下来就搞定」)

周 1 — 准备
□ 确认 ECS 规格(2C8G 起,API 专用)
□ VPC + RDS 改内网白名单(ECS 子网)
□ 文档化当前 nginx / frp 配置(备份)

周 2 — 阶段 C(r-server)
□ ECS 安装 Node、pm2、部署 r-server(同仓库 r-server/)
□ 环境变量从 Dell /etc/biof3.env 复制(DATABASE_URL 改为内网)
□ 健康检查 /api/health
□ nginx 10% 流量或仅 admin 域名试切

周 3 — 阶段 C(py-server)
□ ECS 部署 py-server(不启 Docker Python)
□ nginx /api/py/ → ECS:3002
□ Dell 保留 Python 容器;py-server 在 ECS 调 Dell Worker URL
□ 跑一条空间分析回归

周 4 — 阶段 D
□ frp 关闭 API 映射
□ Dell 仅 Worker + 双容器
□ RDS 去掉家里 IP
□ 压测与回滚预案

6. 风险与回滚

风险缓解
ECS 与 Dell 内网不通先 VPN/专线或临时保留 frp 仅内网隧道
Copilot 延迟ECS 与 RDS 同区;LLM 仍走公网 API
Python 任务失败阶段 C 保留 Dell:3002 并行,灰度切换
双写 API不要 长时间 ECS+Dell 同时对外写 RDS

回滚:nginx 指回 frp → Dell;pm2 启 Dell r-server/py-server。


7. 相关命令(现有)

# r-server
./deploy.sh --push r-server/...
./deploy.sh --health

# py-server(仍在 Dell)
./deploy.sh --py-deploy
./deploy.sh --py-health
./deploy.sh --py-logs

阶段 C 完成后可新增:./deploy.sh --api-ecs-deploy(待实现)。


8. 相关文档

AI 陪学

让 AI 陪我学这一篇

AI 会读这篇文章后给你 3-5 步学习计划, 逐步陪你学完,最后出 1-3 道题验证你掌握得怎么样。 登录后 AI 才能记住你的进度。

静态文件

离线资料下载

手册 HTML / PDF 已在后台预生成,点击后直接下载网站静态资源。