00:00
OK哈,各位同学晚上好,欢迎大家来到本期的,今天我们主要分享的内容是我们云最新上的一个功能外方,那么基于这样的一个功能,我们会给大家做一个简单的介绍,并且同时我们也邀请了两位我们非常专业的一个基础的大咖同学,然后基来给大家分享一下他们基于function做的一些实战的应用的一个分享,那么首先简单做一下自我介绍,我是来自腾讯service产品中心的产品同学April,那么接下来呢,我们大概介绍一下我们今天的一个we主要的内容。嗯,我们分为三个部分,第一个部分是我外方一个简单的一个产品的一个介绍,那么主要介绍一下它的一个功能,以及它的一些性能的优势,那么第二个部分就是我们的邀请的两位大咖同学,他们会作为一个实战应用的一个分享,那么第三个部分就是一个提问的环节,所以大家如果有任何在整个的宣讲过程中,如果有任何的问题的话,可以随时在评论区去进行一个提问,我们都有收集问题之后会统一的就到最后给大家做一个解答。
01:06
那么这边还是简单的先介绍一下外B方式,呃,外B函数是我们其实是云函数一种全新的产品的类型,那么它最大的优势是它打破了我们传统的事件函数,它可能对于我们的件格式会有一定的限制,所以我们可能只需要传的格式啊。那么对于外函数来说,它可以直接的接收原生的HP请求,并且去做一些URL的一些处理,然后去包括一些后端的一些应用的一些呃,进一步的处理,那么简单的流程呢,就可以通过下面这张图来看,就是我们的用户发起一个请求,经过API网关,API网关测不会做任何的处理,他们会直接的透传,透传完成之后在我们云函数内部的执行环境中接收到这个原生的HTP请求,并且通过用户自己的一个web server这样一个服务代码去对这个请求进行进一步的处理和解析,并且帮将结果返回给用户,那么其实就实现这样的一个逻辑,那么这样的外方式我们为什么要做这个东西,以及它最大的优势在哪里呢?那其实就在。
02:07
下面的这三点就是可以看到,因为我们是直接的处理可以保证,那么如果我想做一些调试,那么我在本地去做测试的时候,和我在云端其实是没有任何的区别,我可能直接一个请求或者是呃,一个URL就可以去完成相关的一些测试,那么如果我们想去开发一些个人的一个API的话,那么这个是一个非常合适的场景。那么第二点就是在于他的音改造成本,那这个成本其实在哪里?就是在我们之前可能常用的一些外部框架,类似于express或者SS或者其他wrong time的啊,或者这样的一些框架,我们把它放到云上的话,我们要做的最大的一个处理就是我需要把原生的HTP请求转换成这些,呃,我函数函数能够去接收的Jason的事件,那么在我express这样些框架接收这个事件之前,我又要把这个Jason事件转换成他们能接收的HTV请求。
03:07
就是我需要去经历一层原生请求到Jason事件格式转换,那JA事件格式转换到HTP请求这样的两次的转换,那么其实如果我一来一回,这样我们就需要经历四次的转换,而中间的这层转换的这层接入层代码其实是需要我们用户自己去写的,那么其实如果这样的话,我们本地的原生的express这框架放到云上,其实还是需要去进行一部分的改造,那么其实在基于function这种形式,其实我们就是完全省去了这样的一个改造的成本,也就是我本地怎么写,我云端就怎么写,我都是可以以监听端口的方式去进行一个启动的,那你可能只需要去写一个启动的文件,就类似于一一句话的一个命令,类似于note s这样的一启动命令,它就可以去完成相关的一个启动的启动,然后D第三个优势就在于我们可以提升这个响应的效率,就像刚才说的,因为我们其实已经降低了这样两层的一个请求格式的转换,我是直接接收,直接触发,直接处理的,那么这样整个的一个效率的话,会比传统的我不停的。
04:07
转换明显会有一些很明显的一个提升,那么对于像类似于这种我和DDQ这样一些网站的一键部署,他们对于这种请求响应时间会有一些明显的呃要求的,那么其实这种这种方式它会更适合这样的一个场景,那总而言之,Function实我们就是专注于开发的一个功能,包括你在做API的一些个人API的开发,或者一些外部框架的开发,甚至说你部署个人的网站,其实外方都是一个更好的一个更优的一个选择。那么简单介绍就到这里,我们接下来介绍一下我们今天分享的两位嘉宾,然后一位是杨启明老师,他是本身他是一个在前端领域非常。有经验的一个专家,而且他自己也主导了许多产品的生命全周期的一些技术方案体系的开发,目前也是在致力于对于S的一个技术的落地,然后另外一位呢,是范国金老师,他是一个比较资深的PHP开发工程师,也是对我们S这个产品也是我们的一个老用户了,包括对于整个研究也是非常的有经验,而且自己本身也是在对于计算领域,包括广告从业,广告行业的从业也是有比较丰富的一个经验,所以说今天我的介绍到这里,接下来就是我们的最主要的环节,我们邀请两位嘉宾来对做对于自己在外方程这样的一个能力,这样的一个实践做一个具体的分享,那么我们首先可以邀请杨启明老师,然后可以来开始他的介绍。
05:33
嗯,好的,嗯。我共享一下屏幕。呃,看到吗。可以的。好的好的好的,感谢主持人。呃,各位晚上好,我是杨启明,是一位前端开发工程师。今天在这呢,主要给大家分享一下最近SCF啊团队新出的函数,还有容器部署这两个功能。以及他们的一些使用方法和最佳实践。
06:02
其中内容呢,就主要包含以下五个方面。首先给大家介绍的呢,是函数与事件函数在we场景的一个对比。另一个呢,就是我们的应用啊,去结合framework去进行部署和迁移。还有一个呢,就是镜像部署的一个用法和实践了。现在就让我们正式开始吧。首先我们可以看一下这张图啊,它就是我们腾讯云控制台啊,新建出来一个最最基础的事件函数,也就是一个hello,而且呢,相信开发经验的朋啊其实也对代码很熟悉。专代码呢,它就暴露一个方法,就是事件event和上下文context。然后呢,再把我们的event作为函数,它的一个返回值给传出去。这个就是一个最基础的CF事件函数了,看上去也是特别的简单。然后基于这个函数呢,我们在添加一些代码,把这个功能进阶一下,比如说让这个函数能提供微博页面访问的一个服务。
07:08
接下来他就能改造成这样。可以看到呢,改造之后啊,这段代码也非常简单,而且呢,它不单提供了静态页面的一个托管的能力,而且它还能提供一个简单的服务端渲染的一个能力,比如说我们给他提供个HTM模板。它在获取数据之后呢,就可以把数据进模板里面进行渲染之后再得到HTML的字符串,然后最终在一层一层返回到用户的浏览器里面去显示。同样呢,它也能作为返回Jason格式的一个VBAPI来使用。但是呢,我们仅仅去写这些看上去很原始的代码,实际上我们的开发效率并不是很高,而且工程化其实也比较麻烦。要提升我们的生产效率的话,我们通常会使用一些非常流行的微博框架,因为这些流行起来,微博框架呢,他们不仅改善我们的开发体验,更强大,之后呢,他们可维护性强,而且有一个非常良好的生态系统,可以给生产环境啊去快速贡献的一些稳定的一些包。
08:13
所以相同的JS呢,我们就会去使用express k OA以及他们的各种衍生品框架来编写我们的服务。做服务端渲染呢,我们也会使用next。这类前端类的SR框架来提供页面服务。那么刚刚说了那么多框架呢?我要先说一下,在没有B函数之前,之前件数,它是如何去兼容这些面上已经成熟的框架呢?我们先来看一下这张图啊。这张图上呢,就展示了之前事件函数它去兼容web框架的一个运行原理。首先呢,用户本身为了访问我们的APP,就会去向我们应用的一个域名啊,发送HTTP请求。
09:03
然后呢,这些请求实际上就绑定到了我们一个域名的一个API网关那边,然后API网关啊,再去根据请求那些信息去进行路由匹配,根据规则呢,进而找到我们绑定的一个函数进行触发,并传递一个访问事件。接着这个事件呢,就进入到了我们代码里的一个适配层,在这个适配层里面呢,他又把这个事件啊,转化成了HTP请求,来交给我们编写的web做处理。然后再得到结果之后呢,再把它处理成A个标准数据结构,一步一步再返回到客户那边去。所以说可以看到这个流程里面的HP请求啊,在API网关那边被转化成事件之后啊,相当于在这层适配层里面又被还原了。一来一去就白白损耗了四次转化的一个算力。这个呢,实际上就是事件函数在处理web服务的一个弊端,因为事件函数它毕竟是要靠事件来触发的,而HT请求啊,对他来说实际上也不过是一个类别不同事件了。
10:13
当然了,关于这一层适配层,实际上。有些朋友可能以前用过事件函数来提供web服务啊,也可能会好奇,其实我们自己很多情况下并没有写这部分代码。为什么我在图里面把它放进了我们的code里面去,也是我们自己代码里面去呢?实际上呢,这一份部分proceed代码有大部分我们的一个service组件帮忙去做掉了。
我来说两句