STTNet 0.7.0

第 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 或业务层之前完成长度、格式和权限校验。

相关章节:JSON文件与日志编码与加密工具

4. 进程生命周期

  1. SIGINT (2)SIGTERM (15) 在线程创建前完成屏蔽。
  2. 日志、Server、Reactor 和 Worker 对象完成创建。
  3. 监听服务与健康检查、指标端点一同启动。
  4. 终止信号到达后,新连接停止接入,在途任务与发送队列进入排空阶段。
  5. 正常关闭具有明确宽限期;宽限期结束后,外部守护程序可升级为 SIGKILL (9)

Process 提供进程拉起与重启,不等于完整 Unix daemonize。生产环境通常由 systemd、容器编排或专用进程监督器负责完整生命周期管理。相关章节:Linux 信号进程监督与心跳

5. 发布条件清单

发布原则:容量评估以最慢的真实业务路径为主;框架空响应 QPS 仅作为底层参考。生产容量由业务逻辑、下游依赖和尾延迟共同决定。