serverless 不适合单机需要对大批数据进行多核并行处理的业务?

2020-10-23 15:53:23 +08:00
 oneforallsoft
我的业务需要对几十万数据做报表, 从 db 里取出来, 然后分给 8 个 cpu 核心做运算,这样速度就能快,不然单核只能慢 8 倍. 这样的情况是不是不能 serverless? 因为目前 sls 单函数只最多给分配了 2 个核心
2677 次点击
所在节点    云计算
15 条回复
m939594960
2020-10-23 16:46:56 +08:00
函数工作流
janxin
2020-10-23 17:01:51 +08:00
是单个函数实例吧,你可以反复调用的。

不过还需要注意超时时间
oneforallsoft
2020-10-23 17:19:06 +08:00
这种场景用 lambda 太烦了 用 lambda 要达到单机 8 核的效果 只能把数据拆成 8 份
总共要 9 个 lambda 用户请求第一个 lambda 这个 lambda 调用另 8 个 lambda 每个都传输不同参数用来切割数据 等 8 个 lambda 所有数据都处理好返回给第一个 lambda 它再处理下再返回给用户 是不是太烦了?
oneforallsoft
2020-10-23 17:44:14 +08:00
哦 想到了另一种方案 就是普通的业务用 lambda 报表类型需要多核的 另外搞个 ec2 反正暴露出来的都是 url 验证可以用 jwt 这样是不是最好办法?
user8341
2020-10-23 17:46:04 +08:00
@oneforallsoft

那样估计会慢死,数据要在网络上传输好几遍。
stateman
2020-10-23 20:06:41 +08:00
感觉跟 serverless 相关性不高吧, 即使 EC2,cpu cores 也是有上限的,最大规格是 48Cpu core,96 vCpu,但数据量可能是无限增加的,而且很可能是几何级增减,如果翻了 100 倍,1000 倍,怎么解决呢?
@oneforallsoft
hq
2020-10-24 06:07:52 +08:00
其实个人觉得 serverless 带来的价值(比如按使用计费,事件触发,减少运维等)不应该跟 serverless 的计算能力挂钩,为什么 serverless 计算就只能小规格呢?只是从技术的角度(资源利用,弹性伸缩)目前提供大规格实例尚未成熟,但是需求是真实存在的,所以阿里云函数计算推出了性能型实例,最大 8 核 16GB,楼主可以试下: https://help.aliyun.com/document_detail/179379.html#title-mhb-tgy-0m9

但是即使有大规格实例,不管是服务器还是无服务器,是不是靠单机的高配置解决这个问题就好呢?我觉得能不拆还能达到业务目的最好,但是有时候需要考虑其它因素,比如中途失败带来的影响,就像打游戏只能一次通关不能保存进度一样,很不爽,白打了。你这个场景可能还好,有的场景需要拆分,又要对拆分后的任务保存进度,做状态管理,这些事情让 serverless faas 来做不合适,更好的做法是工作流协调函数,不好意思,再允许我推荐一下 Serverless 工作流服务,这里有篇文章介绍如何使用工作流和函数实现 MapReduce,https://developer.aliyun.com/article/741105

欢迎探讨,吐槽,加盟。
opengps
2020-10-24 08:30:06 +08:00
serverless 更多的出发点在于,随用随取。而不是爆发性质的一下子需求巨大功能
lihongming
2020-10-24 13:16:59 +08:00
serverless 并不只有 lambda,还有 fargate

lambda 适合简单业务,一般用作微服务特别合适。如果需要更高的单机性能,或者需要突破 lambda 的时间和空间限制,那可以考虑 fargate 。配置好自己的 docker image,然后以 serverless 的方式运行容器。

AWS 已经基本实现了一切皆 serverless,连关系型数据库都可以 serverless 的方式运行
oneforallsoft
2020-10-24 19:11:44 +08:00
@lihongming 大佬 求个 fargate 或 ecs 入门工具 你不会用 ecs-cli 命令行 吧?
oneforallsoft
2020-10-24 20:32:41 +08:00
@lihongming fargate 是不是不需要像 lambda 那样把所有代码都拆成一个个 function 如果 laravel 就可以像传统那样用 就是存储方面需要用 s3 而不是本地磁盘?
抱歉 小弟目前这方面很菜
lihongming
2020-10-25 01:00:42 +08:00
@oneforallsoft fargate 就是以 serverless 的方式运行 docker image,所以你只要会用 docker,就可以用 fargate,无非就是配置一下策略(保持几个实例运行,当空闲实例少于多少时增加,多于多少时减少之类的)

serverless 所有涉及持久化的存储都必须使用外部服务(数据库、S3 之类的),因为你的实例不会长期保存,运行完随时可能被销毁。
oneforallsoft
2020-10-25 08:17:07 +08:00
@lihongming 又想到 2 个问题
#fargate 配置好运行起来后 有个公网 ip 访问是能访问 但要不要和 load balancer 结合 是不是一定需要 load balancer 不然如果负载很大 起了很多个 instance 怎么保证他们使用同一个公网 ip?
#我需要更新代码时 怎么把 docker image 弄上去
oneforallsoft
2020-10-25 08:27:24 +08:00
#怎么更新代码找到了 就是点 service -> update 然后 选择新 task definition
oneforallsoft
2020-10-27 20:51:50 +08:00
@lihongming 大哥 能不能问下 你接客户业务怎么样 有没有很大的项目 或把项目提练出来变成产品

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/717893

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX