antist.ai
全部场景

图集 · L0–L3

做数据系统

数据系统是一台在没人看着的时候也要一直干活的机器:按计划抓取信源、清洗返回的内容、存起来、发布结论。它的故障都很安静:信源改了格式,任务悄悄跳过了,页面还把昨天的数字当成今天的在展示。这套图纸画出这类系统可能的形态,以本站自己的世界情报雷达作为实例。

设计哲学

数据系统是一个承诺:它的数字是真的,而且是新的。什么都不显示是诚实的;把过期数据当新鲜数据展示,是一个被自动说出口的谎言。

  1. 安静就是敌人

    危险的故障不是崩溃,而是任务跳过了、返回了空、还报告成功。在证明不是之前,把空结果一律当成警报。

  2. 保留原材料

    在转换之前,先存下信源实际返回的内容。逻辑可以修好再重跑,没留下来的数据就是没了。

  3. 让每个结论都能被核对

    每个结论都要指向它的信源和采集时间,预测要公开对账。信任来自可以被核对,而不是来自语气笃定。

只为自己收集数据?一个定时写文件的脚本就够了。当别人开始依赖你的输出时,再换成托管的定时任务加数据库;只有一次运行已经塞不进时间上限时,才上队列。

图号L0

个人采集器

谁在用只有你
每月$0

①为什么升级

你一直在手动翻同样几个信源,想让机器替你做。唯一的读者是你,所以漏跑一次,代价只是一段空白。

②架构

一个脚本在你自己的电脑上定时运行,抓几个信源,每次运行写一个带日期的文件。原始响应和清洗后的结果存在一起。

Δ 本级新增

  • + 一个定时脚本
  • + 每次运行一个带日期的文件
  • + 原始响应和结果放在一起

对应地图上的形态: 定时脚本 → 文件

③工具

哪门语言解析你的信源最好就用哪门。优先用官方的订阅源和 API,而不是抓网页:它们更不容易坏,使用条款也更清楚。

④代码与测试

  • 每次运行都写一行“拿到了多少条”;0 条是警告,不是成功。
  • 留几份原始响应,每次改完解析器都拿它们测一遍。
图号L1

公开推送

谁在用依赖你输出的读者
每月$0–5

①为什么升级

开始有人看你的页面、订阅你的日报了。你的笔记本合上,不能再意味着丢数据;一个错误的数字,现在会误导别人。

②架构

定时任务搬到托管平台上,每小时跑一次采集器,写进数据库,并提供一个公开页面。每一条数据入库之前都要对照预期的格式校验,每一次运行都记录自己的健康状况。

Δ 本级新增

  • + 托管的定时任务
  • + 用数据库代替文件
  • + 入口处的格式校验
  • + 每次运行的健康记录

对应地图上的形态: 托管定时任务 + 数据库 + 站点(雷达的形态)

③工具

选一个定时任务、数据库和网站住在一起的平台;零件越少,静默故障越少。设计任务之前,先查清平台单次运行的时间和 CPU 上限。

其他值得了解的工具 · 本站未验证

④代码与测试

  • 每条进来的数据都对照格式定义校验;不合格的拒收并记日志,而不是存进去。
  • 公开页面上的每个数字旁边,都显示采集时间。
  • 某个信源返回 0 条、或者某次运行根本没发生时,发出告警。
图号L2

涉及钱和信任

谁在用根据你的结论采取行动的人
每月$5–25

①为什么升级

读者开始拿你的输出做决定,订阅者可能付费,有些信源带着使用条款或个人信息。一个错误的数字、一个泄露的字段,现在都会有后果。

②架构

结论连同它的信源和日期写进只追加的账本,预测到期时由代码自动结算。原始响应归档到便宜的存储里,每个信源的使用条款单独记录,个人数据在存入之前就被过滤掉。

Δ 本级新增

  • + 只追加的判断账本
  • + 预测的自动结算
  • + 对象存储里的原始归档
  • + 信源条款记录与个人数据过滤

对应地图上的形态: 托管定时任务 + 数据库 + 站点(雷达的形态)

③工具

把判断和记账分开:分析可以由模型写,但一个预测到底准没准,必须由任何人都能重跑的普通代码来结算。

④代码与测试

  • 永远不修改账本条目;更正是一条新的条目,指向旧的那条。
  • 用确定性的代码结算预测,不用模型。
  • 做投毒测试:喂进带密钥或个人数据的条目,确认没有一条进入数据库。
图号L3

规模化

谁在用很多信源、很多使用方
每月$50–500+

①为什么升级

几百个信源已经塞不进单次运行的时间上限,每小时总有几个失败,而且有人想跨好几年的历史提问。

②架构

采集拆成队列里的许多小任务,每个都单独重试,跑两遍也安全。原始归档成为唯一的事实来源,分析层从归档重新生成,而不是手工修改。

Δ 本级新增

  • + 由幂等小任务组成的队列
  • + 按信源的退避重试
  • + 以原始归档为事实来源
  • + 可以重新生成的分析层

对应地图上的形态: 基于队列的流水线 · 数据仓库 + 分析层

③工具

先上队列,再上数据仓库。大多数数据系统先撞上的是单次运行的时间上限,远早于遇到一个数据库答不了的问题。

其他值得了解的工具 · 本站未验证

④代码与测试

  • 每个任务都做成幂等的,重试永远不会产生重复。
  • 能用一条命令从原始归档重建任何派生表,并且真的演练过。
  • 按信源追踪新鲜度,某个信源过期时立刻通知负责的人。

架构全景图

这件事所有可能的搭法。它们大半的意义,是让你知道哪些现在还不该碰。

定时脚本 → 文件

个人收集;一台机器;输出只有你自己看

$0 · 极低

△ 别人开始依赖你的输出,或者你的电脑一关机就会丢数据

托管定时任务 + 数据库 + 站点(雷达的形态)

有别人依赖的公开页面或推送;单次运行一分钟以内

$0–5/月 · 低–中

△ 一次运行塞不进平台的时间或 CPU 上限,或者信源需要并行抓取

基于队列的流水线

信源很多、需要重试、步骤必须扛得住部分失败

$5–50/月 · 中–高

△ 分析的人需要跨好几年的历史提问,而不只是看最新一页

数据仓库 + 分析层

大量历史数据、很多使用方、谁也没预料到的问题

$50–500+/月 · 高

△ 这是最顶层。如果一个数据库还答得了你的问题,就留在下面

你真正需要的概念

每个概念一句人话 + 一个比喻。点击任何工具模块,也有同款科普。

幂等
同一个任务跑两遍,结果和跑一遍一样,所以重试永远不会产生重复数据。
≈ 电梯按钮按五下,来的还是一部电梯。
新鲜度
每一个展示出来的数字都应该带着采集时间;数据过期时,系统要大声说出来。
≈ 每一盒牛奶都印保质期,而不是只在店门口贴一张。
格式漂移
信源悄悄改了格式;如果采集器不做检查,它会一直存下空的或错的字段。
≈ 供货商不打招呼就换了箱子尺寸,你的货架照样摆满,只是摆错了东西。
账本
只追加、不修改的记录,写下每一个判断和它的结果,结论才能拿来和真实发生的事对账。
≈ 一个把每次预报都写在墙上、再逐条打勾打叉的气象站。