前言概述
1.1 DEMO 概述
-
DEMO 示例效果入口: http://sz.mofangdegisn.cn
-
DEMO 示例工程地址: https://github.com/awesome-fc/cat-dog-classify
开通服务
免费开通文件存储服务NAS, 按量付费
1.2 解决方案
1.3. Serverless 方案与传统自建服务方案对比
1.3.1 卓越的工程效率
1.3.2 弹性伸缩免运维
1.3.3 更低的成本
-
具有明显波峰波谷的用户访问场景(比如只有部分时间段有请求,其他时间甚至没有请求),选择按需付费,只需为实际使用的计算资源付费。
由上图预估出如下计费模型:
-
ECS 计算型 C5 (2vcpu,4GB)+云盘: 包月219 元,按量: 446.4 元
-
包月10 Mbps 的 SLB: 526.52 元(这里做了一定的流量假设), 弹性伸缩免费
-
饱和使用下,函数计算按量付费的一台机器成本约为按量付费 C5 ECS 的2 倍
注:
-
这里假设函数逻辑没有公网公网下行流量费用, 即使有也是一致的, 这里成本比较暂不参与
-
延时敏感,当 cpu 利用率大于等于 50% 就需要开始进行扩容,不然更来不及应对峰值
-
成本敏感,当 cpu 利用率大约 80% 即开始进行扩容, 能容受一定几率的超时或者5XX
1.3.4. 小结
-
上手简单, 只专注业务逻辑开发, 极大提高工程开发效率。
-
请求访问具有明显波峰波谷, 其他时间甚至没有请求
-
有一定稳定的负载请求, 但是有部分时间段请求量突变剧烈
FUN 操作简明视频教程
开通服务
免费开通文件存储服务NAS, 按量付费
2.1 安装第三方包到本地并上传到NAS
2.1.1 安装最新的Fun
-
安装版本为8.x 最新版或者10.x 、12.x nodejs
-
安装 funcraf
2.1.2 Clone 工程 & Fun 一键安装第三方库到本地
-
git clone https://github.com/awesome-fc/cat-dog-classify.git
-
执行 fun install -v, fun 会根据 Funfile 中定义的逻辑安装相关的依赖包
root@66fb3ad27a4c: ls .fun/nas/auto-default/classify model python root@66fb3ad27a4c: du -sm .fun 697 .fun
根据 Funfile 的定义:
-
将第三方库下载到 .fun/nas/auto-default/classify/python 目录下
-
本地 model 目录移到 .fun/nas/auto-default/model 目录下
fun nas init fun nas info fun nas sync fun nas ls nas://classify:/mnt/auto/
-
fun nas info: 可以查看本地 NAS 的目录位置, 对于此工程是 $(pwd)/.fun/nas/auto-default/classify
登录 NAS 控制台
https://nas.console.aliyun.com 和 VPC 控制台
https://vpc.console.aliyun.com可以观察到在指定的 region 上有 NAS 和 相应的 vpc 创建成功
2.2 本地调试函数
Tips for next step ====================== * Invoke Event Function: fun local invoke * Invoke Http Function: fun local start * Build Http Function: fun build * Deploy Resources: fun deploy
2.3 部署函数到FC平台
本地调试OK 后,我们接下来将函数部署到云平台:
fun deploy
注意: template.yml 注释的部分为自定义域名的配置, 如果想在 fun deploy 中完成这个部署工作:
-
先去域名解析, 比如在示例中, 将域名 sz.mofangdegisn.cn 解析到 123456.cn-hangzhou.fc.aliyuncs.com, 对应的域名、accountId 和 region 修改成自己的
-
去掉 template.yml 中的注释, 修改成自己的域名
-
执行 fun deploy
这个时候如果没有自定义域名, 直接通过浏览器访问访问http trigger 的url, 比如
https://123456.cn-shenzhen.fc.aliyuncs.com/2016-08-15/proxy/classify/cat-dog/ 会被强制下载.
使用预留模式消除冷启动毛刺
start = time.time() from keras.models import model_from_json print("import keras time = ", time.time()-start)
3.1 函数计算设置预留
预留操作简明视频教程
-
在 FC 控制台,发布版本,并且基于该版本创建别名 prod,并且基于别名 prod 设置预留, 操作过程请参考: https://help.aliyun.com/document_detail/138103.html
一次压测结果
总结
-
开发简单易上手,只需要关注具体的代码逻辑, Fun 工具助您一键式部署运用
原文链接
本文为阿里云内容,未经允许不得转载。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。