网易首页 > 网易号 > 正文 申请入驻

后端不是40个库是8个原语:一个框架把136个接缝砍到48个

0
分享至

一个后端系统到底需要多少东西?路由、请求校验、认证、限流、后台任务、定时任务、发布订阅、缓存、缓存失效、密钥管理、重试、死信处理、可观测性、API文档、给前端用的类型化客户端、Docker配置……数下来大概四十项。

每一项通常对应一个独立的库,每个库有自己的心智模型、自己的失败模式、自己的报错方式——或者干脆不报错。真正的成本不在"40个库"本身,而在它们之间的接缝:认证中间件不知道队列消费者的上下文,定时任务不知道HTTP校验层对坏请求做了什么,你手动接的缓存失效逻辑六个月后就忘了。


作者自己数过,用约40个独立关注点拼一个朴素技术栈,会产生大约136个接缝——两套系统需要就某件事达成一致,却没有任何机制保证它们真的会一致。

okengine的赌注:这40个关注点大部分不是独立的

它们其实是八种原语穿了不同的衣服。与其为每个库建模,不如为原语建模。在okengine自己的架构里,接缝数从136掉到了48个——因为过去"两个系统靠约定达成契约"的地方,变成了"一条声明,编译器来检查"。

这个说法够具体,可以直接拿元素清单来验证。下面看两个实际例子。

端点、定时任务、队列消费者:同一个想法穿了三件戏服

大多数框架给每种场景一套不同的API:app.get()给路由,某个调度库给定时任务,队列客户端带着自己的连接/确认/重试词汇表给消费者。结果是你得学三套测试策略、三种看堆栈的方式、三种输入校验方法——而底下问的是同一个问题:"给定这个输入,当这件事发生时,做这个,以及这里可能出什么错。"

okengine的答案是:只有一种形状,叫Flow,变的只是触发器。

