服务端与接口设计
接口怎么切、错误怎么返回、幂等怎么保证。做久了会发现,大部分线上问题在接口定义那一刻就已经埋下了。
河北人,做后端与工程化的事,也写一些关于工具、阅读和日常的笔记。 这里放我的长期项目、一些想法,以及能公开的部分记录。
一点背景,和现在在做的事
我叫杨艳凯。写代码的年头不算短,从最早折腾博客模板开始,慢慢把兴趣做成了职业。现在主要做服务端方向的工作:接口设计、数据流转、部署与监控,以及把重复的事交给脚本。
我更愿意把时间花在「让东西跑得久」上,而不是「让东西跑起来」。一个能安稳跑三年的服务,比一个两周写完但每周都要救火的系统更让人踏实。所以我的笔记里,关于稳定性、日志、边界条件的内容会多一些。
工作之外,我读得比较杂,历史、技术史、一些小说都看。也喜欢整理东西——旧照片、剪藏的文章、硬盘里散落多年的文件。整理本身对我来说是一种放松。
四条主线,都是我反复回到的题目
接口怎么切、错误怎么返回、幂等怎么保证。做久了会发现,大部分线上问题在接口定义那一刻就已经埋下了。
从采集到入库到出报表,中间每一步都会丢信息。我习惯把每一步都留痕,出问题时有据可查。
能自动化的就不手动做第二遍。构建、部署、巡检、备份,这些事写一次脚本可以省下很多个深夜。
读完不写等于没读。把学到的东西用自己的话讲清楚,是我检验理解程度的唯一标准。
按时间倒序,挑了一些能说清楚的
用 Markdown 加纯文本索引重做了一遍笔记库,去掉了所有在线依赖。检索靠脚本,备份靠定时任务,反而比之前更顺手。
从最初的单文件脚本,拆成了配置、采集、清洗、落库四层。改动前后各跑了两周对照,数据完全对齐才敢切换。
从早期操作系统一路读到分布式系统,最大的收获是发现今天吵的问题,二十年前就吵过一轮,结论往往没那么绝对。
翻出十多年前的代码和照片,重新归档了一遍。有些当年觉得过不去的坎,现在看只是一行写错的判断。
一些偏长的段落,不定期更新
《关于「够用」的工程判断》。我们总是被要求做更多:更多功能、更高并发、更快上线。但真正难的是判断哪里该停。我在几个项目里都吃过「加得太早」的亏——为还没出现的流量做了分库,为还没发生的问题加了中间件,结果维护成本先到了,收益一直没到。
《日志是写给未来的自己》。我见过太多只写「操作失败」的日志,三个月后连作者本人都说不清当时发生了什么。一条好的日志至少要说清三件事:谁在做、在做什么、卡在哪。写下这三件事的成本不到一分钟,省下的排查时间可能是几个小时。
《别急着优化》。性能问题里,我以为的瓶颈和实际的瓶颈,大概只有一半对得上。所以后来我养成一个习惯:先量,再猜;先看数据,再动手。这个习惯帮我躲掉了不少无谓的重构。
把事做完,把事讲清,把事留给下一个接手的人。
—— 我对「专业」的理解
技术交流、内容指正都欢迎