这里我又列举了一些用户的实际案例,这边因为没有拿到用户的授权,所以没有把用户的名称放出来。这个案例是视频文件转码,这边是用户视频文件上传,调用腾讯云的视频解码服务,再根据不同码率写到COS,COS最后会用CDN,对视频文件做一个加速。这里所有的触发都在云上,你不需要运维,同时这边的服务也是非常的便宜。
这个是CDN自动刷新,很多用户会用到COS和CDN,把COS文件做CDN加速,但是这里有一个问题,每次文件更新都需要手动点击刷新,现在就不用了,上传到COS的文件自动触发SCF,SCF调CDN的API接口,实现自动刷新。
这个客户案例,是做日志文件分析,客户的点播平台每时每刻都在产生大量的日志,怎样快速低成本的对这些日志进行统计分析,筛选出最受欢迎的视频源,点播峰值时间段等并展示出来成为客户面临的难题。
这个案例是一个在线视频教育的案例,老师和学生会有视频课程,它们会从视频课程抓取图像,然后把这些图像上传到COS,然后COS会触发SCF做一次分析,把这个写到消息队列,并通知客户自身的业务模块进行分析,从而来判断老师和学生之间是否有敏感信息产生。
这是一个自动灾备的案例,客户是荔枝微课,用户在APP或者电脑端做文件上传,文件上传以后,需要同步到跨区域同跨帐号下的其他Bucket。
最后我说一下最佳实践。其实只要能为用户实际创造价值,它就是一个最佳实践。这边我列举了几条,主要是在使用COS和SCF过程中的注意事项。比如COS触发SCF的流程,首先COS会把上传和删除事件写到自己的消息队列,和云函数SCF消息队列做一个对接,云函数消息队列会触发云函数执行每次的事件操作。所以这是异步调用。有同学会问这边是不是实时的,如果正常情况下,没有消息堆积的话是毫秒级。如果某一时刻有大量用户做上传视频或者删除动作的话,可能会产生消息堆积。如果来不及消费,可能在秒级触发SCF运行。
COS触发SCF只支持同地域配置。
COS支持前后缀过滤触发,以及同一Bucket中多种事件类型触发SCF。
为了避免COS的事件生产投递出现错误,COS针对每个Bucket的每个事件限制只能绑定一个可触发的函数。主要为了避免用户出现循环的调用,触发错误。
目前单个云函数支持绑定2个COS触发器。
最后一个是列举了COS Bucket的消息格式,会把什么样的信息发给SCF。SCF在这个事件里把消息拉出来。比如用户的APPID,用户上传的文件名,以及用户Bucket所在的地域,这边都可以拿到。所以在SCF这边可以拿到用户上传到COS大部分的文件信息。
有同学问到,传统开发模式和无服务器模式架构的区别,或者说是用传统开发模式的优势或者两者之间的成本对比。这边可以看到对于传统架构设计,比如买了云主机,架构分层,功能划分,模块通信等等都需要考虑。用无服务器只需要对函数功能进行划分,同时把一些具体的功能通过事件触发的形式去绑定到一起,这边架构上会减少很多工作量。但是,如果说这个逻辑或者服务计算是非常重的话,其实还是用传统开发模式可能会更好一点。另外如果云主机使用效率在 70%以下的话,其实SCF会便宜很多,同时SCF可以省去很多运维和环境搭建的工作。
代码开发,传统模式要考虑到容灾,业务逻辑的对接。云函数只需要关心自己的业务代码,把业务代码写好后配置相应的触发器,这边就可以运行了。
代码调试,登陆服务器使用熟悉的工具在本地调试。无服务器目前主要依赖日志调试。
发布部署,云函数这边可能效率会更高一点,但是差别不是很大。
Q&A
Q:我在更新我的模型文件的时候,会不会对我其他的文件产生影响?
A:像对COS做热更新的时候,在那个时刻会有影响,但是在过程中没有影响。
Q:SCF到底是什么?
A:简单来说SCF就是一种计算资源。我们有时候会叫它FaaS。FaaS是一个概念,SCF是一款产品。
本文PPT附件请点击原文下载。