为什么技术探索与实践?一个快手老架构师的碎碎念

♂高洋
2025-12-17 22:27
阅读 1600

今天早上8点刚进公司,泡了杯速溶咖啡(别笑,真没时间手冲),坐在工位上刷了会儿内部论坛,看到一条新帖子:“求推荐能快速上手、面试又加分的新技术方向”。我笑了笑,想起了自己六年前刚来快手那会儿——也是这么急着“学点能写简历上的东西”。

我是快手下一代基础设施团队的架构师,在上海租了个离公司步行10分钟的小单间,已经在这干了整整六年。从0到1搭过用户中心、内容分发中台、还有去年搞崩过两次的直播打赏系统(别问,问就是“高并发下的玄学”)。一路踩坑、背锅、救火、复盘,慢慢才明白:技术探索不是为了炫技,而是为了解决真实世界里那些又臭又长的业务需求


起因:运营说要“上链”,我差点以为他在讲玄学

去年Q3,我们部门接了个“创新项目”:给某个垂类内容做创作者激励,运营同学拍脑袋提了个需求——“能不能用区块链存证?显得更可信!”
我当时第一反应是:这哥们是不是看了太多币圈新闻?但转念一想,其实人家核心诉求很朴素:防止数据被篡改,增强创作者对平台的信任感。至于用不用区块链,反而是次要的。

但既然提到了,我就得认真评估。毕竟在快手这种量级的公司,随便一个“小改动”都可能影响百万DAU。而且——坦白讲——我也想趁机摸一摸 Web3 的门把手,万一哪天跳槽呢?(求职市场卷成麻花了,懂的都懂)


技术选型:不是所有问题都要上K8s + 区块链全家桶

一开始,团队里有新人直接甩出个 Hyperledger Fabric 架构图,还配了句“这可是企业级方案”。我看了眼部署文档,光 TLS 配置就三页,心里直冒冷汗:我们真的需要这么重的方案吗?

冷静下来后,我拉着运维、测试和产品开了个短会(没错,就是那种站着开15分钟的“敏捷会”),把问题拆解清楚:

  • 核心需求:关键操作(比如收益发放)需可追溯、不可抵赖
  • 非功能需求:低延迟(<100ms)、高可用(99.99%)、成本可控
  • 现实约束:不能动现有支付链路,两周内出MVP

最后我们决定:不上公链,也不搞私有链集群,而是用 Merkle Tree + 时间戳服务 + K8s 上的轻量签名服务。简单说,就是把关键数据哈希后存入一个中心化但防篡改的日志系统,再定期将根哈希同步到阿里云的可信时间戳服务(TSA)。

别杠!我知道这不算“正宗”区块链。但在工程世界里,能解决问题的方案才是好方案,不是吗?


实践踩坑:你以为的“简单集成”,其实是地狱副本

方案定完,开发倒是快。我用 Go 写了个轻量级的 EvidenceService,核心逻辑就几十行:

// 生成操作证据并签名
func GenerateEvidence(userID string, action string, amount float64) (*Evidence, error) {
    payload := EvidencePayload{
        UserID: userID,
        Action: action,
        Amount: amount,
        Time:   time.Now().Unix(),
    }
    
    // 序列化并计算SHA256
    data, _ := json.Marshal(payload)
    hash := sha256.Sum256(data)

    // 用预置私钥签名(实际用HSM或KMS)
    sig, err := sign(hash[:])
    if err != nil {
        return nil, err
    }

    return &Evidence{
        Hash:      hex.EncodeToString(hash[:]),
        Signature: hex.EncodeToString(sig),
        Timestamp: payload.Time,
    }, nil
}

但上线前夜,测试同学跑来幽幽地说:“你这个服务,在K8s里Pod重启后,日志对不上了。”
我一查,好家伙——没做幂等! 同一个请求重试两次,生成了两个不同时间戳的证据。运营要是拿这个去“维权”,平台反而成了背锅侠。

赶紧加了个 Redis 去重缓存,Key 是 evidence:{userID}:{action}:{nonce},TTL 24小时。顺便在入口层加了防重放校验:

# K8s Deployment 片段
env:
- name: EVIDENCE_DEDUPE_TTL
  value: "86400"  # 24小时

上线那天是周五晚上9点,我和运维蹲在监控大屏前,心跳比Prometheus的QPS曲线还高。直到凌晨1点,看到 Grafana 上“证据生成成功率 99.998%”,我才敢关掉终端,默默点了份黄焖鸡——那一刻,比涨工资还爽


效果与反思:技术探索的价值不在“新”,而在“用”

这套系统上线三个月,处理了2700万+次创作者激励操作,零纠纷、零数据争议。运营同学逢人就说“我们上了区块链”,虽然 technically 不准确,但业务目标达成了,谁在乎呢?

更重要的是,这次探索让我重新思考了“技术探索”的意义:

误区 真相
“学新技术=刷LeetCode+看论文” 真正的学习发生在解决具体问题时
“必须用最前沿方案才叫创新” 组合现有技术解决新问题是更高阶的能力
“探索是工程师的个人行为” 脱离业务的探索,只是自嗨

在快手这种高速迭代的环境里,Deadline 是最好的老师。你没时间纠结“是不是最优解”,只能快速验证、快速反馈、快速调整。这种压力下练出来的技术判断力,比任何培训班都管用。


给正在求职的朋友们一点真心话

最近帮公司面试了不少候选人,很多人简历上写着“熟悉区块链”、“精通云原生”。但一问细节:“你们用的共识算法是什么?K8s 的 HPA 是怎么调的?” 就支支吾吾。

我想说:别为了求职而堆砌关键词。面试官真正想看的,是你如何思考、如何权衡、如何在资源有限的情况下把事情做成。

如果你真对某个技术感兴趣,不妨:

  • 找个小业务场景试一试(比如用 IPFS 存用户头像)
  • 在 GitHub 上写个 mini 项目,哪怕只有 200 行代码
  • 在团队内部做个 15 分钟的技术分享(我们组每周都有 Tech Talk)

这些经历,远比“精通XX”四个字更有说服力。


最后:技术人的浪漫,是让代码跑在真实的土地上

上周五加班到深夜,走出公司大楼,上海的晚风有点凉。我抬头看了看陆家嘴的灯火,突然想起六年前入职第一天——那时候连 K8s 是啥都不知道,现在却能在上面搭起一套“伪区块链”系统。

技术探索从来不是一场孤独的修行。它发生在你和产品经理吵架之后,发生在你被线上告警吵醒的凌晨,发生在你为了一个毫秒级优化反复压测的周末。

我们不是在追逐技术本身,而是在用技术,一点点把这个世界变得更可靠、更高效、更值得信任

所以,别问“为什么要探索”。
当你遇到一个让你睡不着觉的问题时,答案自然就来了。

(完)

P.S. 如果你也在上海搞云原生/高并发系统,欢迎约咖啡(速溶也行)聊聊~

评论 0

最热最新
暂无评论
♂高洋Lv.1
0
影响力
0
文章
0
粉丝