V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kaesi0
V2EX  ›  服务器

nodejs 后端项目如何部署?

  •  
  •   kaesi0 · 92 天前 · 1621 次点击
    这是一个创建于 92 天前的主题,其中的信息可能已经有所发展或是发生改变。

    使用 Midwayjs 开发的后端项目,包括 api 项目和管理项目,使用 mongoo 数据库,后续可能会使用 redis ,请问这种单进程的项目怎样部署会比较好呢?

    项目的特性决定了会有比较明显的流量潮汐,就是大部分时间流量不会很多,小部分时间流量会突然增多,但总体流量会持续增加这种。

    目前的困惑在于

    使用云服务器+pm2 的部署方案,可以很简单的实现均衡负载,可以根据云服务器核数灵活的决定 pm2 要 cluster 的数量,db 等可以和服务器装在一台云服务器。当流量增加时,可以增加云服务器核数和内存就行了。 但是感觉现在云服务器越来越贵,要实现灵活的增减配就只能买短时间,但是折扣就会很低。要买长时间的话,变更配置又要补很多差价。。。

    另外问下大佬们,你们通过代理最多能少几个点的折扣?

    另一种部署方案就是使用 Serverless ,麻烦的地方在于前期配置,比较麻烦。配置好了,只需要根据流量情况动态调整实例数量就好了,但是不清楚像 redis ,db 这些是需要另外云服务器来部署,还是买 云 db 或者去 redis 更方便。Serverless 另一个好处就是不像云服务器还要管理服务器的环境,软件版本,bug 修复,漏洞这些。

    对于这两种方法,希望有经验的大佬些能不吝赐教,感谢。希望是能在产品早期找到一个能持续增加,成本可控的方案。

    13 条回复    2024-09-21 16:49:48 +08:00
    gaobh
        1
    gaobh  
       92 天前
    某云最新活动有 2C4G 的 199 一年小项目够用了吧
    kaesi0
        2
    kaesi0  
    OP
       92 天前
    @gaobh 哪个云?请问
    gaobh
        3
    gaobh  
       92 天前
    @kaesi0 #2 良心云最新活动里
    crysislinux
        4
    crysislinux  
       92 天前 via Android
    应用容器话,持久存储的部分单独部署或者就用云厂商的
    kaesi0
        5
    kaesi0  
    OP
       92 天前
    @crysislinux 你是 db 和 redis 直接买云的
    crysislinux
        6
    crysislinux  
       92 天前 via Android
    @kaesi0 对啊,你自己另外搞个机器安装也行。
    Puteulanus
        7
    Puteulanus  
       92 天前
    Serverless 有不够灵活,第三方库可能不方便用,平台开始收割的话迁移成本高这些的问题。不过你全是 API 中转和一些无状态的增查删改的话,而且又有明显的流量潮汐,感觉确实适合 Serverless

    Serverless 一般有自己配套的数据储存方案,看用哪家的研究研究对应的

    如果你流量爆发的时间不多,第一种方案也可以用各家云按量服务器临时手动扩容,自己跑个服务在检测到负载高了的时候调云的 API 开一台按量的机器,把一部分流量匀过去,负载降了就自动删,这样一台长时间的便宜服务器常驻加上按量机器扛过高峰看划算不

    阿里云 k8s 好像有类似的,不过网关那些都要收费好像,规模小了可能没自己这样手动搞一套划算
    kaesi0
        8
    kaesi0  
    OP
       92 天前
    "自己跑个服务在检测到负载高了的时候调云的 API 开一台按量的机器,把一部分流量匀过去,负载降了就自动删"是需要有一台机器来做均衡负责么?请问要怎么把流量 匀过去呢?是走内网?
    element90
        9
    element90  
       92 天前
    serverless 仅适合那些诸如体量小,任务独立,冷启动,时延要求低的服务,更准确来说是一个个独立且容易隔离的任务,这些任务每个都可以成为单独的脚本工程来维护,而不是一个大项目工程。如果你目前已经开发出一套服务,就没必要再次迁移到 serverless 了。

    pm2 做负载均衡意味着你的服务是支持多进程无状态,所以可以在这个基础上挂个流量网关:nginx 或者 lb 服务配合一些脚本做弹性伸缩。
    element90
        10
    element90  
       92 天前
    我查了一下阿里云有直接容器云的服务,你索性就使用这种,用容器按需部署,这样既可以使用 serverless ,又不需要将每个服务接口单独构造 serverless 函数
    opengps
        11
    opengps  
       92 天前
    你这个用量少,好像可以用云函数,相关的产品不太熟,没法给你判断太多
    kaesi0
        12
    kaesi0  
    OP
       92 天前
    @opengps 云函数试过了,看起来简单,实现起来其实很麻烦最后就没用了
    kaesi0
        13
    kaesi0  
    OP
       92 天前
    @element90 感谢,也了解过这种,不过负载均衡搞不来。。。然后感觉容器云其实价格挺高的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2829 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 11:49 · PVG 19:49 · LAX 03:49 · JFK 06:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.