export const createOrder = on(http.post("/orders"),flow("orders.create", {in: z.object({ sku: z.string(), qty: z.number().int().min(1) }),out: z.object({ id: z.string() }),errors: { OutOfStock: z.object({ left: z.number() }) },do: async (input, fx) => {const id = fx.id();await fx.store(db).insert(orders).values({ id, ...input, status: "pending" });return { id };},}),

http.post("/orders")换成every("1h")(定时任务),或者换成另一个Flow发出的事件,或者数据库某行发生变化——右边的flow(...)形状完全不变。in/out是运行时检查的契约(Standard Schema标准,兼容Zod、Valibot等),不只是编译期类型,所以"请求看起来像……"这类问题在运行时就被拦住了。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
CCTV5直播,中国女篮PK美国女篮,宫鲁鸣三大调整,心气不能输!

CCTV5直播,中国女篮PK美国女篮,宫鲁鸣三大调整,心气不能输!

体坛小快灵
2026-08-24 10:15:01
7元成本竟卖到598元!千万别再买,有患者用完后身体出现明显异常,最新确认:涉事企业被罚3.8亿元,责任人被追究刑责

7元成本竟卖到598元!千万别再买,有患者用完后身体出现明显异常,最新确认:涉事企业被罚3.8亿元,责任人被追究刑责

山东经济广播
2026-08-23 13:09:14
美债已破40万亿,美财长拼命救市,回头发现,华尔街都在抢熊猫债

美债已破40万亿,美财长拼命救市,回头发现,华尔街都在抢熊猫债

坠入二次元的海洋
2026-08-24 07:13:09
比“赌博”还要可怕,6亿人深陷其中,父母血汗钱被年轻人掏空

比“赌博”还要可怕,6亿人深陷其中,父母血汗钱被年轻人掏空

小鹿姐姐情感说
2026-08-23 01:59:44
胖东来“高颜值员工”爆火!网友:收银、打包的都是顶级美女,是实打实的高薪,自然吸引来的

胖东来“高颜值员工”爆火!网友:收银、打包的都是顶级美女,是实打实的高薪,自然吸引来的

火山詩话
2026-08-20 07:38:37
西媒:为保护阿尔瓦雷斯,马竞方面建议他赛后直接离场

西媒:为保护阿尔瓦雷斯,马竞方面建议他赛后直接离场

懂球帝
2026-08-24 02:10:42
足坛疯狂一夜:巴萨制造惨案,巴黎让二追二,利物浦丢分,米兰2-1险胜

足坛疯狂一夜:巴萨制造惨案,巴黎让二追二,利物浦丢分,米兰2-1险胜

足球狗说
2026-08-24 05:44:07
“旅客买票占座放零食”确实不可能,妈妈买了票不上车可以,但这个座位上不能放零食

“旅客买票占座放零食”确实不可能,妈妈买了票不上车可以,但这个座位上不能放零食

法律学堂
2026-08-23 11:46:25
终于知道为啥中国人没有蓄须的习惯了!评论区剖析一针见血,太精辟

终于知道为啥中国人没有蓄须的习惯了!评论区剖析一针见血,太精辟

夜深爱杂谈
2026-08-15 21:16:22
赢麻了!5年2亿!5年1.8亿!史上最强双胞胎兄弟

赢麻了!5年2亿!5年1.8亿!史上最强双胞胎兄弟

篮球实战宝典
2026-08-09 17:55:05
微软揭《三维弹球》删除内幕:代码无人能懂,修复需数天

微软揭《三维弹球》删除内幕:代码无人能懂,修复需数天

像素与芯片
2026-08-22 20:32:10
高志凯就是高志凯,一个“鱼塘”比喻,把澳媒主持人的脸打肿了

高志凯就是高志凯,一个“鱼塘”比喻,把澳媒主持人的脸打肿了

大道微言
2026-07-17 16:36:27
重磅集结!央视拿下五大联赛全部版权,球迷不用来回切换 APP

重磅集结!央视拿下五大联赛全部版权,球迷不用来回切换 APP

体育全天候
2026-08-23 16:59:33
这两个强国,真到了战争的边缘

这两个强国,真到了战争的边缘

牛弹琴
2026-08-22 08:31:12
俄军跟解放军的差距在哪?就这么说吧,假设换成解放军来打这场俄乌冲突,这场仗根本拖不了4年之久,甚至阵地战都不会有

俄军跟解放军的差距在哪?就这么说吧,假设换成解放军来打这场俄乌冲突,这场仗根本拖不了4年之久,甚至阵地战都不会有

扶苏聊历史
2026-08-21 16:03:55
全球首例!51岁男子双大腿被机器绞断离体近3小时后送医,苏州医疗团队8小时手术成功接回,术后20个月已能借助助行器站立行走

全球首例!51岁男子双大腿被机器绞断离体近3小时后送医,苏州医疗团队8小时手术成功接回,术后20个月已能借助助行器站立行走

三湘都市报
2026-08-20 20:54:27
发现中国一个奇怪的现象:只要有公婆帮扶的家庭,儿媳都忙着回公婆家;而公婆不帮的家庭,儿媳早已断联!

发现中国一个奇怪的现象:只要有公婆帮扶的家庭,儿媳都忙着回公婆家;而公婆不帮的家庭,儿媳早已断联!

心理观察局
2026-08-01 07:10:30
官宣!23岁郑钦文无缘最后一张外卡 出战美网资格赛 3连胜进正赛

官宣!23岁郑钦文无缘最后一张外卡 出战美网资格赛 3连胜进正赛

念洲
2026-08-23 08:55:52
香港著名演员新片惨败,上映多时票房只有2600元,5000万成本打水漂了

香港著名演员新片惨败,上映多时票房只有2600元,5000万成本打水漂了

影视高原说
2026-08-21 14:29:53
美媒:世界欠中国一声感谢,印度更像个令人恶心的搅屎棍

美媒:世界欠中国一声感谢,印度更像个令人恶心的搅屎棍

梦想的现实
2026-06-20 15:45:40
2026-08-24 12:16:49
野生运营
野生运营
懂点产品,懂点AI,正在努力给平淡日子搞点新花样。
202文章数 86关注度
往期回顾 全部

科技要闻

“捂脸跑”机器人火出圈,它自己想出来的

头条要闻

特朗普嘲笑:伊朗是世界上唯一一个没人想当总统的国家

头条要闻

特朗普嘲笑:伊朗是世界上唯一一个没人想当总统的国家

体育要闻

46岁小罗复出,为什么选了一支意丙球队?

娱乐要闻

张韶涵演唱会突发不适,本人发文道歉

财经要闻

泡泡玛特,最大的问题才刚显现

汽车要闻

智能超混 国民家轿 上汽大众ID. ERA 5S上市 限时8.99万元起

态度原创

时尚
本地
家居
数码
军事航空

夏天别总穿白色T恤,试试这几款衬衫,配裤子裙子都显气质

本地新闻

《牛来》的一声“妈妈”,到底多少人被精神污染了

家居要闻

2026建博会(广州) 公装联探展交流活动

数码要闻

OneOdio推Fusion A70 Gen 2无线监听耳机,国行低至288.15元

军事要闻

美国与以色列发生“罕见冲突”

无障碍浏览 进入关怀版