技术探索不是刷题,是为产品扛资源的活

Elasticsearch搜不到
2026-01-25 12:44
阅读 491

上周五晚上十一点,我刚把婚庆公司发来的第三版请柬设计图改完配色,钉钉就弹出一条消息:“明天上线前压测,你那块缓存逻辑再过一遍。” 我一边在心里默念“别炸别炸”,一边点开 VS Code——这大概就是杭州备婚程序媛的日常:左手捧花右手日志,白天写代码晚上挑婚纱。

我是阿里某中台团队的后端开发,坐标西溪园区,早起型选手,8点准时坐到工位上泡枸杞茶(别笑,我们组95后都开始养生了)。最近几个月,一边忙着双11大促的架构加固,一边和未婚夫敲定婚礼细节,连面试邀约都懒得点了。但今天想写点东西,不是为了跳槽,也不是为了卷,而是被最近几次技术讨论逼出来的思考——我们到底为什么做技术探索?

很多人以为,搞技术就是刷 LeetCode、背八股文、追新框架。可现实是,去年双11压测时,一个缓存穿透差点让整个订单链路雪崩,而当时我脑子里闪过的根本不是“Redis 缓存穿透怎么解决”,而是“如果挂了,产品那边的 GMV 目标怎么办”。

从一道“简单”的面试题说起

前几天帮内推的朋友模拟面试,问了个经典题:“如何设计一个高并发的秒杀系统?”
他张口就来:“用 Redis 做库存预减,MQ 削峰,本地缓存防击穿……”
听起来很标准,但我打断了他:“如果资源有限,只能选两个方案,你先保哪个?”

他愣住了。

这其实不是考技术,是考权衡。在真实业务中,资源永远是有限的——服务器预算、人力排期、运维支持、甚至你自己的精力。我们团队去年做会员积分兑换,初期也想上全套高可用架构,但产品说:“先跑起来,用户量不到十万别谈 QPS。” 于是我们用最朴素的数据库行锁 + 重试机制撑了三个月,等数据跑出来,才针对性加缓存、拆服务。

技术探索的起点,从来不是“这个技术牛不牛”,而是“这个产品值不值得我砸资源”。

产品驱动的技术决策,才是真架构

我在阿里待了四年,最大的体会是:好架构不是设计出来的,是被产品需求“逼”出来的。

举个例子。我们有个内部工具,早期只是个脚本,产品经理临时要加个“实时导出报表”功能。我一开始直接 SELECT * FROM huge_table,结果 DBA 找上门:“你这查询把主库 IO 打满了!”
当时 deadline 就在三天后,不可能重构。怎么办?

  • 方案 A:加只读副本 → 要申请机器、走审批、等部署,至少一周
  • 方案 B:改成分页 + 限流 → 用户体验差,导出要等半小时
  • 方案 C:用 Elasticsearch 做异步索引 → 需要额外维护一套数据同步

最后我选了 D:把大表按时间分片,只查最近 30 天,并加了个“历史数据需申请”的提示。产品居然欣然接受——因为 95% 的用户只关心近期数据。

你看,这不是炫技,这是在资源约束下,用最小成本满足核心需求。技术人常犯的错,就是沉迷于“完美方案”,却忘了产品要的是“能用且快”。

资源不是无限的,但可以聪明地分配

说到资源,杭州互联网圈有个潜规则:谁会“省资源”,谁就是好工程师。

阿里内部有资源成本核算,每个服务的 CPU、内存、存储都要计入团队账单。去年我们优化一个老服务,发现它每天凌晨跑批处理,占用了 4C8G 的实例整整 6 小时。我提了个方案:用 Serverless 函数替代,按执行时间计费。结果一算,月成本从 ¥1200 降到 ¥80。

但这不是技术多高明,而是意识到资源是钱,而钱是产品的命脉。很多新人觉得“公司不差这点钱”,但当你经历过预算砍半、项目叫停,就知道每一分资源都要精打细算。

下面是我们团队常用的资源优化手段对比:

优化手段 适用场景 成本降幅 实施难度 风险
数据分片 大表查询、高写入 30%-50% 分片逻辑复杂
缓存分级 热点数据、重复计算 40%-70% 缓存一致性
Serverless 异步任务、低频服务 60%+ 冷启动、调试困难
读写分离 读多写少 20%-40% 主从延迟
静态化 内容展示、配置类数据 80%+ 更新延迟

注意,没有“最好”的方案,只有“最合适”的。比如 Serverless 虽然省钱,但我们的核心交易链路绝不敢用——冷启动几百毫秒,用户早就跑了。

技术探索的正确姿势:从问题出发,而非从工具出发

我见过太多人学新技术是因为“听说很火”,结果学完发现用不上。我自己也踩过坑。前年 Kubernetes 火的时候,我花了两周搭了个集群,结果我们服务还在用 EDAS,根本没机会上 K8s。

后来我改了策略:先找问题,再找工具。

比如最近我们在做多租户 SaaS 产品,遇到隔离问题。传统方案是数据库分库,但运维成本高。我调研了 Postgres 的 Row Level Security(RLS),发现它能在单表内实现租户隔离,省了 60% 的 DB 实例。这才去深入学 RLS 的权限模型和性能影响。

这种探索才有价值——它直接服务于产品目标,且能落地到资源节省。

反观那些“为学而学”的技术,往往变成简历上的装饰品。面试官问“你用过 Kafka 吗?”,你说“搭过 demo”,他心里 already know:这人没真用过。

别被“八股文”绑架,真实世界比面试题复杂一万倍

说到面试题,我必须吐槽一句:现在的面试题越来越像脑筋急转弯,离实际工作越来越远。

比如“如何设计 Twitter?”——请问你 Twitter 日活多少?用户分布在哪?合规要求有哪些?这些不说,光画个架构图有什么用?
我在网易实习时,面试官问:“如果 Redis 挂了怎么办?” 我答:“看 SLA,如果是非核心功能,直接降级;如果是核心,走多级缓存+本地缓存兜底。” 他点头说:“这才是生产环境思维。”

真实世界里,技术决策=风险评估+成本计算+团队能力。你不能指望一个 3 人小团队搞出 Netflix 级别的容灾。

上周我们线上出了个诡异 Bug:用户支付成功但订单状态没更新。查了半天,发现是消息队列消费超时,而重试机制没覆盖幂等。这时候,没人关心你懂不懂 CAP 理论,只关心“多久能修好”和“会不会丢数据”。

所以,我对技术探索的看法很简单:别为了面试而学,要为了扛住明天的线上流量而学。

写在最后:技术人的浪漫,是让产品活得更久

备婚这段时间,我常和未婚夫聊职业规划。他说:“你整天改代码,不累吗?”
我说:“累,但看到用户用我们做的功能解决问题,就觉得值。”

技术探索对我而言,不是刷题升级,而是在有限的资源下,为产品构建一道防线。这道防线可能不够酷,但足够稳;可能不前沿,但能扛住双11的洪峰。

所以,下次当你面对一个技术选型,别急着 Google 最佳实践。先问自己:

  • 这个功能对产品有多重要?
  • 我们有多少资源可以投入?
  • 如果失败,最大损失是什么?

答案出来了,技术方案自然就清晰了。

毕竟,在杭州这座卷到飞起的城市,能活下来的产品,才是好产品。而我们程序员,就是那个默默在背后给产品“续命”的人。

(写完这篇,我得去回婚庆公司的消息了——他们又改了主舞台的灯光方案。希望这次别再让我凌晨三点爬起来改代码了。)

评论 0

最热最新
暂无评论
匿名用户Lv.1
0
影响力
0
文章
0
粉丝