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

一个Go开发者的倔强:没有现成方案,就自己造轮子

0
分享至

当你在Go里做LLM流式输出,用户刷新页面、网络抖动、负载均衡切实例——流直接断了。后端还在烧token,前端一片黑。JS生态有Vercel的resumable-stream、Ably的整套方案,Go呢?一片空白。

这是gtoxlili(GitHub用户名)的真实困境。他没等社区,两周内撸了一个叫streamhub的开源库。两个Redis原语,解决跨进程、可恢复、带熔断的流式传输。


为什么这事值得关注?

不是技术多复杂,是需求被系统性忽视。Go在AI基础设施层存在感极强——向量数据库、推理网关、模型服务编排,大量团队用Go写核心链路。但流式交互这一环,生态明显断层。

streamhub的代码量极小,设计却精准踩中三个痛点:进程解耦、断点续传、竞态防护。我们拆解一下这套方案的逻辑。

问题场景:流式输出的"幽灵token"

LLM流式输出通常走SSE(Server-Sent Events,服务器发送事件)。用户提问,服务端逐字推送,前端实时渲染。体验很丝滑,直到出问题:

用户手滑刷新——流断了,重新请求,后端从头生成,之前烧的token全浪费。

网络闪断3秒——TCP连接重置,负载均衡把新请求打到另一台实例,原实例还在跑推理,客户端收不到。

手机锁屏再打开——WebSocket或SSE超时,用户回来只看到"加载中"。

gtoxlili的项目里,LLM worker和HTTP handler是不同进程。这意味着即使HTTP层重连,也可能连到没有上下文的新实例。他需要一个"流的中转站"——生成过程继续跑,但输出能被任意消费者随时订阅。

方案核心:两个Redis原语+ fencing token

streamhub的API极简。生产者注册一个流,拿到generation ID作为fencing token(防护令牌):

「如果旧生产者丢失所有权后仍尝试写入,请求会被拒绝。」

这个设计很关键。分布式场景下,网络分区或实例宕机后,僵尸进程可能继续往Redis写数据。fencing token确保只有当前合法生产者能推进流。

消费者侧更直接:通过同一个ID订阅,先回放已生成的历史块,再无缝衔接实时流。代码里叫"replay-then-live handoff(回放-实时切换)",解决的就是刷新页面后的"我从哪看起"问题。

取消操作也做成了全局可达:任意进程、任意实例,拿到流ID就能触发Cancel,通知生产者停止生成。这对token成本控制是刚需——用户关闭页面后,后端推理没必要跑完。

为什么不直接用现成的?

gtoxlili在README里预判了三个质疑,回应很务实:

Redis Streams原生?可以,但你要自己实现订阅者扇出(一个流多个消费者)、回放-实时切换、generation fencing、取消信号通道。streamhub就是把这些胶水代码标准化了。

Centrifuge/Centrifugo?项目很棒,但是完整实时消息框架。如果你只是想让LLM流可恢复,引入整个中间件栈太重。

Vercel的resumable-stream?TypeScript限定,和Vercel AI SDK深度耦合。Go项目用不了。

这个对比揭示了一个现象:AI工程的工具链正在分层固化。应用层(Next.js/Vercel)方案丰富,基础设施层(Go/Rust)大量重复造轮子。不是没人需要,是需求分散在各家公司的私有代码库里。

技术选型背后的组织信号

streamhub用Redis做后端,而不是Kafka或Pulsar,这个选择有讲究。

LLM流的特征是:单流数据量小(文本token)、生命周期短(单次对话)、延迟敏感(百毫秒级)、需要随机读取(从中间位置订阅)。Redis的内存模型和Pub/Sub语义刚好匹配。Kafka的持久化日志、分区消费模型,对这种场景是过度设计。

另一个细节:hub.Register的回调函数只在"有人取消"时触发,而不是每个消费者断开都通知。这区分了"用户主动结束"和"网络瞬断",避免误杀正在进行的生成。

这些设计没有写在任何论文里,是工程现场长出来的经验。gtoxlili的代码注释很少,但API命名很准——Register/Get/Subscribe/Cancel,四个动词覆盖完整生命周期。

开源社区的"补丁式创新"

streamhub目前处于早期阶段,作者明确说API可能变动。但这种"我先解决自己的问题,顺便开源"的模式,正在成为AI基础设施的重要补充。

