欢迎你们前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~数据库
本文来自腾讯云技术沙龙,本次沙龙主题为Serverless架构开发与SCF部署实践服务器
卢萌凯:毕业于东南大学,曾就任于华为,熟悉云行业解决方案。目前负责腾讯云中间件产品及无服务器云函数的技术架构打造,帮助用户完成方案设计,对云端存储产品的使用难点有独到看法。网络
你们好。我是腾讯云中间件及无服务器云函数架构师。我今天介绍分四部分:第一,对象存储COS简介。第二,比较实用的一部分,SCF与COS结合使用的应用场景。第三,比较有意思,人脸识别Demo。调用AI的接口,用几行代码就把人脸识别的Demo就实现了。最后一部分是最佳实践。其实主要是来看一下在COS使用过程中有哪些须要注意的地方。架构
咱们先来介绍第一部分,就是腾讯云存储平台发展历程。首先咱们能够看到在2006年的时候腾讯云发布了第一代分布式存储平台,叫TFS。通过近十年发展到2014年存储量达到500P,也是在这一年随着腾讯云推出,腾讯云存储系统开始对外服务。到如今腾讯云超过EB级存储,如今对内服务腾讯相册,QQ以及外部的58同城和大众点评等。并发
对象存储是什么?这页简单介绍一下对象存储概念,若是用云上的话,就是用云的概念,腾讯云对象存储提供的是面向非结构化数据,支持HTTP和HTTPS协议访问的分布式存储服务,它能容纳海量数据并保证用户对带宽和容量扩充无感知,这里能够理解为基于Serverless架构。同时对象存储也会对云上其余的产品作一些深刻的结合,好比和CDN结合,用户传到CDN音视频能够选择CDN进行加速,也能够跟云上音视频转码服务相结合,上传到COS音视频能够作转码服务。支持万象优图服务,能够对图片加水印等方面处理。less
这里列了一个COS对象存储简易流程,用户能够经过手机APP、网站或者H5页面能够方便简单的访问。COS会和云上其余的应用结合,同时用户也能够选择和COS本地服务相结合。运维
这里给了一个COS应用架构,上面是一个传输服务,能够选择CDN加速。好比用户须要上传到COS延时高的状况下能够选择CDN加速;同时能够选择腾讯云提供的专线服务,能够保证延时。同时可使用运营商服务。异步
应用接入层能够选择应用服务,像图片智能识别和处理,音视频处理等。同时COS能够和云上一些大数据套件对接。一个简单的场景,用户能够用云上的Kafka直接写入COS,COS和大数据对接来作用户行为的分析。分布式
下面是数据接口,这边是COS底层的一些接入方法。最底层是分布式数据存储,咱们能够经过API或者经过HTTP REST来访问接口。函数
这里给了一个简单的应用流程,最左边能够看到用WEB服务,或者APP终端,经过运营商网络接入到对象存储,作一些简单的上传和下载动做;同时,腾讯云上的COS能够作CDN分发,或者作格式转换,或者对接到云上的云主机或者私有的客户本身的云服务,作一整条流程的打通。
把刚才的应用案例再细化一下的话,这边给出了一个用户在实际使用过程中的架构图。首先,最左边的用户能够经过调API接口,或者本身调云上封装好的sdk,在本身代码里去读写COS。或者经过控制台很方便的上传和下载一些文件。这边是腾讯云上COS云存储,这里一共给了三种应用:一个是标准存储,一个是低频存储,还有近线存储。低频存储是用于读写数据频率比较低的场景,好比说是网盘的运用。近线存储主要用于归档数据,它多是一些冷数据,不常常用,能够用近线存储,它也能够提供高可靠的数据保存。同时,它的成本也是很是低的。
同时对象存储能够对接云上其余的服务,并针对不一样的用户能够设置不一样的访问权限。我这里放了一个视频对应用场景作一个总结和发散。
我这里写了一个简单的Demo,主要作人脸识别,首先我会建立两个存储桶,这两个存储桶用来上传用户的信息,触发SCF调用,其中一个作用户特征的提取。第二个存储筒上传第二张用户的图像,和第一个比对,查看是否能够查到这个用户信息。SCF里直接调AI的接口,大概有4、五行代码就能实现建立用户的信息,再加一行代码就能比对用户信息。这里用SCF日志展现输出。这个流程图是这样的,首先我在COS Bucket1里上传一张图片,看他是不是一个新用户,不是的话就建立一个特征,若是是,就把这我的像添加到已建立的用户特征。另一个Bucket叫这个名字,这个也会触发相同的SCF,用于查看用户的特征,若是查到的话这个用户能够获取权限;若是查不到就会返回到无权限。
具体的话在控制台上我这边已经写好了这个函数,咱们经过查看函数执行日志来查看输出结果。这里我已经建立好一个bucket,这个用来用户上传图像来提取用户特征。我会作一些测试,我已经有一些测试图片了。我如今在网上随意下载一个用户的图像。咱们看到这个图片上传成功了,叫范2,我如今到云函数控制台查看一下日志,这边能够看到时间是16点37分。如今是没有权限的,再上传一张图片,在new face提取一下特征,仍是刚才那张图片。已经上传成功了。因为刚才是没有她的用户特征,因此这里会建立一个新用户。我在上传另一张图片,这两张图片是不同的,16点38分刚刚上传成功。如今再回到控制台这边查看日志,如今看到刚才范这张照片,能够查看到她的特征了。
我再给你们看一下代码。我刚才实现的代码里,大部分都是从cos里下载图片的代码和逻辑判断,实际作人像识别的代码是直接调AI接口。这里还会对图片作大小判断,若是太大的话会作一次裁剪,由于太大的话可能上传到cos时会报超时。下面我还列了一些对AI接口的操做,这里有不少的接口都封装到了SDK,直接调用大概也就几行就能够实现,好比人脸检索,特征信息建立,人脸比对两张照片是不是一我的,还有身份证识别,因此使用起来是很方便的。
如今回到PPT,这一部分介绍的是COS和SCF结合的应用架构和应用场景。第一页是放的云函数架构平台,这边是BaaS架构。用户能够上传代码和作一些配置在云函数平台,并选择COS触发器,同时也能够选择上传或者删除事件来触发这个云函数。文件上传到云函数后,能够在云函数里作不少操做,好比说我能够作日志备份,跨区域的文件复制,写云数据库,作一些图片处理或者语音识别等。或者我能够用SCF对接IoT平台,把数据推到IoT终端。大部分的云服务均可以和云函数平台作一个结合。
这样用的好处是COS这边能够提供高并发的场景。云函数这边也能够支持高并发。用户只用聚焦自身代码的实现,使服务能够快速上线,且当用户的调用量很大的时候,这个架构也能很好的应对,有效的应对波峰和波谷。
把才的场景轴象化、简单化后,能够看到左边是COS存储桶,我能够作上传删除等等,右边能够和其余的产品或者服务作结合,像自定义日志分析,和消息队列作事件通知。
这里举例用户头像制做,用户上传图片到COS,触发SCF运行,SCF对图片进行处理后发送到客户端,并写入COS,删除原图。假定我这边配置SCF内存128MB,单词执行时间1秒,平均天天被触发运行5万次。COS配置触发SCF运行,用户上传到COS的平均文件大小1MB,天天上传5万次,被SCF处理后,图片大小为100K。这样算出来SCF是这三部分的加和,由于这里免费额度的缘由,因此这边资源使用费用是零,至关因而免费在使用Serverless。这边调用次数的费用是0.69元,天天触发调用5万次,一个月的费用不到1块钱。另一个费用是由于这边有外网出流量,每次上传是多少GB,而后乘以5万次,再乘30天,每GB0.8元,算出来是144元。若是没有往客户端发流量,全部的流量都在平台内部打转的话,这个费用也是没有的,至关用SCF的费用基本上不到两块钱。
COS的话这边也是把免费额度扣除掉以后,每次用户上传,存100K的图片,加上读写IO,算出来是一个月14.6。因此这边加起来一个月不到130块钱。这是一个实际应用场景里COS和SCF的价格举例。
这里我又列举了一些用户的实际案例,这边由于没有拿到用户的受权,因此没有把用户的名称放出来。这个案例是视频文件转码,这边是用户视频文件上传,调用腾讯云的视频解码服务,再根据不一样码率写到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附件请点击原文下载。
问答
Serverless:如何删除一个函数?
相关阅读
多个场景中的AI落地实践
低于0.01%的极致Crash率是怎么作到的?
【每日课程推荐】新加坡南洋理工大学博士,带你深度学习NLP技术
此文已由做者受权腾讯云+社区发布,更多原文请点击
搜索关注公众号「云加社区」,第一时间获取技术干货,关注后回复1024 送你一份技术课程大礼包!
海量技术实践经验,尽在云加社区!