vos3000落地网关对接教学_跨国合作:Serverless Components 在腾讯云的落地和实践

9cbb9fac11a53731b131a6676466aea4.png导语 | Serverless Components 是 Serverless Framework 推出的最新解决⽅案,具有基础设施编排能⼒,开发者通过使⽤ Serverless Components,可以灵活构建、组合和部署 Serverless 应⽤。本文是对腾讯云云函数团队前端负责人蔡卫峰在云+社区沙龙online的分享整理,介绍Serverless Components在腾讯云的落地和实践,希望与大家一同交流。点击查看完整直播回放

一、Serverless Components 实现原理 

1. Serverless CLI 工具

b64624f06bd5d65aba05cb2a7d5d7d45.pngServerless是一个重开发和部署的产品应用,服务提供了弹性伸缩、自动运维的能力,开发者主要关心开发和部署。所以,开发和部署的体验对于serverless业务来说是非常重要的。Serverless的函数本身只是提供了计算的资源,要想实现一个完整的应用,必然会涉及到云上的其他资源,比如网关、cdn、数据库等。如果是控制台操作,需要在不同的服务之间跳来跳去,比较割裂。如果能有一个基于应用的统一的命令行管理工具,对于开发者必然会方便很多Serverless CLI 是用户授权后,通过命令行工具,调用云API帮助用户管理云资源,方便对云上资源进行比较完整的操作。

2. 什么是 Serverless Framework 

6667a62f68e493dff8aeaa36850b84ab.pngServerless Framework 现在大量的使用者是 web 服务的开发者,主要定位于 web 服务场景,它是北美研发团队开源的一个项目,是业界⾮常受欢迎的⽆服务器应⽤框架,开发者⽆需关⼼底层资源即可部署完整可⽤的 Serverless 应⽤架构。Serverless Framework 定义了一套完整的标准化规范,各公有云的插件遵循这套规范,通过对云上资源的编排,覆盖编码、调试、部署、排障等全⽣命周期,帮助开发者通过联动云资源,迅速构建 Serverless 应⽤。 

3. Serverless Framework CLI

Serverless Framework CLI 是一个开源命令行工具,它使用基于事件触发的计算资源,例如腾讯云云函数,AWS Lambda,阿里云函数计算等。Serverless Framework 为开发和部署 Serverless 架构提供脚手架,自动化工作流以及最佳实践。并且它支持通过丰富的插件进行功能扩展。 Serverless Framework 在 Github 有将近 4 万的 Star,在国外比较受欢迎。我们团队最开始也维护了一个自己的 CLI,但是维护成本比较高,想做体验好操作流畅的 CLI 需要投入大量人力精力,Serverless Framework 的 CLI 开发者接受程度比较高,它的协议也开放,所以按照规范接入即可。我们也有用户原来用 Serverless Framework 的命令行工具,从 AWS 迁移到腾讯云云函数环境时候提出了这样的要求。对用户而言底层的云资源操作是屏蔽的,只需要跟Serverless Framework打交道就可以了,希望我们也可以提供对接 Serverless Framework 的方式,这样迁移到腾讯云上比较方便。通过和 Serverless Framework 团队的沟通,他们正好也有意愿打入国内市场,双方的合作也就水到渠成了。Serverless Framework 强于 CLI 整体的体验,但是对腾讯云本身的了解比较少,于是就有了基本的合作模式,北美团队负责 CLI 的开发和整体体验,腾讯云团队负责具体落地到腾讯云的 components 的开发和维护。双方合力,打造 Serverless Framework 在国内的实际落地方案。 

4. 什么是 Serverless Components

