DAY 1 · 预科

为什么需要架构 + 词汇表

今天不写一行代码,只回答一个问题:为什么需要架构?学完你要能用自己的话说出架构的定义,并掌握 18 个词汇,为后面 13 天扫清语言门槛。

核心定义

一句话:架构是什么

软件架构是在重要约束下,对系统关键结构和决策进行安排,使系统不仅现在能工作,而且在变化、故障和增长中仍然可控。

拆开四个关键词

重要约束:单人运维、每月 30 美元预算、券商 API 的规矩——约束先画好框,架构只能在框里做选择。约束不是敌人,是设计的前提。

关键结构:系统分成哪几块、块与块之间怎么说话。不关心每一行代码怎么写,关心“大块的划分”。

决策:每个划分背后都有“为什么这样不那样”,并且能说出代价。没有理由的划分叫“碰巧”,不叫架构。

可控:变化来了能改、故障来了能扛、规模上来了不塌。“可控”是检验架构好坏的最终标准。

三层区别

架构 vs 设计 vs 代码

用盖房子类比:三者关注的尺度和修改成本完全不同。

层级盖房子写系统特点
架构小区总规:哪是住宅哪是商业、主干道走哪系统分几块、块之间怎么交互、关键决策难改,改了伤筋动骨
设计户型设计:客厅怎么布局每个块内部怎么做相对好改
代码砌砖、刷墙照图施工,一行一行写天天改
一句话总结:架构决定“以后改起来有多疼”。
Worked Example

Tom & Jerry 的下单脚本

Tom 和 Jerry 都写了个程序:每分钟拉一次 SPY 行情,满足条件就调用券商 API 下单。两个程序都能跑。

Tom

一个文件 300 行:拿行情、做策略、下单、记日志全搅在一起。

Jerry

分成三块——拿数据的、做决策的、下单的,每块只通过一个很小的接口跟别人说话。

三个月后,需求变了

  1. 券商要求所有订单加上幂等标识(重复发送也不会重复下单);
  2. 加一条风控:单笔订单不能超过 5000 美元;
  3. 把“每分钟”改成“每 30 秒”拉一次行情。

结果

  • Tom:改动牵一发动全身。加风控不知道加在哪,加完不敢上线,测了两天还是漏了一个 bug,多下了一单——真金白银。
  • Jerry:幂等标识只改“下单”那块;风控做成独立检查加在“做决策”和“下单”之间;频率只改“拿数据”那块。一下午搞定,当天上线。

把差别讲透(三层)

第一层:两人代码量差不多,差别不在“写得好不好”,而在“结构”——Jerry 提前把系统分成了块。

第二层:差别也不只在分块,而在“决策”——Jerry 提前决定了块与块之间用什么接口说话、风控应该放在哪里。这两个决定就是架构。

第三层:架构不写在代码里,写在“划分”里。Tom 不是输在技术,是输在没有提前做这两个决策。

点题:Day 10–11,你要亲手做的就是“Jerry 的版本”——而且要能讲清每个划分为什么这样做、代价是什么。这就是这门课要练的能力。
变更成本

同一个变更,发现得越晚越贵

在纸上改是一句话,写进代码改是一天,上线跑起来再改是一周加一次故障。

交易例子:风控规则“单笔不超过 5000 美元”如果在画架构图时就定好,加一条就是加一个检查点;如果代码写完、上线了才发现漏了风控,可能要重排整个下单链路——而这期间每一笔超标订单都是真实的风险。

通俗说法:架构就是提前花小钱(多想、多画),避免以后花大钱(重写、故障亏钱)。可以理解成“为未来变化买保险”——但这只是架构价值的一部分,它还管故障、质量、协作和运维。

“能跑”为什么不够

  • 变化:策略从 1 分钟 K 线换成 5 分钟,你的代码要动几处?动一处还是动十处,架构说了算。
  • 故障:券商 API 超时了,你的程序是重试、等待还是直接崩了?崩了的话,正在路上的那个订单怎么办?(这是 Day 3 和 Day 5 的核心问题,也是真实世界里亏钱最多的地方。)
  • 增长:从只跑 SPY 到同时跑 10 个标的,30 美元的小服务器扛得住吗?要不要重写?
结论:“能跑”回答的是“现在”,架构回答的是“以后”。
词汇表 · 18 词

分层掌握,不用死记硬背

Active(8 词):能用自己的话解释、能造句、讨论时能主动使用。Recognition(10 词):看到或听到能认出大意即可。每个词都配交易场景例句——读例句比背定义管用。

Active Vocabulary · 8 词(主动使用)
  • 订单 Order
    向券商发出的买卖指令。例:策略发出“以市价买入 10 股 SPY”的订单。
  • 成交 Fill
    订单被实际执行的数量与价格。例:成交回报显示以 512.3 美元成交了 10 股。
  • 持仓 Position
    当前持有的证券数量。例:收盘后持仓为 0,说明没有隔夜风险。
  • K 线 Candlestick
    一段时间内的开、高、低、收价格。例:1 分钟 K 线就是把每一分钟的行情画成一根“蜡烛”。
  • 超时 Timeout
    请求发出后在约定时间内没收到响应。例:下单 5 秒没回音,是成功了还是没成功?不知道——这就是超时。
  • 重试 Retry
    失败后再次发送请求(必须和幂等配合)。例:超时后想重试,但得先保证重试不会导致重复下单。
  • 幂等 Idempotency
    同一请求重复发送,效果和发一次一样。例:带幂等标识的下单请求发两次,券商只会成交一次。
  • 撤单 Cancel
    取消尚未成交的订单。例:触发安全开关后,系统尝试撤掉所有没成交的订单。
Recognition Vocabulary · 10 词(认出大意即可)
  • 滑点 Slippage
    预期价格与实际成交价的偏差。
  • 成交回报 Execution Report
    券商返回的订单执行情况。
  • 对账 Reconciliation
    把本地记录与券商记录核对一致。
  • 交易安全开关 Trading Kill Switch
    达到风险条件后禁新单、尝试撤单,同时保持监控。
  • API API
    程序之间的调用接口。
  • REST / WebSocket REST / WebSocket
    两种常用 API 通信方式:请求–响应 / 长连接推送。
  • 幂等标识 Idempotency Key
    让接收方识别重复请求的唯一键。
  • 异步 Async
    发出请求后不等结果,先做别的事。
  • 事件 Event
    系统中发生的、值得关注的事实。
  • 状态机 State Machine
    描述状态与合法转换的模型。
学完检验

Day 1 过关线

  • 能用自己的话说出架构的核心定义(含约束、关键结构、决策、可控四个意思);
  • 能讲清架构 / 设计 / 代码的区别(“架构决定改起来有多疼”);
  • 词汇小测 10 题 8 分,且 Active 部分错不超过 1 题;
  • 能说出统一小样场景里最重要的约束,并解释“为什么约束会影响架构”。
红队一问(自测):如果这个交易系统永远只有你一个人用、策略永远不变、Alpaca 永远不出故障,还需要做架构设计吗?为什么?——关键看你是否真理解“约束驱动”,而不是背答案。

继续 Day 2 · 需求与边界 回课程大纲