共计 1812 个字符,预计需要花费 5 分钟才能阅读完成。
对于宽广开发者而言,搭建一个本人的 Web 服务是最为常见的开发场景之一。无论是全栈网站的搭建,还是创立 API 接口,都须要一个能够疾速接管并解决 HTTP 申请的 Web 框架。Serverless 时代降临,既心愿享受云计算带来的弹性伸缩、免运维等泛滥劣势,却又囿于基于事件触发带来的革新老本而无奈轻易尝试。Web 服务如何与 Serverless 完满适配成了咱们须要攻克的难题。
01. Web 服务开发发展趋势
从倒退历程来看,Web 服务开发能够分为三个阶段:本地服务器部署 – 云主机部署 – Serverless 部署。
第一阶段,开发者须要本人购买服务器,将搭建的 Web 服务部署在机器上,尽管开发者对于机器的可操作范畴更大,可对于 Web 场景来看,开发者往往不须要对机器进行多余操作,这样反而带来了额定的机器保护老本。
第二阶段,开发进入云时代,大家更偏向与于在云上购买主机部署服务,免去保护老本后,极大晋升了开发效率,这个也是目前应用最为宽泛的开发方式,但主机仍基于使用量的预估来提前购买,并且会为未应用的计算资源付费,这样的形式仍有肯定资源与老本上的节约。
第三阶段,Serverless 正式登上舞台,SCF 云函数本身有着主动扩缩容、按量计费等泛滥劣势,完满适应开发者对于低开发 & 保护老本的需要,是 Web 服务部署的完满平台。但因为云函数是事件型函数,只能承受事件类型触发,无奈间接接管解决原生 HTTP 申请,尽管云函数推出了泛滥解决方案,帮忙开发者主动进行格局转换,但转换层的创立以及解决链路长仍是不可漠视的迁徙老本。
02. 传统 API 网关 + 事件函数计划问题
API 网关会主动对传入的 HTTP 申请进行格局转换,转换为函数能够解决的 JSON 事件格局。函数侧,在原生 Web 服务框架前增加一个适配层函数,将事件 JSON 构造体再转化成规范的 Web 申请,提供给后端框架进行解决。
问题:
- 革新老本高,须要增加适配层做格局转换,并对 Web 框架的监听形式进行批改。
- 调试老本高,本地代码和云端代码不⼀致,本地和云端调试体验不统⼀,对于本地调试的实现有妨碍。
转换链路长,性能有损耗,⼀次申请须要多四次转换:
- http request –>> event
- event –>> http request
- http response –>> APIGateway 须要的返回构造
- APIGateway 须要的返回构造 –>> http response
针对这些的问题,腾讯云 Serverless 推出的全新函数类型 – Web Function,实现 Serverless 与 Web 服务最优雅的联合。
03. Web Function – 下一代建站计划
- 用户发送的 HTTP 申请通过 API 网关后,网关侧将原生申请间接透传的同时,在申请头部加上了网关触发函数时须要的函数名、函数地区等内容,一起传递到函数环境,触发后端函数执行;
- 函数环境内,通过内置的 Proxy 实现 Nginx 转发,并去除掉头部非产品标准的申请信息,将原生 HTTP 申请通过指定端口发送给用户的 Web Server 服务;
- 用户的 Web Server 配置好指定的监听端口(
9000
)和服务启动文件后部署到云端,通过该端口获取 HTTP 申请并进行解决。
04. Web Function 劣势
- 函数能够间接接管并解决 HTTP 申请,API 网关不再须要做 json 格局转换,缩小申请解决环节,晋升 Web 服务性能。
- Web 函数的编写体验更贴近编写原生 Web 服务,保障和本地开发服务体验统一。
- 丰盛的框架反对,您能够应用常见的 Web 框架(如 Node.js Web 框架:
Express
、Koa
)编写 Web 函数,也能够将您本地的 Web 框架服务以极小的革新量疾速迁徙上云。 - Web 函数主动为您创立 API 网关服务,部署实现后,网关侧会主动生成一个默认 URL 供用户拜访和调用,简化了学习老本和调试过程。
- 控制台提供了测试能力,您能够在函数控制台疾速测试您的服务。
05. Web Function 内测申请
Web 函数(Web Function)是云函数的一种函数类型,区别于事件函数(Event Function)对于事件格局的限度,专一于优化 Web 服务场景,用户能够间接发送 HTTP 申请到 URL 触发函数执行。
腾讯云 Serverless 行将推出「Web Function」,现凋谢内测申请,点击提交申请。
One More Thing
立刻体验腾讯云 Serverless Demo,支付 Serverless 新用户礼包 👉 腾讯云 Serverless 老手体验。