V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
FlashEcho
V2EX  ›  程序员

Serverless 里怎么处理需要建立长连接的外部资源?

  •  1
     
  •   FlashEcho · 7h 38m ago · 762 views

    最近在 Cloudflare Workers 上接外部 Redis / Valkey ,发现传统 Node 服务那套“建一个 Redis client 然后复用连接”的思路不太行

    Worker 会冷启动、冻结、恢复或回收,模块级 client 虽然能复用,但不像常驻进程里的连接池那么可靠。实际遇到的现象是:client 看起来 ready ,但 Redis 命令经常 timeout ,后续还会引发一些连带错误。尤其是从 cloudflare 阿姆斯特丹机房到 digital ocean 班加罗尔机房的连接质量差得离谱,已经超时到无法忍受了

    我现在的临时处理是:Serverless 侧不直接维护 Redis TCP 连接,改成通过 HTTP 访问 Redis ,把连接池放到更适合常驻运行的地方。现在从 cloudflare 全球机房,到 racknerd 洛杉矶机房的 redis 代理,到 digital ocean 旧金山机房里的真实 redis 。虽然绕路更多了,但是基本不超时了

    Worker -> HTTP -> Redis proxy -> Redis 但自建 Redis proxy 也挺麻烦,平台原生的 redis 资源又很贵

    想请教大家:Serverless / Edge Runtime 里访问 Redis 、数据库、MQ 这类需要连接的外部资源,大家一般是直接连、HTTP API / proxy ,还是尽量改用平台原生存储?这种情况下有没有什么最佳实践?

    9 replies    2026-05-09 18:17:36 +08:00
    tf2
        1
    tf2  
       7h 12m ago
    官方那个 Durable Object 啊
    FlashEcho
        2
    FlashEcho  
    OP
       5h 52m ago
    @tf2 #1 DO 更是贵的离谱,本来就是为了节约成本从 KV 迁到外部 redis ,这样成本反而会增加
    CupTools
        3
    CupTools  
       5h 9m ago via Android   ❤️ 1
    wudiiiii
        4
    wudiiiii  
       3h 51m ago
    我觉得直接连接比较好,传统服务中用连接池的意义是多个 http 请求打过来可以复用已建立的连接,但是在 serverless 中意义就不大了
    cryptovae
        5
    cryptovae  
       3h 21m ago
    有点本末倒置了,在 Serverless 中,直接就直连,甚至连连接池都不用,拿到链接直接访问,服务退出后释放连接就行,当然,量起来的时候肯定是通过 proxy 维护连接池的
    HanMeiM
        6
    HanMeiM  
       2h 56m ago
    量起来了还会用 Serverless 吗?
    Jiubia
        7
    Jiubia  
       2h 21m ago
    @cryptovae 是的,如果访问量不大的话建议直连,如果到了不得不使用连接池的地步时,那就不应该再使用 serverless 了
    或者你是有什么原因导致不得不使用 serverless ?
    当然,使用 http 来实现一个 redis pool 也是一个可行的方案,至少我就是这么做的 :)。主要我也没想到更好的方案了
    sujin190
        8
    sujin190  
       2h 9m ago
    网络可靠,短连接除了性能差一点,以及需要考虑端口回收有时间导致的连接数不够问题,区别不大吧

    网络不可靠的话,那解决网络不可靠的问题不就好了,vpn 、代理什么的加一层就是了,反正只是代理流量资源消耗也低,Serverless 拆出来放在 ecs 里就是了,搞个最低配的估计就足够了,也花不了多少钱,没必要啥都 Serverless 吧,或者云本来就是异地组网服务吧

    如果这样一个低配的 ecs 都嫌贵的话,你这 Serverless 量这么低确定用 Serverless 服务能省钱?不是直接 ecs 更省?
    FlashEcho
        9
    FlashEcho  
    OP
       1h 37m ago
    @sujin190 #8 为什么大量使用 Serverless ,因为我长期处于 Cloudflare 月付 5 刀甜点区中,计算存储各种东西加到都是每个月 5 刀

    当时刚订阅的时候感觉这资源简直是无限啊,怎么用得完。现在量起来了,进入了一个尴尬区,量既没有多到需要专门用一个传统的云服务商,全部迁走只会更贵

    现在只是在部分资源,比如 KV 存储这边用超了,于是就开始把部分资源从平台原生改成外部托管
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2886 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 47ms · UTC 11:55 · PVG 19:55 · LAX 04:55 · JFK 07:55
    ♥ Do have faith in what you're doing.