对比JS生态:Vercel的resumable-stream有完整团队维护,文档、示例、生态整合齐全。Go这边,streamhub是一个人的周末项目,代码不到500行,依赖只有go-redis。

这不是劣势,是不同阶段的生态特征。AI工程还在快速迭代,太多需求等不及基金会级别的方案。小而准的工具,反而能更快嵌入生产链路。

gtoxlili在文末留了GitHub仓库求反馈。这种姿态也很典型——不是"我造了个框架你们用",是"有人遇到同样问题吗,一起打磨"。

对Go AI生态的启示

这件事暴露了一个空白地带:AI推理的"最后一公里"交互,Go社区缺乏共识方案。

模型服务本身,Go有成熟框架(如Triton的Go客户端、vLLM的gRPC接口)。但流式输出的可靠性——断线重连、跨实例状态共享、token级取消——每家自己实现。

streamhub的价值不在于技术深度,在于定义了问题边界。它把"可恢复的LLM流"拆解为四个可组合的操作:注册、订阅、发布、取消。后续如果有更完整的方案,大概率沿用这套语义。

另一个观察:Redis作为"AI系统的共享内存"角色在强化。从缓存、队列到流中转,Redis的部署基数让它成为事实标准。streamhub进一步验证了这个路径——不需要新基础设施,用现有组件组装出新能力。

下一步会怎么走?

如果streamhub获得采用,几个演进方向可以预见:

多后端支持——目前硬编码Redis,但接口可以抽象为"流存储",支持NATS、NATS Streaming、甚至S3(冷流归档)。

观测能力——流延迟、重连次数、token浪费比例,这些指标对LLM成本优化很关键。

与推理框架集成——如直接嵌入vLLM或TGI的HTTP层,作为可选中间件。

但这些都依赖真实场景打磨。gtoxlili的项目目前只有基础实现,测试覆盖、性能基准、生产案例都待补充。

为什么这事值得跟踪

streamhub是一个信号:AI工程正在从"能用"走向"好用",可靠性成为新战场。

早期LLM应用拼的是模型接入、提示工程。现在用户规模上来,网络抖动、实例故障、成本控制变成日常问题。这些不是模型能力,是工程能力。

Go在AI基础设施层的份额在涨。向量数据库Qdrant、Milvus的后端都有Go代码;很多公司的模型网关、推理调度用Go写。streamhub这类工具的出现,说明生态正在自我补全。

对开发者来说,这也是个样本:遇到生态缺口,评估工作量后动手造轮子,比等社区成熟更高效。gtoxlili的README没有"愿景"或"路线图",只有问题描述、解决方案、对比分析——这种务实风格,在AI工程领域反而稀缺。

最后留个开放问题:你的LLM服务是怎么处理流中断的?如果也在用Go,是自建方案、改JS方案,还是干脆忍受偶尔的体验损耗?

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

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.

相关推荐
热点推荐
梧州医学高等专科学校副校长邱铁钢病逝,年仅43岁

梧州医学高等专科学校副校长邱铁钢病逝,年仅43岁

澎湃新闻
2026-04-15 09:32:27
郑丽文和家人的一张合影,时间是1971年,地点是眷村。

郑丽文和家人的一张合影,时间是1971年,地点是眷村。

叶老四
2026-04-15 09:44:36
追梦:伦纳德太强没人能单防,我仿佛看到七年前总决赛时的他

追梦:伦纳德太强没人能单防,我仿佛看到七年前总决赛时的他

懂球帝
2026-04-15 12:14:32
马斯克:西方不搞电车,欧日韩集体拥抱氢能,中国电动车错了没?

马斯克:西方不搞电车,欧日韩集体拥抱氢能,中国电动车错了没?

小怪吃美食
2026-04-15 04:01:33
认罪不到24小时,许家印过往被扒,倒霉的3个女人只是冰山一角

认罪不到24小时,许家印过往被扒,倒霉的3个女人只是冰山一角

李橑在北漂
2026-04-15 11:17:14
暴跌!价格几乎腰斩!一女子连吃两天,剧烈腹痛胃底被堵死!很多人爱吃

暴跌!价格几乎腰斩!一女子连吃两天,剧烈腹痛胃底被堵死!很多人爱吃

南方都市报
2026-04-13 16:44:33
潜伏在中国高层的大间谍,遍布军界政界,简直令人唏嘘

潜伏在中国高层的大间谍,遍布军界政界,简直令人唏嘘

咸説历史
2026-04-14 14:21:44
若中国挖出世界第一大油田,全球格局一夜变天!复兴之路谁能挡?

若中国挖出世界第一大油田,全球格局一夜变天!复兴之路谁能挡?

几人尽弃
2026-04-14 08:36:22
有人预测:2026年5月即将迎来四大变化,普通人该如何应对?

有人预测:2026年5月即将迎来四大变化,普通人该如何应对?

老特有话说
2026-04-12 16:11:59
39岁前国脚现状:定居美国踢野球,早已财富自由,有2个可爱女儿

39岁前国脚现状:定居美国踢野球,早已财富自由,有2个可爱女儿

揽星河的笔记
2026-04-14 15:18:30
随着开拓者4分险胜,黄蜂绝杀!西部季后赛7号种子出炉,热火出局

随着开拓者4分险胜,黄蜂绝杀!西部季后赛7号种子出炉,热火出局

薇说体育
2026-04-15 15:38:35
四连胜!广东男篮季后赛对手基本敲定!徐杰崔永熙赛后霸气摊牌

四连胜!广东男篮季后赛对手基本敲定!徐杰崔永熙赛后霸气摊牌

大国侃球
2026-04-15 12:14:24
一瓶“宋柚汁”柚汁占比仅有2.7%、宋柚只是商标?创始人出镜澄清:这是香柚的黄金配比!

一瓶“宋柚汁”柚汁占比仅有2.7%、宋柚只是商标?创始人出镜澄清:这是香柚的黄金配比!

北青网-北京青年报
2026-04-15 11:28:05
日本全面叫停种植牙?种牙潜藏的风险与后遗症,一次为你讲明白

日本全面叫停种植牙?种牙潜藏的风险与后遗症,一次为你讲明白

垚垚分享健康
2026-04-11 08:51:57
从周一见到周一不见:文章面馆闭店日冲上热搜,有些事永远过不去

从周一见到周一不见:文章面馆闭店日冲上热搜,有些事永远过不去

非常先生看娱乐
2026-04-15 10:38:10
全网都在寻这辆沪牌车!原以为它是出车祸,开近才发现是真英雄

全网都在寻这辆沪牌车!原以为它是出车祸,开近才发现是真英雄

上观新闻
2026-04-15 13:34:04
建设方急用钱,他花85万元买5套“工抵房”,领钥匙装修时开发商称多支付工程款不给交房

建设方急用钱,他花85万元买5套“工抵房”,领钥匙装修时开发商称多支付工程款不给交房

大风新闻
2026-04-15 11:36:05
中方已做最坏准备,一旦中美爆发战争,中国三大底牌一个比一个狠

中方已做最坏准备,一旦中美爆发战争,中国三大底牌一个比一个狠

草莓信箱
2026-04-14 09:10:54
字字扎心!王晓晨发文内涵俞灏明,多年付出全被嫌弃,根本看不上

字字扎心!王晓晨发文内涵俞灏明,多年付出全被嫌弃,根本看不上

翰飞观事
2026-04-14 22:16:41
刘淑慧任东华大学党委书记

刘淑慧任东华大学党委书记

界面新闻
2026-04-15 15:05:07
2026-04-15 15:48:49
像素与芯片
像素与芯片
有态度网友ytd
2372文章数 13关注度
往期回顾 全部

科技要闻

手机无死角上网?亚马逊砸百亿硬刚马斯克

头条要闻

浙江61岁男子持长矛杀邻居后自首 被判死刑立即执行

头条要闻

浙江61岁男子持长矛杀邻居后自首 被判死刑立即执行

体育要闻

三球准绝杀戴大金链:轰30+10自我救赎

娱乐要闻

曾志伟办73岁生日派对,逾百艺人到场

财经要闻

业绩失速的Lululemon:"健康"人设崩塌?

汽车要闻

海豹08内饰首秀 大满配“海王”旗舰

态度原创

时尚
教育
健康
手机
公开课

比性缘脑更可怕的东西,出现了

教育要闻

民办前五,成绩靠谱,吃好住好,分数不高,今年冲他!

干细胞抗衰4大误区,90%的人都中招

手机要闻

全球首条!维信诺无FMM第8.6代AMOLED产线设备搬入

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版