第九章:合流

9 阅读5分钟

上线后的第三周,系统第一次迎来真正意义上的压力测试。

不是内部压测,也不是预估模型。

而是一场突如其来的活动。

市场部在周一早会上宣布——

“阅读器将接入一场联合推广,预计用户量会有明显增长。”

没有具体数字。

但林晨在听到“联合推广”的那一刻,心里已经有了判断。

这种词,通常意味着一件事——

流量不可控。****


1. 风暴前的安静

林晨回到工位,没有立刻写代码。

他打开监控面板。

  • 首屏渲染:1.9s

  • 接口平均响应:280ms

  • 错误率:0.2%

一切看起来都正常。

甚至可以说,很健康。

但他盯着那条曲线看了很久。

因为他知道——

系统最危险的时候,不是在出问题的时候,而是在“看起来没问题”的时候。****


他打开项目代码,翻到之前做的架构拆分。

当初为了避免性能问题扩大,他做了一次很克制的分层:

  • 主阅读区域(核心渲染)

  • 设置系统(独立响应)

  • 阅读行为(滚动、进度)

不是复杂架构,

但足够“分开”。

当时他只是为了性能。

现在,这个决定开始显现另一种价值——

可控性。****


2. 第一个信号

活动开始后的第十五分钟,问题出现了。

不是崩溃。

只是群里一条普通的消息:

“阅读器偶尔加载有点慢。”

没有截图,没有抱怨。

但林晨已经打开了控制台。


他进入线上环境,加载一个长章节。

滚动。

加载。

停顿了一下。

不是明显卡顿,而是那种——

“不该慢,但确实慢了”的感觉。****


他打开 Performance 面板。

录制。

滚动。

停止。

时间线展开。 没有明显的红色警告。

但有一段渲染时间,被拉长了。


问题不复杂。

// 数据请求后触发整体渲染
chapterContent.value = newData

看似简单的一行代码。

但在当前结构下,这意味着:

  • 整个章节 DOM 更新

  • 样式重新计算

  • 布局重排

如果只是一次,不是问题。

但当请求变频繁,问题就开始积累。


林晨靠在椅子上,低声说了一句:

“开始了。”


3. 压力真正到来

傍晚六点,流量明显上升。

接口开始出现波动。

有请求超过 800ms。

前端没有报错,但体验开始变差。


群里开始有人说:

“是不是服务器问题?”

林晨没有回。

他先做了一件更直接的事——

限制前端影响范围。****


他快速改了一段逻辑。

把“强依赖数据渲染”改成“可降级显示”。

onMounted(async () => {
  try {
    const data = await fetchChapter()
    chapterContent.value = data
  } catch (e) {
    chapterContent.value = cachedContent.value
  }
})

然后,他加了一层保护:

// 避免重复渲染
if (!isSameChapter(newData, oldData)) {
  chapterContent.value = newData
}

这不是优化。

这是在做一件更底层的事情:

减少系统被触发的次数。****


4. 第二条线

就在他改代码的时候,苏雨在群里发了一条消息:

“推荐模块先降级,优先保证阅读体验。”

这条消息很关键。

因为它意味着——

产品开始主动为系统让路。****


林晨看了一眼,没有说话。

但他知道,这比任何技术优化都更重要。


5. 稳住

晚上九点。

流量达到峰值。

没有崩。

也没有完全流畅。

但系统稳住了。


错误率从 0.2% 上升到 0.9%,

然后缓慢回落。

没有扩散。

没有失控。


办公室只剩几个人。

林晨走到会议室,苏雨已经在那里。

屏幕上是监控曲线。

两个人都没说话。


“你刚刚降级推荐模块,是提前预判的吗?”林晨问。

“不是。”苏雨摇头。

“是看到趋势之后的选择。”

她看着那条曲线。

“用户可以晚一点看到推荐,但不能读书的时候卡。”


林晨点了点头。

这是一个很产品的判断。

但也是一个系统级判断


6. 第一次“对齐”

“你之前说的那句话,”苏雨忽然开口。

“哪句?”

“系统不是怕问题,是怕失控。”

林晨愣了一下。

他没想到她记住了。


“今天算是第一次验证吧。”她说。

“还不算。”林晨摇头。

“这只是边缘。”

他停了一下。

“真正的压力,还没来。”


苏雨笑了笑。

“那至少,我们没有被第一波打乱。”


7. 架构的意义

回到工位,林晨打开项目文档。

他在原本的架构说明后面,补了一段话:

### 为什么要分层?

不是为了优雅,而是为了在压力下可以选择“放弃什么”。

他又加了一句: 系统不是要完美运行,而是要在不完美时依然可控。 这不是写给现在的。

是写给未来的。


8. 合流

下班前,苏雨发来一条消息:

“今天如果没有前面那几次讨论,可能就扛不住了。”

林晨看着这句话,想了几秒。

回了一句:

“如果没有你那次让步,我们也不会提前准备。”


这一次,没有争论。

也没有谁证明了谁是对的。

他们只是第一次,在同一个方向上发力。


夜深。

灯一盏盏熄灭。

林晨关掉电脑,走出办公室。

苏雨刚好也出来。

两人并肩走向电梯。

没有刻意,也没有避开。


“接下来呢?”苏雨问。

林晨看着电梯门上的倒影。

“接下来,不只是把功能做好。”

他顿了一下。

“是把这个东西,做成一个真正能扛住变化的系统。”


电梯门缓缓关上。

这一章结束的不是一次压力。

而是一个阶段。


他们开始从“完成项目”,走向“理解系统”。