使用 Midwayjs 开发的后端项目,包括 api 项目和管理项目,使用 mongoo 数据库,后续可能会使用 redis ,请问这种单进程的项目怎样部署会比较好呢?
项目的特性决定了会有比较明显的流量潮汐,就是大部分时间流量不会很多,小部分时间流量会突然增多,但总体流量会持续增加这种。
目前的困惑在于
使用云服务器+pm2 的部署方案,可以很简单的实现均衡负载,可以根据云服务器核数灵活的决定 pm2 要 cluster 的数量,db 等可以和服务器装在一台云服务器。当流量增加时,可以增加云服务器核数和内存就行了。 但是感觉现在云服务器越来越贵,要实现灵活的增减配就只能买短时间,但是折扣就会很低。要买长时间的话,变更配置又要补很多差价。。。
另外问下大佬们,你们通过代理最多能少几个点的折扣?
另一种部署方案就是使用 Serverless ,麻烦的地方在于前期配置,比较麻烦。配置好了,只需要根据流量情况动态调整实例数量就好了,但是不清楚像 redis ,db 这些是需要另外云服务器来部署,还是买 云 db 或者去 redis 更方便。Serverless 另一个好处就是不像云服务器还要管理服务器的环境,软件版本,bug 修复,漏洞这些。
对于这两种方法,希望有经验的大佬些能不吝赐教,感谢。希望是能在产品早期找到一个能持续增加,成本可控的方案。
1
gaobh 93 天前
某云最新活动有 2C4G 的 199 一年小项目够用了吧
|
4
crysislinux 93 天前 via Android
应用容器话,持久存储的部分单独部署或者就用云厂商的
|
5
kaesi0 OP @crysislinux 你是 db 和 redis 直接买云的
|
6
crysislinux 93 天前 via Android
@kaesi0 对啊,你自己另外搞个机器安装也行。
|
7
Puteulanus 93 天前
Serverless 有不够灵活,第三方库可能不方便用,平台开始收割的话迁移成本高这些的问题。不过你全是 API 中转和一些无状态的增查删改的话,而且又有明显的流量潮汐,感觉确实适合 Serverless
Serverless 一般有自己配套的数据储存方案,看用哪家的研究研究对应的 如果你流量爆发的时间不多,第一种方案也可以用各家云按量服务器临时手动扩容,自己跑个服务在检测到负载高了的时候调云的 API 开一台按量的机器,把一部分流量匀过去,负载降了就自动删,这样一台长时间的便宜服务器常驻加上按量机器扛过高峰看划算不 阿里云 k8s 好像有类似的,不过网关那些都要收费好像,规模小了可能没自己这样手动搞一套划算 |
8
kaesi0 OP "自己跑个服务在检测到负载高了的时候调云的 API 开一台按量的机器,把一部分流量匀过去,负载降了就自动删"是需要有一台机器来做均衡负责么?请问要怎么把流量 匀过去呢?是走内网?
|
9
element90 93 天前
serverless 仅适合那些诸如体量小,任务独立,冷启动,时延要求低的服务,更准确来说是一个个独立且容易隔离的任务,这些任务每个都可以成为单独的脚本工程来维护,而不是一个大项目工程。如果你目前已经开发出一套服务,就没必要再次迁移到 serverless 了。
pm2 做负载均衡意味着你的服务是支持多进程无状态,所以可以在这个基础上挂个流量网关:nginx 或者 lb 服务配合一些脚本做弹性伸缩。 |
10
element90 93 天前
我查了一下阿里云有直接容器云的服务,你索性就使用这种,用容器按需部署,这样既可以使用 serverless ,又不需要将每个服务接口单独构造 serverless 函数
|
11
opengps 93 天前
你这个用量少,好像可以用云函数,相关的产品不太熟,没法给你判断太多
|