第 20 章:项目接入与上线检查
本章说明项目接入、资源边界、可观测性、安全退出和回滚相关的上线检查项。
1. 构建与依赖
生产工程通过 CMake 目标 STTNet::sttnet 接入。Release 构建用于部署,独立的 Debug/ASan 构建用于回归与诊断。
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --parallel
ctest --test-dir build --output-on-failure- 运行环境包含 JsonCpp、OpenSSL、pthread 等依赖。
- 证书、私钥、日志目录和配置文件由部署配置提供,与开发机路径解耦。
- STTNet 升级流程包含协议互操作测试和业务回归测试。
2. 网络与系统资源
框架构造参数只描述框架容量,不会修改 Linux 系统限制。实际部署容量由以下项目共同决定:
| 项目 | 容量与边界 |
|---|---|
| 文件描述符 | ulimit -n、systemd LimitNOFILE 与预期连接数 |
| 监听队列 | listen_backlog 与内核 somaxconn |
| 发送背压 | 每连接待发送字节、单轮写预算和慢客户端策略 |
| WorkerPool | 线程数、待执行任务上限、数据库/RPC 自身超时 |
| HTTP 输入 | Header、Body、上传和业务字段的大小限制 |
| TLS | 证书有效期、私钥权限、协议版本和 mTLS 策略 |
相关章节:系统初始化与服务端设置、连接安全与输入边界。
3. 数据、日志与秘密信息
- JSON 解析失败对应明确的 4xx 响应,失败分支不再读取未验证字段。
- 异步日志队列要监控丢弃数量,,且日志对象的生命周期覆盖退出排空过程。
- 密码、Token、Cookie、私钥和完整请求体默认不应写入日志。
- Base64 只是编码;SHA-1 和 AES-CBC 的使用边界见数据工具章节。
- 外部输入在进入 Worker 或业务层之前完成长度、格式和权限校验。
4. 进程生命周期
SIGINT (2)与SIGTERM (15)在线程创建前完成屏蔽。- 日志、Server、Reactor 和 Worker 对象完成创建。
- 监听服务与健康检查、指标端点一同启动。
- 终止信号到达后,新连接停止接入,在途任务与发送队列进入排空阶段。
- 正常关闭具有明确宽限期;宽限期结束后,外部守护程序可升级为
SIGKILL (9)。
Process 提供进程拉起与重启,不等于完整 Unix daemonize。生产环境通常由 systemd、容器编排或专用进程监督器负责完整生命周期管理。相关章节:Linux 信号、进程监督与心跳。
5. 发布条件清单
发布原则:容量评估以最慢的真实业务路径为主;框架空响应 QPS 仅作为底层参考。生产容量由业务逻辑、下游依赖和尾延迟共同决定。