Cloudflare Workers和Containers现支持入站TCP连接及gRPC
内容提要
Cloudflare在Agents Week宣布,Workers和Containers现支持入站TCP连接及gRPC。新增connect()处理器,允许Worker直接接受TCP套接字,并支持双向gRPC通信。开发者可用gRPC-web编写代码,Cloudflare自动转换协议,无需容器即可在Workers上运行gRPC服务器或客户端,适用于低延迟语音AI等场景。目前处于私有测试阶段。
延伸解读
连接路径的灵活性
新增的connect()处理器允许Worker直接接受入站TCP套接字,并可将套接字传递给其他Worker、Durable Objects或容器。这种设计让开发者能够灵活控制TCP连接的路由,例如在Worker中实现负载均衡或协议转换,或将连接转发到容器中运行的自定义服务。这为构建复杂的网络应用提供了更多可能性。
gRPC与gRPC-web的自动转换
Cloudflare通过自动将gRPC转换为gRPC-web,使浏览器环境也能使用gRPC服务。开发者只需使用gRPC-web编写代码,Cloudflare负责协议转换,无需修改客户端或服务器。这降低了gRPC的使用门槛,并让现有gRPC服务能够无缝接入Cloudflare生态。
私有测试阶段的限制
目前这些新功能仍处于私有测试阶段,开发者需要申请才能使用。Cloudflare表示希望先与一小部分开发者合作,确保功能完善后再全面开放。这意味着当前功能可能不稳定,且API可能发生变化,开发者应谨慎评估在生产环境中使用的风险。
Q&A
Cloudflare Workers现在支持哪些新的入站连接类型?
Cloudflare Workers现在支持入站TCP连接和gRPC。通过新增的connect()处理器,Worker可以直接接受TCP套接字,并支持双向gRPC通信。
如何在Cloudflare Workers中使用connect()处理器接受TCP连接?
在Worker的默认导出中定义connect(socket)方法,该方法接收一个socket对象,可以对其进行读写操作。例如,可以写入数据或将其管道传输到其他Worker或Durable Object。
Cloudflare Containers如何支持双向gRPC?
通过将Worker接收的TCP socket转发到运行在容器中的gRPC服务器,实现双向gRPC通信。Worker可以使用connect()处理器获取socket,然后将其连接到容器的TCP端口,从而在客户端和容器中的gRPC服务器之间建立全双工通信。
Workers如何作为gRPC服务器运行,而不需要容器?
Workers可以使用gRPC-web协议编写代码,Cloudflare会自动将入站gRPC转换为gRPC-web,将出站gRPC-web转换为gRPC。开发者可以使用@connectrpc/connect包,基于protobuf定义文件快速实现gRPC服务器。
gRPC-web与gRPC有什么区别?为什么需要转换?
gRPC-web是gRPC的浏览器兼容版本,因为浏览器不提供HTTP/2的底层控制能力,也没有原始TCP Socket API。Cloudflare在Workers中自动进行gRPC与gRPC-web之间的转换,使客户端和服务器无需修改即可通信。
Cloudflare Workers支持gRPC的哪些流式模式?
Workers支持一元(unary)和服务器流式(server-streaming)gRPC API,并且可以调用gRPC服务器。对于双向流式,需要结合Cloudflare Containers实现。
Cloudflare Workers的gRPC功能目前处于什么阶段?如何获取访问权限?
目前处于私有测试阶段,开发者可以通过Cloudflare官网的注册页面申请加入。