Serverless Components 是 Serverless Framework 的一个解决方案,本身具备快速部署、灵活配置、模板共享的理念。公有云对接 Serverless Framework 后具有了公有云基本的操作能力,但是落地到具体的应用场景就会变得复杂。外部应用不是单纯靠计算资源,也会涉及到静态资源,比如图片、CSS、JS 文件的托管和域名的管理,涉及到底层数据库的管理,也有一些更复杂的应用会涉及到更多的云上的资源。如果开发者要想实现一个应用的管理,则需要通过一系列的操作才能完成一个应用管理和部署,而 Serverless Components 是为了适配各种具体化的应用场景而开发的模板能力。Serverless Components 是 Serverless Framework 推出的最新解决方案,具有基础设施编排能力,开发者通过使用 Serverless Components,可以灵活构建、组合和部署 Serverless 应用。6995a329de5f4b829a5d79ffa7102681.png298a5c2cbc3d5f3bfa5dd0557a9e0832.png

二 、Serverless Components 全生命流程 

Serverless Component 部署流程 

c0d14061a2207d09518066c2c97f6541.pngServerless Components 部署的完整全流程,首先读取 .env 文件,在 .env 文件中可以输入腾讯云固定的密钥信息进行授权,也可以通过微信扫码赋予 CLI 临时的授权,授权 Serverless Components CLI 在某一段时间可以操作云上某些资源的能力。同时在 .env 文件里面可以注入相应环境变量,你可以直接在 serverless.yml 中通过 ${env} 的方式,直接引用环境变量配置(包含 .env 文件中的环境变量配置,以及手动配置在环境中的变量参数)。接着读取 yaml 配置。yaml 文件要指定使用到的组件名以及组件相应的输入参数,每个组件因为涉及的操作会不一样,所以每个组件对参数也有自己的一套固定的规范。通过 CLI 的命令进行部署的时候,会把用户代码压缩之后上传。首先压缩指定的代码目录,上传到一个公共的 COS 里面。然后新建或者更新组件的状态,同时会在服务端把代码下载下来,并注入 Proxy 代码。proxy 代码都实现了什么能力呢?云函数主要的适用场景是事件驱动型的,对于 http 请求的实现是通过 API 网关触发器转发的。网关接收到的 http request 会转换为云函数需要的参数对象,在函数执行包装后的 web 框架,执行完后再把 http response 转换成 API Gateway 需要的结构返回给网关,网关再把 response 转换成标准的 http response 返回,这样就实现了整个 HTTP 的访问。用户不需要关注这部分的实现,按照正常的开发就可以,Components 部署的时候会自动注入这部分转换逻辑的代码。服务端在注入完 proxy 代码后会把代码上传到用户 COS 里面,然后创建或更新云函数,同时会再创建或者更新 API 网关的配置。这个时候再把整个创建的过程以及创建的状态保存到服务端,控制台再输出整个组件最终需要给用户看到的一些云上资源的信息,比如 SCF 的信息、API 网关的信息、CDN 的数据和数据库信息等,整个部署就算是完成了。应用部署完后会返回 API 网关公用的二级域名的一个访问地址,跟正常的函数与自己组装资源去访问应用方式是一样的。大家可以看到,我们抹平了一些云函数和正常服务器差异化的实现,抹平后通过 Serverless Components 可以不用关心这些特殊的逻辑逻辑,也不需要关心其他的云上的资源。如果自己要创建一个应用,同时要创建云函数,代码里面要自己转换 HTTP 请求,然后创建一个触发器绑定到云函数。如果需要做静态资源的加速,需要拆分静态资源部署到 COS,并配置一个 CDN。这中间涉及到多个云资源的操作。而我们在 Serverless Components 中已经将整套都实现了,只需要在 yaml 文件里把这些配置进去就可以,部署完成后就可以看到你的应用了。

三、Components生态建设

1. Serverless Components 生态

c884298bb04e220eda05ecfee62467c0.png如上图所示,其中列举了一些用户使用比较多的 Serverless Components 组件,还有一些没有列举出来的,这些基础的组件包括了腾讯云上的各种常用的基础资源。可以通过对多个组件的组合来组成完整的应用,也可以直接使用现有的高阶组件。我们也欢迎第三方开发者贡献他们的组件,现在就已经有很多第三方的开发者在贡献他们的组件。

