欢迎你们前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~前端
本文来自腾讯云技术沙龙,本次沙龙主题为Serverless架构开发与SCF部署实践python
刘敏洁:具备多年云计算行业经验,曾任职于华为、UCloud等企业担任产品开发、产品经理。目前负责腾讯云API生态的推广,帮助开发者进行API网关与无服务器函数、容器、微服务等产品的结合使用,提供完整解决方案。算法
此次咱们主要介绍面向于API网关和SCF深度结合应用,API网关与SCF结合能够造成比较完整的Serverless方案。数据库
今天的内容分为四部分:第一,API网关这个产品自己的简单介绍和一些能力。第二,API网关和SCF也就是是咱们无服务器函数结合使用的时候提供了哪些能力跟它结合方便你们使用。第三,在比较经常使用的场景中咱们总体的使用架构以及如今客户真正使用的案例。最后是你们关心的费用问题。小程序
咱们作API网关这个产品的初衷不仅仅是必定说跟SCF强绑定的,是在用户使用中,遇到了不少问题。那么最开始咱们为何会作这个产品?在场你们多数都是作开发的应该很清楚了,好比前端的调用方式愈来愈多了,后端的部署方式愈来愈多了,能够用本身的物理机,能够买一个云主机,能够搞一个容器,能够像使用如今更新的微服务,无服务器计算。那么在这种复杂的状况下前端和后端的耦合就会形成业务上在扩容,在作一些新的业务增长的时候变得麻烦。那么此时,解耦就变得异常重要。后端
市面上也有一些API网关这样的开源产品,可是运维的成本,费用问题也会分摊到每一个开发同窗身上,既然如此咱们就在想何不作一个以服务的形式提供API网关能力的产品给客户呢。因此有了今天给你们介绍的API网关这样一款产品。跨域
API网关在通常场景下怎么使用的?有一个很简单的电商例子,多数状况下客户后端有不少的业务模块,有商品、用户这些经常使用的业务模块。若是在之前,多是前端的APP,小程序,直接调用这些模块,后端也是以API形式提供给前端调用的。可是前端须要理解每一个模块的API。如今咱们提供API网关服务,客户在使用API网关后,咱们建议客户把他们的每一个业务模块跟咱们API网关进行对接。由API网关统一输出一个API提供给前端调用。包括前面说的小程序,外部API,都是这样的一种能够在前端调用的方式。浏览器
其实用一句话来总结一下,咱们API网关这个服务是什么呢?就是API的一个托管服务,能够对多种后端能力进行统一的管理,输出无状态服务的API给到前端调用。用户能够在API网关上建立API,发布API,上线、下线等。包括建成限流,监控这样的一些能力,这些能力在解耦过程当中都是很是须要的。安全
这里总结了几个比较大的能力点:首先,统一鉴权认证,这是很是重要安全防御的能力。API转化和隐藏,像参数,位置,名称均可以作转化和映射,通过映射后真正的调用者不必定拿到这些后端的真实数据。服务器
流控和配额也是常见的能力,一般后端业务资源实际上是有限的,因此前端须要将API的QPS和配额作限制。另外还有输出API能力,如今腾讯云提供了API市场,若是用户后台有一些业务,有一些能力,有一些数据,想经过API提供出去给第三方伙伴直接进行售卖,均可以经过这个网关输出到API网关进行直接售卖。
自动化文档和SDK这个能力呢,实际上是针对方便调用者进行调用的,若是咱们有了业务后再手写文档,这个工做量也很大,因此API网关能够自动帮助客户生成文档,还有SDK供客户调用。
强负载能力,腾讯云API网关依赖于腾讯大的负载平台,能够应对大的突发请求不害怕大的负载,性能方面是颇有保证的。最后,API网关能够对API进行安全防御,对调用API原IP作白名单。
这里实际上是比较完整的流转方式。API网关分两种角色:一个是发布API的人,一个是调用API的人,他们多是同一些人,也多是分别两拨人。发布者先把API发布到API网关中,参数,认证,鉴权,映射等等都须要进行配置,发布者配置后能够直接在API网关控制台上进行调试,在控制台上看看这个通不通,后台响应正不正常,Ok不Ok。若是调试都成功了进行API的发布。发布后就能够把API提供给调用者了。
那么API网关怎么提供API给调用者呢?咱们的服务实际上是以域名的形式提供给调用者的。咱们会提供默认的二级域名。固然客户有本身的域名,也能够把这个域名绑到咱们二级域名上。另外API网关能够生成文档SDK,提供给调用者。调用者直接使用文档、SDK能够方便的调用。调用后,前端请求到API网关后,API网关会根据以前发布的配置作一些认证,鉴权这样一些基础的校验。到后端咱们会作参数的映射,最终把这个请求发到后端业务。其实后端能够对接不少云服务,像SCF,像其余云服务通通都是能够对接的。固然今天主角是无服务器函数,因此咱们主要讲一下对接到SCF。对接后它会拉起它的服务响应,根据响应看是否是作一些映射,最后把结果丢会调用者。在这个过程当中发布者能够看到监控的信息是怎样,也能够查询到调用。若是调用失败,或者有什么错误,是前端的仍是后端的,整个日志都是能够查询到的。这是一个比较完整的流程。
咱们如今能够看一下API怎么跟SCF结合使用。其实很简单,前面是API网关作一个触发器。用触发器的形式来触发SCF后端的函数。而后SCF作一些计算处理,结束后它可能落到后边的像数据库这些服务,在图中的没有画出来。这种方式如今APP,小程序都是很经常使用的,包括给第三方合做伙伴,就是它们直接提供API给第三方合做伙伴,不走任何的平台,这种都是很是经常使用的一种方式。
安全与限流,刚刚在咱们整个功能里其实有作了一个简单的说明。这里分几块说:第一,咱们提供认证能力。认证的能力像密钥对是如今经常使用的认证方式,咱们在网关上生成密钥对,把这个提供给调用者。这个密钥对经常使用是服务器端对服务器端。也有像用OAuth这种单点登陆,客户有本身认证服务器的,咱们也是支持的,能够去用API网关对接认证服务器。认证服务器去对调用作认证鉴权,而后咱们在作一些校验。这是对整个认证管理作一个安全性的保障。
其实还有刚才说的源IP黑白名单。这个常见于你们内部用的,好比我是一个大的公司,内部几个部门之间用。另外限流的部分,当后端业务能承载的QPS有限的时候,在API这边作一个限流控制,若是超过这个QPS,就把这个调用丢掉,后端不会过载。
CORS,如今跨域的调用很是多的,好比电商,还有一些WEB页,像CSS、JS静态调用,访问时须要浏览器跨域调用。当请求是跨域请求时,API网关会根据发布者的配置作一些处理,好比配置支持跨域,API网关会把这个CORS头去。直接响应回来后咱们再把CORS头放回响应中。这完成的是跨域调用。这样的话其实对SCF开发者会比较方便使用,就不用再操心跨域的问题。
响应集成这种也是常见的使用,用户开发小程序时的场景也是响应集成可能比较经常使用到。好比在对接前面的接口时,须要把SCF抽取成真正的HTTP格式请求返回给前端。API网关与SCF之间一样为HTTP请求,SCF函数返回的响应在响应透传模式时,会被所有放进API网关的响应body中,返回给调用者。这样的话能够直接对接不少已经有一些规范,已经有一些接口的,像小程序这种,会不适用这种方式。那么就须要API网关把SCF的响应抽取为一个标准HTTP的respond返回个标准接口。
Websocket能力算是在函数计算里的一个难点,由于自己函数不是常驻的,好比说这个函数跑一跑,在没有触发的时候,可能有一个时间段过去后,目前的资源就释放掉了,下次再触发的时候再拉起来,这很难跟前端保持长链接。那咱们怎么帮SCF处理长链接问题的呢?API网关会帮每个前端的调用者生成一个惟一的ID,这个ID就注册到后面客户的业务函数里。当客户业务函数须要推送的时候,他只要带到这个惟一ID给API网关,API网关就会将这个惟一ID的消息丢给前端,这样咱们惟一ID和前面的链接保持了长链接,也保证了后端推送的正确性。举个例子,一个聊天室,有三我的聊天,范冰冰,李晨和黄晓明。他们三个都有惟一ID。黄晓明发出来一句话,后面的函数收到这句话,而且要把他说的话推送给范冰冰和李晨,那么经过惟一ID,能够识别到三我的,后端业务将黄晓明ID的聊天语句推送到API网关,告诉API网关要将此信息推送给范冰冰和李晨ID的前端,API网关收到信息后,则将此信息推送到与范冰冰李晨的客户端保持的长链接中,他们就看到了这条信息。这就是处理Websocket长链接的方式。
开放到API市场上,刚才咱们也简单说了一下,其实不少能力,咱们本身一些能力和数据想直接开放出去给别人,可是并不想作一个页面,计费流程,那么能够放到API市场来进行售卖。其实后端业务放到SCF上是提供服务的一种方式,这样有些用户业务是放在API市场上来进行售卖的。这是把咱们技术能力变现的一种方式。
文档与SDK刚才也说了不少,这里再来介绍一下。若是用户配了10个API,API网关会帮用户生成这10个API的文档和SDK。swagger文档有点像代码式的文档另外还有普通文字描述的API文档,这两种咱们都能生成。生成后能够直接下载下来提供给别人。SDK中有鉴权相关的代码,调用者使用时把本身的参数填进去,对调用者来讲更方便。
高并发,这里咱们仍是想强调一下,API网关能够扛住很是很是大的并发请求。当用户请求的并发量极大时,而且有大量HTTPS时,大量请求十分消耗CPU。ABI网关的高性能,及时HTTPS请求的异步处理,能够应对高并发场景,保证服务可用。
场景方面,刚才说的是一些具体功能,咱们能帮SCF作哪些具体的能力。在总体结构的使用场景这里作一些介绍,这里是小程序公众号,电商这种业务场景如今使用的一些客户的架构,客户的不少业务模块放到SCF上面,而后用API网关做为API服务提供出去。前端不管是小程序仍是APP只要有鉴权,有密钥对均可以来进行调用。后端根据本身的业务去跟MySQL等能力来进行对接。
刚刚这种方式,像乐凯撒是一个很典型的例子。他们把他们的菜单系统,还有微信支付都放在SCF上面。前端会对接一些固有的HTTP接口,因此用了咱们的响应集成的能力,就是API网关帮他抽取成一个标准的HTTP响应返回给前面的调用者。另外由于有不少图片静态资源,他们也使用了跨域能力,这样后端上线的时候很是快。乐凯撒如今有一个小程序用户能够直接在上面下单买披萨,这个小程序中的不少能力是使用上述架构完成的。他们的ERP也有一些后台的系统,也是直接在SCF上进行后台计算,用API网关直接出接口。其实不少能力能够复用,那么API自己就能够进行复用。这样的开发流程,会让整个上线过程很是的迅速。
如今用的多的还有AI推理和翻译。用户将自身的计算模型,翻译模型等放在SCF上,每次经过API网关触发来触发计算。API网关将请求带来的数据给到后端,并对每一个请求作鉴权认证或ACL管理保障使用的安全性。
比较典型的就是搜狗,搜狗在这里其实有一个翻译推理的模型,放在SCF上, SCF跑在GPU上,而后经过API网关作触发。这里用API网关主要是想作先后的解耦。由于搜狗的业务自己解耦是C++写的,全部的请求都是用http的方式传递,请求端和后台解耦合后,不少后端业务再也不须要用python重写。
荔枝微课是一个在线教育课程。它的状况是,后端SCF跑了一个模型计算。每次当客户在他的页面上搜某个课程。它的前端会把这个课程,用户感兴趣的课程信息,包括客户的ID,以前的一些信息带到后端带给SCF。SCF模型拿到了客户信息,它自己也会有一些本身的原有的信息,这些信息结合起来,再根据其算法进行计算。最后得出的结论,这个客户喜欢某些课程,再把这个课程推送到前端来,最终展现在WEB页上。在这个中间,其实API网关和SCF解耦的时候,对API网关的模型调用,须要有安全保证的,就是有不一样IP的时候有源IP调用,还有密钥对的鉴权对后端进行安全保障。另外若是说这个SCF或者调用有任何问题的话,监控报警也是能够快速让我感知到这个模型的状态。
最后看一下费用,咱们费用也是有很大力度减免的,每个月有一百万次的免费调用。网络费用跟公网的的价格是同样的,调用次数0.04元/万次。目前没有收费,预计到年末收费。可是整个资源费用是很是便宜的,因此若是有想试用的同窗不用很犹豫。
Q:主要想请问涉及到有时候有本身的线上环境和咱们的测试环境,我想知道咱们如今若是使用大家的API网关还有SCF,咱们怎么去部署这样两套环境?怎么样去完成像咱们如今使用的这些持续集成,怎么结合到我现有的产品?由于我目前看到的展现都是基于控制台,没有看到说基于CLI的操做,因此想了解一下。
A:其实咱们API网关有环境管理和版本管理。版本管理也分了环境,测试环境这些标准环境。后续还会开放这些环境让用户自定义这些环境。CLI部分我理解须要在公台操做,仍是命令行操做,自己跟我提不提供环境管理,版本能力应该是两个事情。因此CLI后续会提供。可是自己须要的开发和测试环境咱们已经分环境提供。
Q:新的代码更新后要上线到SCF上怎么部署?
A:后面咱们会作一个工具,在这个工具上,好比CLI,能够一键上传,而且配一些API网关。目前这个都在开发中。
Q:怎么样买服务器便宜,怎么样买按调用次数的偏移?
A:这个仍是须要你自己业务来计算一下。好比说我这个业务就是一个触发型的业务,我若是用一个CPM或者物理机部署的话,若是常驻型的话须要占到多少钱,这个钱实际上是固定的,每月须要多少钱。可是若是我知道这个业务是触发型,假如天天就调用一万次,这个也是能算出来的钱。这个钱一比较就很简单就出来了。可是这个都得基于你自己业务的调用量和你自己业务后端消耗资源的状况来进行计算的。因此我无法儿给你一个直接的值。
若是真的须要一个常驻的业务,一天二十四小时一直在跑的话,其实这个也是要看,这二十四小时在跑的,我对我自己的服务器个人消耗状况,好比说我买完了一台服务器,市面上的服务器可能就那么多,或者说CPM就那么多,即使买了最小的4核服务器都没跑满,若是计算很轻量无法儿跑满的话,用SCF也会很划算。可是须要大量的,可能用自己的传统的方式会比较简单。
Q:在调用的稳定性,延时方面Serverless会有优点吗?
A:其实调用的稳定性是咱们服务稳定性的保障,这个不用担忧,由于咱们有承诺。至于延时,是有不少因素影响的,若是你是公网调用,这基于网络的一些状况。若是说API网关到SCF结合的话,自己API网关和SCF能够走内网和公网。API网关自己的延时是在毫秒级别,这个咱们测试过的,仍是很小的。若是部署一个服务器或者资源,你到那个网络之间的延时,你本身自己原来延时是多少仍是要算一下。我能够告诉你咱们的延时自己是多少,在可测的环境下咱们的延时是多少。可是到大家具体的网络环境下仍是要具体测量的。
本文PPT附件请点击原文下载。
问答
相关阅读
此文已由做者受权腾讯云+社区发布,更多原文请点击
搜索关注公众号「云加社区」,第一时间获取技术干货,关注后回复1024 送你一份技术课程大礼包!
海量技术实践经验,尽在云加社区!