Skip to main content
今日目标:在进入最后的 48 小时冲刺前,我们需要把前四周零散的知识点缝合在一起。今天我们要学习如何进行 “架构设计”,并为明天的毕业大项目做好本地环境和心理建设。

学习内容 (30 mins)

在写任何代码之前,先画图。架构图是沟通的语言。
我们要构建一个微缩版的企业级监控系统。
  • DB 层 (SQL): 存储任务配置、采集到的信号结果、用户信息。这是数据的归宿
  • Control Plane (Python/FastAPI):
    • 作为“大脑”。
    • 负责处理复杂的业务逻辑(如鉴权、数据聚合)。
    • 对外提供 RESTful API。
  • Data Plane (Go):
    • 作为“执行器” (Agent)。
    • 部署在边缘节点,负责高频采集数据。
    • 与大脑通讯,上报数据。
  • Infrastructure (Shell/Docker):
    • 负责一键拉起所有环境。
思考题:全用 Python 或全用 Go 行不行?
  • 全 Python: Agent 端内存占用大,部署依赖多。如果部署在几千台机器上,资源浪费严重。
  • 全 Go: Web 开发虽然可以,但 ORM 和 Web 框架不如 Python 的生态(SQLAlchemy/FastAPI)那么开发迅速、灵活。
  • 混合架构:
    • Python 处理 低频、复杂 的控制逻辑。
    • Go 处理 高频、简单 的计算逻辑。
    • 取长补短,这是现代架构的精髓。

任务清单 (90 mins)

今天没有重代码任务,重点是自测环境准备
1

技能自测清单

请逐一检查,如果有不确定的,请立刻点击链接回去复习:
  • Shell: 能编写带参数的脚本,并用 curl 调用 API。 (详解见 Day 05)
  • SQL: 能设计包含主键、外键和索引的表结构。 (详解见 Day 09)
  • Python: 能使用 requests 抓取数据,并熟练使用 json 处理。 (详解见 Day 13)
  • FastAPI: 能编写包含 POSTGET 的接口。 (详解见 Day 17)
  • Go: 能使用 sync.WaitGroupChannel 处理并发。 (详解见 Day 24)
2

环境大清洗与准备

请在你的本地开发机上执行以下命令,确保明天的开发环境无误。这是一个“神圣”的仪式。
# 1. 确保 Docker 正常运行且 MySQL 可用
docker ps | grep mysql
# 如果没有,请重新运行 Day 01 的启动命令

# 2. 确保 Python 环境就绪 (使用 3.9+)
python3 --version
pip3 install fastapi uvicorn requests sqlalchemy pymysql aiomysql

# 3. 确保 Go 环境就绪 (使用 1.18+)
go version
go env -w GOPROXY=https://goproxy.cn,direct

# 4. 创建毕业设计专属工作目录
# 按照正规工程结构创建
mkdir -p ~/final-project/{master,agent,scripts,deploy}
cd ~/final-project
tree .
验证步骤
  1. 运行 python3 -c "import fastapi; print(fastapi.__version__)" 确保不报错。
  2. 运行 go run 打印一个 “Hello Project”。

脑力体操 (30 mins)

设计挑战:数据应该怎么流?

情景:如果 Agent 采集网络断了,数据该怎么办?选择 A: 丢弃数据。 选择 B: 缓存在本地内存,连上后再发。 选择 C: 写入本地文件,连上后再发。
  • 分析:
    • 对于监控系统,实时性第一。如果是昨天的 CPU 负载数据现在才发过来,价值很低。通常选择 A (丢弃)B (有限内存缓存)
    • 如果是 计费日志,则必须选择 C (本地持久化缓冲),绝不能丢。
  • 结论: 架构设计没有绝对的对错,只有 Trade-off (通过权衡做取舍)

今日产出物

  • ~/final-project/ 目录结构
  • 准备好的开发环境

明日预告

Next Step: 明天我们将进入 Week 5 Day 29,正式开始从 0 到 1 编写 Master (Python)Agent (Go) 的代码。请养精蓄锐!

回到目录

查看完整进度

项目启动: 需求分析

Day 29 | 综合项目需求分析