LanceDB + Amazon S3:亿级向量库方案
来源: InfoQ - 后端
最近,Cloudflare在Cloudflare Workers中实现了node:http客户端和服务器API",使开发者可以将现有的Node.js应用程序迁移到无服务器计算平台。这些HTTP API使Express.js、Koa.js等流行的Node.js框架能够在Workers上运行。
Cloudflare首席系统工程师Yagiz Nizipli"和James M Snell"写道:
这一重大更新将大家熟悉的Node.js HTTP接口带到了边缘,使人们能够在全球范围内部署现有的Express.js、Koa以及其他Node.js应用程序,实现零冷启动和自动扩展,并显著降低用户延迟——所有这些都不需要重写代码库。
为了支持HTTP客户端API,Cloudflare基于Workers使用的本地标准fetch() API重新实现了核心node:http API,保持了Node.js的兼容性,而又不会对性能产生明显的影响。该封装方法支持标准HTTP方法、请求和响应头、请求和响应体、流式响应和基本身份验证。
不过,该方法是托管的,无法支持Node.js API的子集。当前,它有一个限制(也是与标准Node.js环境的一个差异)是,虽然提供了Agent API,但是作为no-op,不支持尾部字符串、早期提示和1xx响应。此外,由于Workers自动处理TLS,所以不支持TLS特有的选项。
这一更新得到了社区的积极反馈",不过也有一些用户指出,这个功能早就应该引入了"。Himanshu Kumar在X上评论"道:
这为无服务器Node.js带来了激动人心的可能性。更平滑的过渡意味着更广泛的采用和更快速的创新。
由于Cloudflare Workers在无服务器环境中运行,不提供TCP直连,所有网络操作都由Workers运行时之外的服务管理,包括处理连接池、保持连接活跃状态和管理出站IP。Nizipli和Snell解释道:
服务器端实现是特别有趣的部分。由于Workers不能创建监听特定端口的传统TCP服务器,我们创建了一个桥接系统,将Node.js风格的服务器连接到Workers请求处理模型。
当开发者新建一个HTTP服务器并调用listen(port)时,不是打开一个TCP套接字,而是将服务器注册到Worker的一个内部表中,作为http.createServer执行和传入fetch请求(使用端口号作为标识符)之间的桥接。然后,开发者应使用httpServerHandler方法进行自动集成,或使用handleAsNodeRequest方法进行手动集成。
根据文档",当使用基于端口的路由时,作为路由键,端口号可用来确定哪个服务器处理请求,允许同一Worker中有多个服务器。
Cloudflare并不是唯一在其无服务器计算平台上提供Node.js的超大型提供商,AWS Lambda"、Google Cloud Run"和Azure Functions"也提供了Node.js运行时。
声明:本文为InfoQ翻译,未经许可禁止转载。
原文链接:
https://www.infoq.com/news/2025/09/cloudflare-node-http-workers/"