2. Serverless Next.js

1b08d0b0080c5385fb2d2c0683afe88a.png接下来详细介绍一个 Serverless Components 的具体实现。以 Next jS 项目为例,首先是初始化一个项目,安装 CLI,原来的项目不需要做什么改动,按照 Serverless Components 要求的规范进行配置后,直接用命令行工具进行部署。执行部署后 component 会帮用户通过 CLI 进行代码的构建,完成构建后会把代码部署到云函数上,创建 API 网关代理 web 服务,同时部署静态资源,会把目录下的静态文件自动拆分,并部署到 COS 上面。我们后面也会做更加智能化的优化,next 框架代码比较大,每次部署都要上传两三百兆代码,对上传的效率和启动效率也有影响。腾讯云提供 layer 的能力,我们会自动拆分用户的n ode_modules 到 layer,之后的部署只需要把业务代码上传和部署就可以了,对部署效率有很大的提升。这里是部署一个有一些复杂度的 next 应用的屏幕截图,可以看到完成部署仅需 31 秒,部署效率非常高a017c4bbaeb5fd2bfbc9482ef668ec26.png

四、跨国合作:挑战和收获

1. 跨国合作:挑战 

从开始合作到现在已经有一年多了,还在不断的磨合中。下面是我总结下来的,我们在一年多的合作里面具体的挑战,与大家一起分享交流。

(1)沟通效率

由于时差,语言表达,以及东西方思考方式的差异,导致整体的沟通效率比较低 。

(2)开发模式

他们那边是游击队的开发模式,有一些研发发布比较随意,导致了一些线上的问题。而我们其实是有比较严格的开发流程,发布前的验证,发布后的确认,监控告警的体系等等,都有严格的要求。慢慢把我们这一套严格的规范灌输给他们,并要求他们能够按照我们的要求执行。 

(3)问题定位

由于整套体系比较庞大,大家在前面也看到了,一个完整的 component 的生命流程比较长,步骤比较多,之前也没有统一的日志收集体系和系统,导致出现了用户问题定位花费比较长的时间。 

(4)目标

两个团队的目标导向不完全一样,我们更注重用户云上资源的安全,对于密钥的使用及权限控制比较严格,而他们更多的考虑的是使用上的便利。

(5)人才招聘

整套体系采用 nodejs 开发,涉及到后端、存储、数据库等方方面面,对于开发的要求比较高。另外,需要开发和产品有技术运营的理念,有开放的心态。对于英语也有一定的要求,最好能和北美的开发团队直接对话。

(6)运营理念的问题

国内外开发者习惯是有差别的,国外比较多的开发者更容易接受命令行工具,而国内开发者对这套东西不熟悉,需要有一个接受的过程。我们也会做一些妥协,比如后面可以考虑提供界面化的配置方式等。其实对于 Serverless Framework 与 Serverless Components,腾讯云本地化的运营方式和引导上跟国外会有所差别,我们会针对国内开发者做一些贴合开发者习惯的尝试。其实在跨国合作中涉及 CLI 的时候,我们一直很迷惑。虽然我们很想把事情做好,但是对命令行工具的设计和交互设计方面受限于腾讯云的产品,无法突破自己的框架。通过跟北美团队的交流合作,对我们的思路也有很大的开拓,我们跟他们学习到了他们的产品设计理念,在产品设计方面,AWS 和周围的生态确实对于我们是很好的借鉴意义。进行大型开源项目的实现,合作过程中对协作方式也学习到了不少,对于整个后期的开源项目推进,后面再去参加别的开源项目,对于我们而言都是非常宝贵的经验。同时,我们也把严格的软件开发经验输出给北美,并获得了他们的认可,对于我们而言也是比较自豪的一件事。以前软件开发方面北美领先于我们,所有方面我们向他们学习。现在并不完全是这样了,我们比较严格的软件开发规范比他们走得更靠前,把我们的规范输出给他们的同时也得到了北美团队的认可。

