为什么需要架构 + 词汇表
今天不写一行代码,只回答一个问题:为什么需要架构?学完你要能用自己的话说出架构的定义,并掌握 18 个词汇,为后面 13 天扫清语言门槛。
一句话:架构是什么
拆开四个关键词
重要约束:单人运维、每月 30 美元预算、券商 API 的规矩——约束先画好框,架构只能在框里做选择。约束不是敌人,是设计的前提。
关键结构:系统分成哪几块、块与块之间怎么说话。不关心每一行代码怎么写,关心“大块的划分”。
决策:每个划分背后都有“为什么这样不那样”,并且能说出代价。没有理由的划分叫“碰巧”,不叫架构。
可控:变化来了能改、故障来了能扛、规模上来了不塌。“可控”是检验架构好坏的最终标准。
架构 vs 设计 vs 代码
用盖房子类比:三者关注的尺度和修改成本完全不同。
| 层级 | 盖房子 | 写系统 | 特点 |
|---|---|---|---|
| 架构 | 小区总规:哪是住宅哪是商业、主干道走哪 | 系统分几块、块之间怎么交互、关键决策 | 难改,改了伤筋动骨 |
| 设计 | 户型设计:客厅怎么布局 | 每个块内部怎么做 | 相对好改 |
| 代码 | 砌砖、刷墙 | 照图施工,一行一行写 | 天天改 |
Tom & Jerry 的下单脚本
Tom 和 Jerry 都写了个程序:每分钟拉一次 SPY 行情,满足条件就调用券商 API 下单。两个程序都能跑。
Tom
一个文件 300 行:拿行情、做策略、下单、记日志全搅在一起。
Jerry
分成三块——拿数据的、做决策的、下单的,每块只通过一个很小的接口跟别人说话。
三个月后,需求变了
- 券商要求所有订单加上幂等标识(重复发送也不会重复下单);
- 加一条风控:单笔订单不能超过 5000 美元;
- 把“每分钟”改成“每 30 秒”拉一次行情。
结果
- Tom:改动牵一发动全身。加风控不知道加在哪,加完不敢上线,测了两天还是漏了一个 bug,多下了一单——真金白银。
- Jerry:幂等标识只改“下单”那块;风控做成独立检查加在“做决策”和“下单”之间;频率只改“拿数据”那块。一下午搞定,当天上线。
把差别讲透(三层)
第一层:两人代码量差不多,差别不在“写得好不好”,而在“结构”——Jerry 提前把系统分成了块。
第二层:差别也不只在分块,而在“决策”——Jerry 提前决定了块与块之间用什么接口说话、风控应该放在哪里。这两个决定就是架构。
第三层:架构不写在代码里,写在“划分”里。Tom 不是输在技术,是输在没有提前做这两个决策。
同一个变更,发现得越晚越贵
在纸上改是一句话,写进代码改是一天,上线跑起来再改是一周加一次故障。
交易例子:风控规则“单笔不超过 5000 美元”如果在画架构图时就定好,加一条就是加一个检查点;如果代码写完、上线了才发现漏了风控,可能要重排整个下单链路——而这期间每一笔超标订单都是真实的风险。
“能跑”为什么不够
- 变化:策略从 1 分钟 K 线换成 5 分钟,你的代码要动几处?动一处还是动十处,架构说了算。
- 故障:券商 API 超时了,你的程序是重试、等待还是直接崩了?崩了的话,正在路上的那个订单怎么办?(这是 Day 3 和 Day 5 的核心问题,也是真实世界里亏钱最多的地方。)
- 增长:从只跑 SPY 到同时跑 10 个标的,30 美元的小服务器扛得住吗?要不要重写?
分层掌握,不用死记硬背
Active(8 词):能用自己的话解释、能造句、讨论时能主动使用。Recognition(10 词):看到或听到能认出大意即可。每个词都配交易场景例句——读例句比背定义管用。
- 订单 Order
向券商发出的买卖指令。例:策略发出“以市价买入 10 股 SPY”的订单。 - 成交 Fill
订单被实际执行的数量与价格。例:成交回报显示以 512.3 美元成交了 10 股。 - 持仓 Position
当前持有的证券数量。例:收盘后持仓为 0,说明没有隔夜风险。 - K 线 Candlestick
一段时间内的开、高、低、收价格。例:1 分钟 K 线就是把每一分钟的行情画成一根“蜡烛”。 - 超时 Timeout
请求发出后在约定时间内没收到响应。例:下单 5 秒没回音,是成功了还是没成功?不知道——这就是超时。 - 重试 Retry
失败后再次发送请求(必须和幂等配合)。例:超时后想重试,但得先保证重试不会导致重复下单。 - 幂等 Idempotency
同一请求重复发送,效果和发一次一样。例:带幂等标识的下单请求发两次,券商只会成交一次。 - 撤单 Cancel
取消尚未成交的订单。例:触发安全开关后,系统尝试撤掉所有没成交的订单。
- 滑点 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 题;
- 能说出统一小样场景里最重要的约束,并解释“为什么约束会影响架构”。