V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Recommended Services
Amazon Web Services
LeanCloud
New Relic
ClearDB
oneforallsoft
V2EX  ›  云计算

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

  •  
  •   oneforallsoft · 2020-10-23 15:53:23 +08:00 · 2759 次点击
    这是一个创建于 1503 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我的业务需要对几十万数据做报表, 从 db 里取出来, 然后分给 8 个 cpu 核心做运算,这样速度就能快,不然单核只能慢 8 倍. 这样的情况是不是不能 serverless? 因为目前 sls 单函数只最多给分配了 2 个核心
    15 条回复    2020-10-27 20:51:50 +08:00
    m939594960
        1
    m939594960  
       2020-10-23 16:46:56 +08:00
    函数工作流
    janxin
        2
    janxin  
       2020-10-23 17:01:51 +08:00
    是单个函数实例吧,你可以反复调用的。

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

    那样估计会慢死,数据要在网络上传输好几遍。
    stateman
        6
    stateman  
       2020-10-23 20:06:41 +08:00
    感觉跟 serverless 相关性不高吧, 即使 EC2,cpu cores 也是有上限的,最大规格是 48Cpu core,96 vCpu,但数据量可能是无限增加的,而且很可能是几何级增减,如果翻了 100 倍,1000 倍,怎么解决呢?
    @oneforallsoft
    hq
        7
    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
        8
    opengps  
       2020-10-24 08:30:06 +08:00
    serverless 更多的出发点在于,随用随取。而不是爆发性质的一下子需求巨大功能
    lihongming
        9
    lihongming  
       2020-10-24 13:16:59 +08:00 via iPhone
    serverless 并不只有 lambda,还有 fargate

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

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

    serverless 所有涉及持久化的存储都必须使用外部服务(数据库、S3 之类的),因为你的实例不会长期保存,运行完随时可能被销毁。
    oneforallsoft
        13
    oneforallsoft  
    OP
       2020-10-25 08:17:07 +08:00
    @lihongming 又想到 2 个问题
    #fargate 配置好运行起来后 有个公网 ip 访问是能访问 但要不要和 load balancer 结合 是不是一定需要 load balancer 不然如果负载很大 起了很多个 instance 怎么保证他们使用同一个公网 ip?
    #我需要更新代码时 怎么把 docker image 弄上去
    oneforallsoft
        14
    oneforallsoft  
    OP
       2020-10-25 08:27:24 +08:00
    #怎么更新代码找到了 就是点 service -> update 然后 选择新 task definition
    oneforallsoft
        15
    oneforallsoft  
    OP
       2020-10-27 20:51:50 +08:00 via Android
    @lihongming 大哥 能不能问下 你接客户业务怎么样 有没有很大的项目 或把项目提练出来变成产品
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5922 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 02:20 · PVG 10:20 · LAX 18:20 · JFK 21:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.