2. 跨国合作:收获 

  • 学习先进的交互设计以及产品设计理念;

  • 以AWS的理念要求我们自己的产品;

  • 大型开源项目的协作方式;

  • 输出严格的软件开发规范,获得认可;

  • 同类型开源项目的借鉴和学习,开阔视野。
同类型开源项目的借鉴和学习开拓了我们的视野,北美团队也会经常发一些他们能够了解到的信息同步给我们,我们能够从中得到借鉴和学习,并得到自己的增长。所以未来也会更加紧密合作。

Q&A

 

Q:Serverless现阶段适用和适用的场景,腾讯内部有哪些业务在用?A:所有的场景都是可以的。小程序云开发底层云函数的能力就是用我们 Serverless 的实现,腾讯内部还有比如微信支付、微信读书、腾讯视频、腾讯课堂有不少场景在用 Serverless 的服务。Q:部署而言Serverless相对TKE有什么优势和劣势?A:TKE 本身是需要自己管理的,但是 Serverless 在计算资源方面完全不需要自己去管理,我们有一个完全的动态弹性伸缩能力,会根据访问的请求量去做自动的伸缩,基本上省去了运营的需要。Q:监控方面有什么成熟组件的接入?A:正常的外部应用都是可以接入的,和虚拟机、容器等计算资源使用的方式相同。我们平台也提供了一些基础的监控和日志能力,另一方面,也在联合腾讯云的监控团队做了自定义监控组件上报能力的接入,可以在代码里面自定义的上报到腾讯云监控,自定义监控平台可以看到监控的数据。Q:Serverless对业务较复杂的大型项目是否适合?A:肯定适合,比如微信支付、微信读书、腾讯视频、腾讯课堂都有不少场景在用Serverless的服务。Q:稳定性保障的情况如何?A:Serverless 是基于腾讯云整套体系来建设的,稳定性方面也是经过了大规模的压测,有可靠的保障。比较大型的项目提前跟架构师沟通,来做资源的预留或者是资源等级的提升Q:学习路线是什么?A:部署自己的业务到 Serverless 服务上面来,可以在实践中不断的熟悉。还可以加入我们的微信或者qq群,和大量的开发者一起学习和探讨,这样在不断的讨论和学习过程中可以得到不断的成长。有使用上的疑问或者问题也可以直接和我们的开发或者架构师沟通。Q:冷启动支持需要有低延时的应用吗?A:如果对冷启动比较敏感的业务,可以通过预置并发来应对冷启动的问题,设置了预置并发后,服务保留一定的最小资源量,这些资源量长时间存在,更大的并发到来时再通过自动伸缩去拉起,就可以保证服务既可以解决低延时的问题也可以应对大请求的流量Q:如果部署在腾讯云的Serverless服务受到DDoS攻击怎么收费?A:用户可以设置并发的上限,更多的请求自动帮着挡住,不会把这些流量放进来,实际消费用到消耗的 Serverless 请求才会收费,其他的挡在控制并发外的请求我们不会收费。Q:平台具体实施中如何避开Serverless的劣势?A:关于 Serverless 的劣势,一是冷启动,二是开发习惯的一些改变,这些劣势可以通过一些手段避开。冷启动的问题可以通过预置并发等高阶能力解决,web 场景用 Serverless Components 的能力就可以帮助抹平中间的差异Q:企业应该如何设置Serverless Components?A:要看具体的应用场景,腾讯内部的团队在使用上也有各种差别,主要还是依赖具体的应用场景和需求。Q:Java这种启动慢的语言,未来可以在Serverless上应用吗?A:其实国内 java 开发者比较多,我觉得这是非常有潜力的发展方向,我们也在考虑启动比较慢的 java 应用如何部署到 SCF 上面,这是我们努力的一个方向。

讲师简介

