写点什么

了解一下 SSE

作者:袁世超
  • 2024-04-10
    北京
  • 本文字数:505 字

    阅读完需:约 2 分钟

SSE (Server-Sent Events) ,一项由 Opera 浏览器在 2006 年实现的“老”技术,由于 ChatGPT 的火爆又出现在大家的视野中。


SSE 是什么?

早在 2017 年,阮一峰老师就写个一篇《Server-Sent Events 教程》,简单总结一下。


  • SSE 基于 HTTP 协议,其 Content-Type 为 text/event-stream,Transfer-Encoding 为 chunked。

  • 与 WebSocket 协议不同的是,SSE 是单向的,只能由 Server 不断向 Browser 推送事件。

  • 事件的内容是文本的,而且格式也很简单,用换行分割的 key: value。


用 WireShark 抓个包,一目了然


流式 RPC

这跟 gRPC 的 server streaming 的通信模式很像,两者结合在一起就是 LLM 的最佳玩法儿。


最近参加了一个 CloudWeGo 的 meetup,了解到 kitex 在 thrift 协议上也实现了 streaming 通信模式,实现方式也是基于 HTTP2,只是将 Protobuf 序列化换成了 thrift 序列化,由于 HTTP2 的 stream 过于复杂,CloudWeGo 社区还在开发基于自研协议的 TTHeader 的 streaming。

Demo

用 hertz 和 kitex 写了个小 demo



由于 Golang 有协程,业务逻辑写起来很简单明了。


这要是换成 Java 的线程,吞吐量肯定很受限制,改成异步回调又会增加理解成本。好在 Java 21 有虚拟线程了,不至于让 Java 在 LLM 工程领域落后太多。


发布于: 刚刚阅读数: 11
用户头像

袁世超

关注

还未添加个人签名 2017-11-30 加入

还未添加个人简介

评论

发布
暂无评论
了解一下 SSE_stream_袁世超_InfoQ写作社区