0f24909c3b5d4e85a9e1a95dcc869804.png蔡卫峰腾讯云云函数团队前端负责人腾讯云云函数团队前端负责人。在前端性能优化、大型前端项目架构、全栈开发积累了丰富的经验。现在主要负责Node.js 在Serverless平台的最佳实践以及Serverless平台的开发者体验优化。

文章推荐

2e4754de6636cd7beaab106c29f9ff2e.png

重构实践:基于腾讯云Elasticsearch搭建QQ邮箱全文检索

38527a735cd83a8c33cef4dafd718f38.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/513295.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hologres揭秘:深度解析高效率分布式查询引擎

简介: 从阿里集团诞生到云上商业化,随着业务的发展和技术的演进,Hologres也在持续不断优化核心技术竞争力,为了让大家更加了解Hologres,我们计划持续推出Hologers底层技术原理揭秘系列,从高性能存储引擎到高…

电脑两边黑边怎么还原_Mac电脑录制的视频有黑边?如何解决

Mac电脑录制屏幕视频时两边有黑边,无论是将录制格式设置为1080p还是默认分辨率,最终生成的视频两边都有黑边,遇到这种情况如何解决呢?原因是 mac 录制出的视频分辨率比例是 16:10 ,比需要的 16:9 高一点。接下来给大家…

程序员有必要参加软考吗?大一可以考的编程证书还有哪些

软考的全称是:计算机技术与软件专业技术资格水平考试。通过考试获得证书的人员,表明其已具备相应等级的水平和能力,用人单位可根据工作需要从获得证书的人员中择优聘任相应专业技术职务。个人认为,程序员有没有必要参与软考最主要…

【知识连载】 如何用钉钉宜搭制定企业疫情防控数字化管理方案

简介: 【零起点入门系列教程】将会带给大家从业务视角出发由浅入深地学习用宜搭实现应用搭建。即便是没有任何代码基础的新手只要跟着系列课程,从0开始慢慢修炼,也能找到成功搭建应用的乐趣。今天第六讲,示例如何用钉钉宜搭搭建企…

mapreduce原理_Hbase Bulkload 原理面试必备

当需要大批量的向Hbase导入数据时,我们可以使用Hbase Bulkload的方式,这种方式是先生成Hbase的底层存储文件 HFile,然后直接将这些 HFile 移动到Hbase的存储目录下。它相比调用Hbase 的 put 接口添加数据,处理效率更快并且对Hbase…

StarLake:汇量科技云原生数据湖的探索和实践

简介: 快速了解汇量科技在云原生数据湖领域的探索和实践,详解 StarLake 的架构及业务应用案例。 作者:陈绪(汇量科技资深算法架构师,EnginePlus 2.0 产品负责人) 内容框架: 互联网业务视角看湖…

sql语句在navicat中可以查询到所有数据但是在idea程序中不行_数据迁移测试实施方案...

点击关注,我们共同每天进步一点点!最近经历了一场大型的数据迁移测试,因为以前对数据迁移测试研究甚少,所以对测试实施方案的制定非常的棘手,在网上也查询了很多,发现相关资料很少,并且大部分都…

报告:69% 的企业表示云技术有助于他们的疫情恢复

根据 DigitalOcean 最近的报告,在疫情高峰期间云使用增加的企业中,86%的企业表示云使用量在 2021 年继续增加,这表明数字加速和云采用没有放缓迹象。随着 2022 年的临近,对于各种规模的企业来说,这场疫情仍是头等大事&…

PyFlink 教程(三):PyFlink DataStream API - state timer

简介: 介绍如何在 Python DataStream API 中使用 state & timer 功能。 一、背景 Flink 1.13 已于近期正式发布,超过 200 名贡献者参与了 Flink 1.13 的开发,提交了超过 1000 个 commits,完成了若干重要功能。其中&#xff…

长跑 11 年,腾讯开源的变与不变

作者 | 贾凯强出品 | CSDN云计算(ID:CSDNcloud)在中国,开源产业的发展就像是一个美丽的童话故事。90年代,开源如一无所有的灰姑娘,仰望着海外梦幻般的舞会,自己却很难融入其中;而世纪…

.net 批量更新_Revit二次开发——读取CAD文字实现更新模型的思路

更新模型与内地BIM项目中 设计院终版图纸一波流翻模的模式不同香港BIM项目的模式是:设计出图—BIM出碰撞报告—设计再改图—BIM再碰撞报告......反反复复....模型频繁更新 是BIM项目服务过程中不可避免的应对方法:1.晚上加班2.周末加班本文中 模型更新的…

php使用七牛直播,七牛上传文件,PHP版本

自从知道七牛以来,就一直在用七牛做图片外链,但是每次需要到七牛官网登录,然后再上传图片。感觉很麻烦,最近想做一个自己的上传到七牛的平台,开始的想法是用C#写一个windows客户端,在用swift写一个mac客户端…

汽车之家:基于 Flink + Iceberg 的湖仓一体架构实践

简介: 由汽车之家实时计算平台负责人邸星星在 4 月 17 日上海站 Meetup 分享的,基于 Flink Iceberg 的湖仓一体架构实践。 内容简要: 一、数据仓库架构升级的背景 二、基于 Iceberg 的湖仓一体架构实践 三、总结与收益 四、后续规划 一、数据…

基于 Scheduled SQL 对 VPC FlowLog 实现细粒度时间窗口分析

简介: 针对VPC FlowLog的五元组和捕获窗口信息,在分析时使用不同时间窗口精度,可能得到不一样的流量特征,本文介绍一种方法将原始采集日志的时间窗口做拆分,之后重新聚合为新的日志做分析,达到更细粒度的分…

实力登场!移动云技术内核2.0 四大全新升级!

“中国数字经济占GDP比重持续增长,5G网络建设已进入规模化部署阶段。随着5G网络的发展,企业的数字化改造需求越来越旺盛。企业日益增长的数字化改造需求对云基础设施提出了新的挑战:需要支持多种类型网络接入、支持公有云、混合云、专属云等多…

obsidian使用分享

ob对比其他软件 上文提到obsidian,这里对obsidian做一个简要的总结 优点:对比notion,语雀这些软件,内容存储在应用商的服务器上。它是存在本地的。 对比思源笔记。说一下思源笔记的不足。思源是块来控制的,回车就是一…

苹果xr如何截屏_苹果手机自带的三种截屏技巧,你知道几个?现在知道还不迟...

今年苹果手机发布的新机自发布以来就受到了热烈的追捧,销量一直都处于只增不减的趋势。苹果手机为何如此之火?除了本身自带的IOS系统之外,手机自带很多小技巧,你知道不?今天就来为大家介绍苹果手机中的三种截屏小技巧&…

Scheduled SQL: SLS 大规模日志上的全局分析与调度

简介: 本文总结了大规模日志全局分析的需求,讨论SLS上现有的典型分析方案,并延伸到 SLS 原生数据处理方案,介绍 Schedueld SQL 功能与最佳实践。 大规模日志全局分析的需求 数据大规模与时效性 基于时间的数据(日志…

matlab制作以太网数据接收上位机_3D激光扫描仪设计及数据处理

本文内容转载自《电子技术应用》2019年第10期,版权归《电子技术应用》编辑部所有。段清明,王凡,徐琳琳,全文俊吉林大学仪器科学与电气工程学院摘要:利用2D激光雷达配合云台装置,设计了一种3D激光扫描仪作为…

跨平台(windows+linux)的线程辅助程序,跨平台(Windows+Linux)的Socket通讯程序(二)—结构...

上一篇"跨平台(WindowsLinux)的Socket通讯程序"给出了Socket通讯底层的一些函数的包装方法/类,同时屏蔽了操作系统(Windows/Linux)的不同。上一篇只是对通讯底层方法的封装,并没用涉及应用,这一篇将基于上一篇,并结合&q…